Bagaimana saya bisa mendapatkan Terminal.app di OS X untuk menampilkan direktori saat ini di jendela atau judul tab?
Saya menggunakan shell bash.
macos
bash
terminal
terminal.app
kareman
sumber
sumber
Jawaban:
Tergantung pada cangkang Anda.
Artikel ini menampilkan beberapa metode.
Saya pribadi menggunakan zsh yang memiliki fungsi precmd () yang nyaman yang dijalankan sebelum setiap prompt.
Meskipun pertanyaan lain mencantumkan metode bash, mereka alias cd. Bash menyediakan metode yang melekat yang hanya mematikan prompt.
sumber
~/.profile
file Anda (atau yang setara) di mesin jarak jauh.Salin & tempel ke file ~ / .profile:
PROMPT_COMMAND="echo -ne \"\033]0;${PWD##*/}\007\"; $PROMPT_COMMAND"
Ini akan mengatur judul tab terminal saat ini dengan nama folder tempat Anda berada (BUKAN seluruh jalur).
Jadi ...
Developer/Applications/Utilities/Bluetooth/
menjadi =>Bluetooth
sumber
Pada Mac OS X Lion 10.7, Terminal memiliki urutan pelarian yang eksplisit untuk mengatur direktori kerja, yang ditampilkan Terminal menggunakan ikon "proxy" jendela standar. Ini memungkinkan Anda untuk Command-Klik untuk melihat jalan, mengungkapkan di Finder, atau seret seperti folder lainnya. Selain itu, Terminal dapat menggunakan ini untuk membuat terminal lain di direktori yang sama, dan untuk mengembalikan direktori kerja ketika berhenti / memulai ulang Terminal (ketika Resume diaktifkan). Ini juga memungkinkan memulihkan direktori untuk Grup Jendela.
Itu adalah urutan melarikan diri yang sama dengan Perintah Sistem Operasi (OSC) seperti untuk judul jendela dan tab, tetapi dengan parameter pertama yang diatur ke 7. Nilai harus berupa "file:" URL, yang memungkinkan persen-penyandian karakter khusus sehingga dapat menangani semua nama jalur yang valid. Anda juga harus memasukkan nama host sehingga Terminal dapat menentukan apakah itu direktori lokal; Terminal akan menghindari menggunakannya sebagai direktori kerja saat ini jika berasal dari host yang berbeda.
Pada catatan terkait, Terminal juga mendukung pengaturan "file yang diwakili" menggunakan urutan escape OSC dengan parameter 6. Jika diatur, ikon proksi akan menampilkan ini alih-alih direktori yang berfungsi. Sebagai contoh, saya memiliki emacs dan kurang dikonfigurasi untuk mencerminkan file / buffer yang sedang ditampilkan di ikon proxy. Ini memungkinkan program berbasis tty ini menjadi lebih terintegrasi dengan OS di sekitarnya.
Perilaku direktori kerja diaktifkan secara default untuk bash (shell default pada Mac OS X). Lihat / etc / bashrc untuk kode yang relevan.
Mungkin juga perlu disebutkan bahwa Lion Terminal sekarang mendukung pengaturan judul tab secara independen dari judul jendela menggunakan urutan escape OSC.
sumber
update_terminal_cwd
fungsi akan mengatur ikon proxy untuk direktori kerja saat ini. Secara default$PROMPT_COMMAND
adalahupdate_terminal_cwd
.Selain merekomendasikan Anda menggunakan urutan melarikan diri Perintah Sistem Operasi spesifik Terminal Apple: di
ESC ] Ps ; Pt BEL
manaPs
ada7
danPt
merupakanfile:
URL; ada baiknya menambahkan bahwa di Mac OS X 10.11 (dan mungkin sejak 10.7) ada file/etc/bashrc_Apple_Terminal
(tidak dapat diedit di bawah 10.11) yang mendefinisikan kenyamananupdate_terminal_cwd()
sebagai (tanpa komentar):Anda bisa menggunakan ini di kotak jauh Anda juga, kalau-kalau Anda berpikir untuk melakukannya dan kemudian menggaruk-garuk kepala Anda pada pengkodean URL file dengan benar di bash.
Dan jika Anda mengubahnya
PROMPT_COMMAND
sendiri.bash_profile
atau.bashrc
Anda mungkin lupa menyebutnya. Dalam file yang sama mereka menunjukkan contoh merantai sedikit lebih baik dengan:Secara pribadi di saya,
.bash_profile
saya ingin menambahkan prompt git jadi saya melakukan ini:sumber
Solusi Bash yang melibatkan PS1 dan PROMPT_COMMAND keduanya gagal jika direktori memiliki karakter Unicode di dalamnya (setidaknya di Snow Leopard). Solusi terbaik yang dapat saya temukan adalah melakukan yang setara
Sayangnya ini tidak berfungsi secara langsung, jadi alih-alih saya mendefinisikan fungsi shell untuk melakukan
tr
panggilan:Ini berfungsi baik untuk aksen Latin, yang akan berada di Unicode NFD (aksen akan menghilang tetapi karakter Latin yang mendasarinya akan tetap).
Sayangnya, itu akan benar-benar gagal untuk hal-hal seperti bahasa Cina.
sumber
Dengan asumsi Anda menggunakan Terminal MAC default, Anda dapat menggunakan yang berikut ini di. Profil karena "set_prompt" dengan sendirinya dapat mengirim Anda ke folder root ketika Anda membuka tab baru:
sumber
Masukkan ini ke file ~ / .profile atau yang setara:
Baris pertama berisi dua karakter khusus yang tidak dapat disalin / ditempelkan, tetapi Anda dapat mengunduh teks dari sini: http://blog.nottoobadsoftware.com/files/setterminaltitle.sh .
sumber
echo
penggunaanprintf
, yang memungkinkan Anda mengekspresikan karakter tersebut (ESC dan BEL / Control-G) dengan urutan pelarian:printf '\e]0;$@\a"