답변:
이것은 약간 해 키지 만 AppleScript에서이를 달성 할 수 있습니다. 원하는 수의 탭이 있고 실행하려는 사전 설정 명령이 있으면 어렵지 않습니다.
tell application "Terminal"
-- Activate it.
activate
set targetWindow to 0
-- Get a window that's not busy.
-- If there are no open windows, open one.
if count of windows is greater than 0 then
repeat with currentWindow in windows
if currentWindow is not busy then
set targetWindow to currentWindow
end if
end repeat
else
do script ""
set targetWindow to window 1
end if
-- Do command 1.
set firstCommand to "cd ~/Desktop; clear"
do script firstCommand in targetWindow
-- Open a new tab.
tell application "System Events" to tell process "Terminal" to keystroke "t" using command down
if count of windows is greater than 0 then
repeat with currentWindow in windows
if currentWindow is not busy then
set targetWindow to currentWindow
end if
end repeat
else
do script ""
set targetWindow to window 1
end if
-- Do command 2.
set secondCommand to "cd /Applications; clear"
do script secondCommand in targetWindow
-- And so on...
end tell
물론 firstCommand
실제로 실행하려는 명령 등으로 바꾸십시오 . 어떤 이유에서든 터미널에는 AppleScript를 통해 새 탭을 생성 할 수있는 방법이 없으므로 중간에 길고 길쭉한 행 ⌘T이 있으면 터미널에 새 탭을 열라고 입력 하면 새 명령이 실행됩니다.
이 AppleScript를 그대로 실행하거나 Automator에서이 서비스를 사용하여 새로운 서비스를 생성 한 다음 원하는 경우 키보드 단축키를 사용하여 어디서나 실행할 수 있습니다.
기타-새로 열린 터미널 세션에서 일부 스크립트 / 명령을 실행하려면 다음을 참조 하십시오.
다음은 Apple의 터미널 또는 iTerm 모두에 대해 원하는 작업을 수행하는 쉘 스크립트입니다.
열린 탭의 경우 tomcat, db 등 다른 배치 파일을 각 탭에서 실행합니다.
#!/bin/bash
function tab () {
local cmd=""
local cdto="$PWD"
local args="$@"
if [ -d "$1" ]; then
cdto=`cd "$1"; pwd`
args="${@:2}"
fi
if [ -n "$args" ]; then
cmd="; $args"
fi
if [ $TERM_PROGRAM = "Apple_Terminal" ]; then
osascript
-e "tell application \"Terminal\"" \
-e "tell application \"System Events\" to keystroke \"t\" using {command down}" \
-e "do script \"cd $cdto; clear $cmd\" in front window" \
-e "end tell"
> /dev/null
elif [ $TERM_PROGRAM = "iTerm.app" ]; then
osascript
-e "tell application \"iTerm\"" \
-e "tell current terminal" \
-e "launch session \"Default Session\"" \
-e "tell the last session" \
-e "write text \"cd \"$cdto\"$cmd\"" \
-e "end tell" \
-e "end tell" \
-e "end tell" \
> /dev/null
fi
}
tab path_to_script1 sh script1
tab path_to_script2 sh script2
tab path_to_script3 sh script3
새 탭을 여는 것은 사소한 일이므로 가능한 한 사소한 명령을 실행하고 구식으로하는 것이 좋습니다.
두 가지 특정 작업을 수행 했으므로 해당 작업을 수행하겠습니다. 내가 Rails에 대해 알고있는 것을 기반으로 많은 가정을 할 것이지만 반드시 프로젝트에만 한정되는 것은 아닙니다.
짧은 이야기를 짧게 줄이려면 명령에 별명을 지정하거나 원하는 것을 수행하는 간단한 쉘 스크립트를 작성하십시오.
myapp.start
내용이 포함 된 쉘 스크립트를 작성하십시오 .
#!/bin/bash
cd Development/rails/myapp
# Do any common environment initializations here, such as RAILS_ENV=development
script/server
홈 디렉토리에 .bash_profile이라는 파일을 만들거나 이미 존재하는 파일을 수정하고 다음과 같은 줄을 추가해야 할 것입니다.
export PATH="$HOME/bin:${PATH}"
그런 다음 홈 폴더에 bin 디렉토리를 작성하고 myapp.start 스크립트를 해당 디렉토리로 이동하십시오. 또한 소유자에게 최소 비트를 실행해야합니다 ( chmod 700 myapp.start
).
그런 다음 Terminal.app를 열고을 입력 myapp.start
하면 레일이 실행됩니다. 또는을 입력 mya한 다음 Tab자동 완성이 나머지를 채우도록하려면을 누르십시오 return. 붐, 서버 실행 중
확장으로, 로그 파일 테일을 수행하는 방법을 이미 이해할 수도 있지만, 계속하겠습니다. ~ / bin에 myapp.taillog라는 다른 파일을 내용과 함께 만듭니다.
#!/bin/bash
tail -F ~/Development/rails/myapp/logs/development.log
다시 bin 폴더에 chmod 700 ~/bin/myapp.taillog
넣은 다음 Rails 서버를 시작한 후을 빠르게 누르고을 ⌘t입력 myapp.taillog
하면 로그 파일이 인쇄됩니다.
두 개의 명령, 두 개의 추가 키 (탭 열기), 아마도 충분할까요?
여기에는 두 가지 확실한 개선이 있습니다. 하나는 rails 앱의 이름을 "발견"할 수있는 쉘 기능을 작성하는 것이므로 각각에 대해 쉘 스크립트를 작성할 필요가 없으며 선택한 webbrick / rails 서버를 시작하도록 설계된 하위 명령을 작성하지 않아도됩니다. 몇 가지 키 로그 파일을 정기적으로 tail -F '명령.
두 번째 개선점은 필요한 터미널 상호 작용을 수행하는 AppleScript를 작성하고 각 명령 내에서 적절한 명령을 실행할 수 있다는 것입니다. 그러나 솔직히 AppleScript를 빨아 들이고 하루 종일 bash 코드와 perl 코드로 작업하므로 기술 세트와 관련된 조언을 제공합니다. :).
귀하의 질문에 따라 Apple 터미널에 연결되어있을지라도 iTerm 은 여러 창을 스크립팅하고 관리하는 기본 터미널 에뮬레이터보다 우수합니다.
책갈피 개념을 사용하면 일련의 창을 쉽게 관리 할 수 있습니다. AppleScript / Automater를 사용한 iTerm 스크립팅은 개발자의 웹 사이트에보다 간단하고 강력하며 문서화되어 있습니다 . (터미널에 비해)
일반 터미널의 스크립팅이 필요에 맞지 않으면 확인하십시오. 또한 자주 사용하는 명령에 대한 별칭을 설정하기 위해 유닉스 쉘을 사용자 정의하는 것이 좋습니다. 새 창에 대한 초기 작업을 스크립팅하는 데 사용하지만 셸에있을 때마다 새 창을 열지 않고 작업을 전환해야합니다.
스크립트는 훌륭하지만 모두 Automator를 사용하여 터미널을 여는 'Watch Me Do'를 기록하고 원하는 창 수에 대해 Command + N을 몇 개 던질 수 있습니다. 에일 라
StackOverflow에 대해 비슷한 질문에 대한 훌륭한 답변 이 있지만 아마도 여기에 속할 것이므로 여기에 복사 / 붙여 넣기 만하면됩니다.
이것은 절대적으로 가능하지만 일부 작업이 필요합니다. 가장 먼저 필요한 것은 설정에서 원하는 각 창 / 탭을 설정하는 것입니다.
터미널을 열 때마다 자동으로 열리는 4 개의 탭이 있습니다. DB Shell
, Editor
, Server
,와 Shell
. 이것들은 모두 Sasquatch
(요청하지 않음) 프로젝트 내에 있으므로 명명입니다. 그러면 이들 각각에 고유 한 명령이 있어야합니다.
이 경우 실행 중 vim
입니다. 시작하려는 특정 디렉토리가있는 경우 다음과 같은 것을 사용할 수 있습니다 vim ~/projects/main/
. 실제로 당신이 가고 싶은 것은 쉘이 열릴 때 실행할 명령입니다. 이제 모든 창 / 탭을 열어야합니다.
Shell
메뉴로 이동 => New Tab
/ New Window
=> 위에서 만든 프로필을 선택하십시오.Window
메뉴 =>로 이동하십시오 Save Window As Group...
.Window
메뉴로 이동 => Open Window Group
=> 방금 만든 그룹을 선택하십시오.방금 가지고 있던 모든 창이 같은 위치에 나타납니다. 설정 한 각 명령 Settings
은 해당 탭에서 시작해야합니다.