GNU/Linux >> Belajar Linux >  >> Linux

Tampilkan hanya nama direktori saat ini (bukan path lengkap) di bash prompt

Ubah \w (huruf kecil) ke \W (huruf besar):

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
                                                                                       ^^
           this one waaaaaay over here ------------------------------------------------+    

Lihatlah Bash Prompt HOWTO untuk banyak detail menyenangkan. contoh:

[email protected]:/usr/local/bin$ echo $PS1
${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ 

[email protected]:/usr/local/bin$ export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\W\[\033[00m\]\$ '

[email protected]:bin$

PROMPT_COMMAND variabel, jika disetel, adalah perintah yang dijalankan sebelum menampilkan prompt yang ditentukan dalam PS1 . Dalam kasus Anda, PROMPT_COMMAND menjalankan echo pernyataan dengan escape sequence ANSI tertentu yang memanipulasi bilah judul dari Xterm.

Jika Anda mencurigai PROMPT_COMMAND Anda menimpa PS1 Anda prompt, Anda dapat unset itu dan uji semuanya:

$ unset PROMPT_COMMAND

Terakhir, pastikan Anda mengubah PS1 definisi yang benar-benar akan digunakan. Lokasi umum adalah /etc/bash.bashrc , /etc/profile , ~/.bashrc , ~/.bash_profile , ~/.profile . File sistem umumnya (namun tidak selalu) dijalankan sebelum file pengguna.


Perintah penggantian bash sederhana adalah

${VAR/pattern_to_find/pattern_to_replace}

Untuk menampilkan direktori terakhir Anda cukup melakukan ${PWD/*\//} , yaitu menemukan sesuatu sebelum dan termasuk yang terakhir '/ ' dan menggantinya dengan nol.

Di mesin ubuntu saya, saya menggunakan:

export PS1='$(whoami):${PWD/*\//}#'. 

Solusi saya adalah menampilkan direktori tiga teratas dan terbawah 2 jika ada lebih dari 5

Jadi prompt saya (yang memiliki info lain juga) terlihat seperti:

08:38:42 durrantm U2017 /home/durrantm/Dropbox/_/rails/everquote

ketika pwd saya sebenarnya

/home/durrantm/Dropbox/93_2016/work/code/ruby__rails/rails/everquote

Permintaan PS1 saya diatur sebagai berikut:

HOST='\[\033[02;36m\]\h'; HOST=' '$HOST
TIME='\[\033[01;31m\]\t \[\033[01;32m\]'
LOCATION=' \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH

git_branch adalah fungsi yang menunjukkan cabang git saat ini, saya menyimpannya di file dot saya, yaitu:

git_branch () {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
  }

Linux
  1. Perintah Tidak Ditemukan di Bash Tetap

  2. Sorot Pemisah Jalur Di Ps1?

  3. Dapatkan Jalur Lengkap Dari Dalam Skrip Bash?

  1. Mendapatkan Nama Path Lengkap Dari Direktori yang Diberikan?

  2. Tambahkan skrip bash ke jalur

  3. Bagaimana Anda mengkonfigurasi command prompt di Linux untuk menampilkan direktori saat ini?

  1. Docker bash prompt tidak menampilkan keluaran warna

  2. Setel prompt terminal di Ubuntu untuk hanya menampilkan nama direktori kerja alih-alih path lengkapnya

  3. Rsync menyalin direktori saat ini dengan nama