Apakah mungkin untuk membuka tab baru di terminal Mac OS X dari baris perintah di tab yang sedang dibuka?
Saya tahu bahwa pintasan keyboard untuk membuka tab baru di Terminal adalah "CMD + t" tetapi saya mencari solusi berbasis skrip yang dijalankan di baris perintah.
echo hello
ke tab baru ini.-e 'tell application "Terminal" to do script "echo hello" in selected tab of the front window'
ke akhir perintah osascript.open -a iTerm ~/Applications/
-e 'tell application "Terminal" to do script "cd /path/to/target/directory" in selected tab of the front window'
. Perhatikan bahwa jika jalur berasal dari variabel, Anda harus menggunakan string yang dikutip ganda, bukan kutipan tunggal, dan keluar dari string yang dikutip dalam, dan mungkin jalur itu sendiri.Pembaruan : Jawaban ini mendapatkan popularitas berdasarkan fungsi shell yang diposting di bawah ini, yang masih berfungsi pada OSX 10.10 (dengan pengecualian
-g
opsi).Namun, versi skrip yang lebih lengkap, lebih kuat, dan teruji sekarang tersedia di registri npm sebagai CLI
ttab
, yang juga mendukung iTerm2 :Jika Anda menginstal Node.js , jalankan saja:
(tergantung bagaimana Anda menginstal Node.js, Anda mungkin harus menambahkannya
sudo
).Jika tidak, ikuti petunjuk ini .
Setelah terinstal, jalankan
ttab -h
untuk informasi penggunaan yang ringkas, atauman ttab
untuk melihat manual.Berdasarkan jawaban yang diterima, di bawah ini adalah fungsi kenyamanan bash untuk membuka tab baru di jendela Terminal saat ini dan secara opsional menjalankan perintah (sebagai bonus, ada fungsi varian untuk membuat jendela baru sebagai gantinya).
Jika sebuah perintah ditentukan, token pertamanya akan digunakan sebagai judul tab baru.
Contoh doa:
PERHATIAN : Saat Anda menjalankan
newtab
(ataunewwin
) dari skrip, folder kerja awal skrip akan menjadi folder kerja di tab / jendela baru, bahkan jika Anda mengubah folder kerja di dalam skrip sebelum memanggilnewtab
/newwin
- lewatieval
dengancd
perintah sebagai solusinya (lihat contoh di atas).Kode sumber (rekatkan ke profil bash Anda, misalnya):
sumber
-g
(jangan aktifkan Terminal saat membuat tab / jendela baru) dan-G
(jangan aktifkan Terminal dan jangan ubah tab aktif di dalam Terminal ) - membantu, misalnya, saat memulai server di latar belakang. Perhatikan bahwa saat membuat tab baru dengan cara ini, Terminal masih harus diaktifkan sebentar sebelum aplikasi yang sebelumnya aktif diaktifkan kembali.newtab
Sayangnya, mengubah ke folder lain di dalam skrip sebelum memanggil TIDAK berfungsi. Solusinya adalah dengan mengirimkaneval
pernyataan dengancd
perintah kenewtab
; misnewtab eval "cd ~/Library/Application\ Support; ls"
. : . Kutip dua kali seluruh perintah yang diteruskaneval
, dan gunakan backslash-escaping di dalamnya.function newtab
danfunction newwin
(namun, TIDAK ADA tanda kurung), sehingga harus menghindari tabrakan dengan alias saat mendefinisikan fungsi, tetapi perhatikan bahwa saat pemanggilan, alias dengan nama yang sama diutamakan (untuk lewati alias, ad-hoc, kutip bagian mana pun dari nama fungsi, misalnya:)\newtab
.<name>() { ... }
sintaks fungsi POSIX membuat<name>
subjek untuk ekspansi alias , yang mematahkan definisi fungsi (kesalahan penguraian!) Jika sebuah alias<name>
kebetulan didefinisikan. Biasanya tidak menjadi perhatian, karena dalam skrip yang biasanya dipanggil, perluasan alias dimatikan secara default. Namun, dalam skrip yang DIBERIKAN dari shell INTERAKTIF - seperti di file profil / inisialisasi - perluasan alias IS diaktifkan. Fix: Gunakanfunction <name> { ... }
sintaks non-POSIX untuk menentukan fungsi -<name>
maka TIDAK tunduk pada ekspansi alias.if [ "${BASH_SOURCE}" == "${0}" ]
with case sehingga dapat disebut sebagai skrip (misalnyanewtab.sh
,newwin.sh
): gist.github.com/westurner/01b6be85e5a51fda22a6Inilah cara melakukannya oleh bash_it :
Setelah menambahkan ini ke .bash_profile Anda, Anda akan menggunakan
tab
perintah untuk membuka direktori kerja saat ini di tab baru.Lihat: https://github.com/revans/bash-it/blob/master/plugins/available/osx.plugin.bash#L3
sumber
Ini membuka terminal baru dan menjalankan perintah "echo hello" di dalamnya.
sumber
do script ""
string kosong untuk membuat terminal baru tanpa mengeluarkan perintah.Jika Anda menggunakan oh-my-zsh (yang harus digunakan setiap geek trendi), setelah mengaktifkan plugin "osx"
.zshrc
, cukup masukkantab
perintah; itu akan membuka tab baru dancd
di direktori tempat Anda berada.sumber
tab
tampaknya tidak melakukan apaPintasan keyboard
cmd-t
membuka tab baru, sehingga Anda dapat meneruskan penekanan tombol ini ke perintah OSA sebagai berikut:osascript -e 'tell application "System Events"' -e 'keystroke "t" using command down' -e 'end tell'
sumber
Saya menambahkan ini ke .bash_profile saya sehingga saya dapat memiliki akses ke nama tab dan tab baru
Jadi saat Anda berada di tab tertentu, Anda cukup mengetik
untuk mengatur semua tab terbuka yang Anda miliki. Ini jauh lebih baik daripada mendapatkan info di tab dan mengubahnya di sana.
sumber
Saya tahu ini adalah posting lama, tetapi ini berhasil untuk saya:
Untuk menjalankan perintah seperti yang diminta di bawah ini, diperlukan beberapa jiggery:
sumber
ketika Anda berada di jendela terminal, perintah + n => membuka terminal baru dan perintah + t => membuka tab baru di jendela terminal saat ini
sumber
Jika Anda menggunakan iTerm , perintah ini akan membuka tab baru:
sumber
dan Anda dapat meneruskan direktori target sebagai parameter
sumber
Bagaimana dengan cuplikan sederhana ini, berdasarkan perintah skrip standar (echo):
sumber
Dengan X terinstal (misalnya dari homebrew, atau Quartz), "xterm &" sederhana melakukan (hampir) trik, ini membuka jendela terminal baru (meskipun bukan tab).
sumber