iTerm에서 새 탭을 열고 거기에서 명령을 실행하십시오.


17

새 탭을 여는 방법을 찾았습니다 iTerm.

newtabi()
{
    osascript -e 'tell application "iTerm" to activate' -e 'tell application "System Events" to tell process "iTerm" to keystroke "t" using command down'
}

그리고 새 탭에서 일부 명령을 실행하고 싶습니다. 간단한 명령으로하자 pwd. 어떻게합니까?

내가 달리면 ...

newtabi && pwd

새 탭이 예상대로 열리지 만 pwd명령은 새 탭이 아닌 이전 탭에서 실행됩니다.newtabi && pwd

사용 zsh합니다. 내 OS는OS X 10.8.5

답변:


16

사용 tell session -1 of current terminal to write text "pwd":

activate application "iTerm"
tell application "System Events" to keystroke "t" using command down
tell application "iTerm" to tell session -1 of current terminal to write text "pwd"

1
하나 이상 열 경우 iTerms, 그것은 올바른에서 새 탭이 열립니다 iTerm인스턴스를하지만, 기록 pwd하여 ITerm의 첫 번째 인스턴스의 마지막 탭에
맥심 Yefremov

2
@efr 당신이 맞아요. 로 변경 terminal 1하도록 답변을 수정 했습니다 current terminal. 이제 먼저 열린 창 대신 현재 창에서 명령을 실행해야합니다.
Lri

2
iTerm2가 설치된 Mac 10.11.6에서는 작동하지 않았습니다. 스크립트 편집기에서 "예기치 않은 라인 끝이지만 발견 된 식별자"및 "터미널"이 강조 표시됨
Mike Blandford

1
이것은 더 이상 맥 OS 10.14에서 작동하지 않습니다 :execution error: System Events got an error: osascript is not allowed to send keystrokes. (1002)
KernelSanders

12
osascript \
-e 'tell application "iTerm" to activate' \
-e 'tell application "System Events" to tell process "iTerm" to keystroke "t" using command down' \
-e 'tell application "System Events" to tell process "iTerm" to keystroke "ls"' \
-e 'tell application "System Events" to tell process "iTerm" to key code 52'

나는 148:156: syntax error: Expected end of line but found identifier. (-2741)이것을 받고 있습니다.
temporary_user_name

4

다음을 실행하는 경우 최소한 macos Mojave, iTerm 3.2.8 기준 :

$ open -a iTerm .

현재 창에 탭으로 추가됩니다.


1

나는 대답을 받아 들일 수 없었다. 또한 여러 명령을 전달하고 싶었습니다. 이것이 내가 생각해 낸 것입니다.

newtabi(){  
  osascript \
    -e 'tell application "iTerm2" to tell current window to set newWindow to (create tab with default profile)'\
    -e "tell application \"iTerm2\" to tell current session of newWindow to write text \"${@}\""
}

사용법 예

newtabi pwd
newtabi 'cd ~/ && pwd'
newtabi 'echo \"Hello New Tab\"'

더 복잡한 작업을 위해서는 명령을 해제하는 것이 좋습니다.

code_folder="/path/to/code"

alias project="cd ${code_folder}/my-project/foo && yarn run start"

그때, newtabi project


pwd`newtabi '$ PWD / foo && yarn run start'와 같이 명령을 수행하기 위해 현재 를 전달할 수있는 방법을 알려주시겠습니까 ?
Raj

1
@Raj, 좋은 질문입니다. 개인적으로 명령을 더 소비 가능한 별칭 및 / 또는 기능으로 나눕니다. 다른 예를 추가했습니다. 그것이 도움이되기를 바랍니다!
Marc Barbeau

감사합니다, @Marc!
Raj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.