iTerm'de yeni sekme aç ve oradaki komutu çalıştır


18

Yeni sekme açmanın yolunu buldum iTerm:

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

Ve yeni sekmede bazı komutları yürütmek istiyorum. Basit bir komut olsun pwd. Nasıl yapılır?

Eğer koşarsam ...

newtabi && pwd

Yeni sekme beklendiği gibi açılır, ancak pwdkomut yeni sekmede değil, yazdığım eski sekmede yürütülürnewtabi && pwd

Ben kullanıyorum zsh. İşletim sistemimOS X 10.8.5

Yanıtlar:


16

Kullanım 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
birden fazla iTermsaçılırsa doğru sekmede yeni sekme açar iTerm, ancak pwdiTerm'in ilk örneğinin son sekmesinde yazar
Maxim Yefremov

2
@efr Haklısın. Değişmeye cevabını düzenlenebilir terminal 1için current terminal. Şimdi komutu ilk açılan pencere yerine geçerli pencerede çalıştırmalıdır.
Lri

2
Bu, iTerm2 ile mac 10.11.6'da çalışmadı. Komut dosyası düzenleyicisinde "Beklenmeyen satır sonu ancak bulunan tanımlayıcı" ve "terminal" vurgulanır
Mike Blandford

1
Bu artık macOS execution error: System Events got an error: osascript is not allowed to send keystrokes. (1002)
10.14'te çalışmaz

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'

Ben bunu yapıyorum 148:156: syntax error: Expected end of line but found identifier. (-2741).
temporary_user_name

4

En az macos Mojave, iTerm 3.2.8'den itibaren:

$ open -a iTerm .

Geçerli pencereye bir sekme olarak ekleyecektir.


2

İşe kabul edilen cevabı alamadım. Ayrıca birden fazla komut geçmek istedim. Ben de bunu buldum.

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 \"${@}\""
}

Örnek kullanım

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

Daha karmaşık eylemler için komutları bozmanızı öneririm.

code_folder="/path/to/code"

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

Sonra, newtabi project


pwdKomutun şöyle görünmesini sağlamak için akımımı nasıl geçirebileceğimi söyler misiniz : `` newtabi '$ PWD / foo && yarn run start'?
Raj

1
@Raj, güzel soru. Şahsen komutları daha sarf diğer adlara ve / veya işlevlere ayırıyorum. Bir örnek daha ekledim. Umarım yardımcı olur!
Marc Barbeau

Çok teşekkürler, @Marc!
Raj
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.