Saya sering perlu membuka tab baru di direktori yang sama dengan tab saya saat ini untuk melakukan sesuatu yang lain sementara tab saya saat ini ditempati oleh proses yang berjalan lama. Namun, secara default ketika Anda membuat tab baru, Terminal.app dimulai pada ~ /. Adakah yang tahu cara membuatnya lompat otomatis?
24
Jawaban:
Di OS X 10.7 (Lion), Terminal.app mendukung ini secara asli:
New Windows/Tabs open in: Same working directory
sumber
Seseorang harus sangat berhati-hati ketika melewati string melalui lingkungan yang berbeda.
Saya menjalankan 10.4, jadi skrip 'tfork' saya selalu membuka jendela baru. Seharusnya mudah untuk mengadaptasinya menggunakan tab:
Contoh:
tfork git log -p ..FETCH_HEAD
Amandemen: cwd dari proses yang sudah berjalan "menempati" tab Terminal
Gagasan "direktori saat ini dari program yang menempati tab saat ini" tidak sejelas yang diharapkan.
Setiap tab Terminal memiliki satu perangkat tty yang digunakan oleh proses yang dijalankannya (awalnya, sebuah shell; setelah itu, apa pun shell yang dimulai).
Setiap terminal tty (normal) memiliki grup proses foreground tunggal yang dapat dianggap sebagai "menempati" tty.
Setiap grup proses dapat memiliki beberapa proses di dalamnya.
Setiap proses dapat memiliki direktori kerja saat ini (cwd) (beberapa lingkungan memberikan masing-masing utas cwd atau setara dengan cwd, tetapi kami akan mengabaikannya).
Fakta-fakta sebelumnya membentuk semacam jejak yang dari tty ke cwd: tty -> foreground process group -> proses dari foreground process group -> cwds.
Bagian pertama (dari proses tty ke foreground) dari masalah dapat diselesaikan dengan output dari ps :
(di mana "ttyp6" adalah nama tty of interest)
Pemetaan dari proses (PID) ke cwd dapat dilakukan dengan lsof :
(di mana "2515.2516" adalah daftar proses bunga yang dipisahkan koma)
Tetapi di bawah Tiger, saya tidak melihat cara langsung untuk mendapatkan nama perangkat tty dari jendela Terminal tertentu . Ada cara buruk yang mengerikan untuk mendapatkan nama tty di Tiger. Mungkin Leopard atau Snow Leopard bisa melakukan yang lebih baik.
Saya menggabungkan semuanya dalam AppleScript seperti ini:
Simpan dengan Editor Skrip ( Editor AppleScript di Snow Leopard) dan gunakan peluncur (mis. FastScripts ) untuk menetapkannya ke tombol (atau jalankan saja dari menu AppleScript (diaktifkan melalui / Aplikasi / AppleScript / AppleScript Utility.app )).
sumber
Saya telah memposting skrip yang menggunakan kode Chris Johnsen di atas dan skrip lain untuk membuka tab baru di direktori saat ini dengan pengaturan saat ini, sebagian besar karena saya mengkoordinasikan warna terminal saya. Terima kasih Chris, untuk skrip itu, saya telah menggunakan ini selama beberapa bulan sekarang dan ini adalah penghemat waktu yang hebat.
(* Skrip ini membuka tab Terminal.app baru di direktori tab saat ini dengan pengaturan yang sama. Anda harus, jika belum, mengaktifkan akses untuk perangkat bantu seperti yang dijelaskan di sini: http: // www .macosxautomation.com / applescript / uiscripting / index.html
Ini hampir semua karya dua skrip disatukan, terima kasih kepada mereka:
Script Chris Johnsen membuka tab baru di direktori saat ini: OS X Terminal.app: bagaimana cara memulai tab baru di direktori yang sama dengan tab saat ini?
“Menu_click” Jacob Rus memungkinkan saya membuat tab dengan pengaturan yang sama, karena API Terminal tidak: http://hints.macworld.com/article.php?story=20060921045743404
Jika Anda mengubah nama profil Terminal, API AppleScript mengembalikan nama lama hingga Anda me-restart aplikasi, sehingga skrip tidak akan berfungsi pada pengaturan yang diubah namanya sampai saat itu. Ugh. Juga, perlunya mengaktifkan Terminal untuk menjalankan perintah menu membawa semua jendela terminal ke depan.
sumber
Seperti disebutkan di tempat lain , jika Anda menggunakan Oh My Zsh , maka Anda hanya perlu menambahkan
terminalapp
plugin. Di file .zshrc Anda (dengan asumsi Anda sudah menggunakan plugin git:sumber
Saya menggunakan skrip alias / shell ini untuk melakukannya.
sumber
sumber