เปิดแท็บใหม่ใน iTerm และดำเนินการคำสั่งที่นั่น


16

ฉันพบวิธีเปิดแท็บใหม่แล้ว 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 X 10.8.5

คำตอบ:


14

ใช้ 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
Maxim Yefremov

2
@efr คุณพูดถูก ฉันแก้ไขคำตอบเพื่อเปลี่ยน terminal 1 ไปยัง current terminal. ตอนนี้มันควรรันคำสั่งในหน้าต่างปัจจุบันแทนหน้าต่างที่เปิดไว้ก่อน
Lri

2
สิ่งนี้ไม่ทำงานบน mac 10.11.6 กับ iTerm2 ในเครื่องมือแก้ไขสคริปต์ "ไม่คาดคิดจุดสิ้นสุดของบรรทัด แต่พบตัวระบุ" และ "เทอร์มินัล"
Mike Blandford

สิ่งนี้ใช้ไม่ได้กับ macOS 10.14: execution error: System Events got an error: osascript is not allowed to send keystrokes. (1002)
KernelSanders

10
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'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.