Cara bash prompt saya saat ini dikonfigurasi, itu menunjukkan seluruh path ke direktori saat ini. Ini menjengkelkan ketika saya jauh di dalam pohon direktori, karena prompt menjadi begitu panjang sehingga setiap perintah masuk ke baris berikutnya. Bagaimana cara membuatnya hanya menampilkan bagian terakhir dari jalan?
Inilah yang saya miliki di .bashrc
:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
;;
*)
;;
esac
sumber
case
pernyataan itu menimpanya ketika saya menggunakan xterm, dan masalahnya sepertinya adaPWD
padaPROMPT_COMMAND
baris tersebut. Apakah Anda tahu apa yang harus saya taruh di sana?\w
(huruf kecil) mengaturnya ke jalur penuh,\W
(huruf besar) memotong ke bit terakhir. PROMPT_COMMAND sedang mengatur judul jendela dalam xterm. periksa variabel TERM Anda; jika tidak dimulai dengan "xterm" atau "rxvt" maka PROMPT_COMMAND bahkan tidak dijalankan.Perintah simple bash replace adalah
Untuk menunjukkan direktori terakhir yang bisa Anda lakukan
${PWD/*\//}
, yaitu menemukan sesuatu sebelum dan termasuk yang terakhir '/
' dan menggantinya dengan apa-apa.Di mesin ubuntu saya, saya menggunakan:
sumber
Solusi saya adalah menampilkan tiga direktori teratas dan terbawah 2 ketika ada lebih dari 5
Jadi prompt saya (yang memiliki info lain juga) terlihat seperti:
ketika pwd saya sebenarnya
Prompt PS1 saya diatur sebagai berikut:
git_branch
adalah fungsi yang menunjukkan cabang git saat ini, saya menyimpannya di dotfiles saya, yaitu:sumber
Solusi saya untuk ini sedikit berbeda dalam hal bagaimana saya mengekspornya, jadi saya pikir saya akan membagikannya di sini:
Buat variabel string prompt lainnya; PS5 dan ekspor string berikut di Anda
.profile
/.bash_profile
berkas:Sekarang, setiap kali Anda perlu menggunakan PS singkatan kata, jalankan:
eval $PS5
Atau bahkan lebih baik lagi, buat alias di
.bash_aliases
file Anda : (terima kasih ke @muru )source
lagi, dan sekarang Anda bisa mengetikPS5
untuk beralih.sumber
Sebagian besar solusi lain tidak bekerja untuk saya di semua OS saya yang berbagi file dot saya: AIX, Windoze, dan Linux. Port pesta yang versi lama yang tidak mendukung konstruksi tertentu dan saya tidak ingin garpu proses lain (yaitu
sed
,awk
, dll) yang terasa mahal di bawah cygwin.Berikut ini panjang tapi performan:
Saya ingin meludahkan:
Perhatikan kurangnya garis miring di baris terakhir yang saya suka. Juga, Anda dapat memuntahkan 3 direktori terakhir dengan mengubah arg ke
DIR_LAST
.Juga, saya mencoba melakukan ini dengan regex dan
BASH_REMATCH
tetapi bash v3 tampaknya tidak menyukai parens dan saya tidak tahu cara melarikan diri dengan benar. Mendesah.sumber
Saya percaya opsi ini jauh lebih mudah, hanya dengan melakukan:
Jadi tetapkan ini ke variabel PS1 dalam file .bashrc Anda:
sumber
tambahkan kode berikut ke akhir ~ / .bashrc Anda
sumber