Bash isteminde tilde ~ nasıl önlenir?


12

Tilde PS1 değişkeni içinde görüntülenmesini kaldırmak istiyorum.

Mevcut PS1 dizem:

PS1="\h:\w\n$"

Ve istem şu şekilde görünür:

lnx-hladky:/tmp/plugtmp
$

$ HOME dizininin tilde olarak görüntülenmesini sevmiyorum. Bu önlenebilir mi?

Sorunlara neden olur, örneğin:

lnx-hladky:~/DOC
$  

Belgeler diyor ki:

\w : the current working directory, with $HOME abbreviated with a tilde 
\W: the basename of the current working directory, with $HOME abbreviated with a tilde

$ HOME'un bir tilde ile kısaltılmasını önlemek için herhangi bir olasılık var mı?

Bir yol buldum ama aşırı karmaşık gibi hissediyorum:

PROMPT_COMMAND='echo -ne "\e[4;35m$(date +%T)\e[24m$(whoami)@$(hostname):$(pwd)\e[m\n"'
PS1=$

Herkes daha iyi bir çözüm önerebilir mi? Sadece komut istemi almak için çok fazla komut çalıştırmanın pek uygun olmadığını hissediyorum. (Tarih, whoami, hostname, pwd).


tilde örnekte hangi "sorunlar" ortaya çıkıyor?
JBallin

Yanıtlar:


11

bash komut isteminde genişletmeler yapar; sadece onlardan kaçtığınızdan emin olun.

PS1='\h:$(pwd)\n$'

Bu sorumu cevaplıyor. Böyle bir ihtimal olduğunu bilmiyordum. Çok teşekkürler, Ignacio!
Jirka

2
@Jirka: Şunları da kullanabilirsiniz: `PS1 = '\ h: $ PWD \ n $'.
sonraki duyuruya kadar duraklatıldı.

1
Jirka'nın çözümü pwdher istemde çalışır. Dennis'in çözümü, sadece daha ucuz olan çevre değişkeni PWD'yi getirmez.
Stéphane Gourichon

2
pwdbir bash yapılıdır. Kanıtsız ${PWD}olandan "çok daha ucuz" iddiası $(pwd).
Vineet

1
@anxieux: çift tırnak ile değil, tek tırnak ile teklif var
weberjn

0

Örneğinizde gösterdiğiniz sayıda komut çalıştırmanız gerekmez. bashbahsettiğiniz şeylerin çoğu için kısayollar sağlar.

Örneğiniz:

PROMPT_COMMAND='echo -ne "\e[4;35m$(date +%T)\e[24m$(whoami)@$(hostname):$(pwd)\e[m\n"'
PS1=$

şu şekilde yeniden yazılabilir:

PS1='\e[4;35m\t\e[24m\u@\h:\w\e[m\n'

Nerede \tgösterileri (24 saat biçiminde) zaman, \ugösterileri şimdiki adı '\ h' gösterileri hostname - basherkek sayfası anlatılır bu ve geri kalanı mevcut kaçar sizin istemi için.

~Tam yolu genişletseniz bile , hangi kullanıcının komutu çalıştırdığını bilmiyorsanız ve kullanıcıları düzenli olarak değiştiriyorsanız, dosya izinleriyle veya yürütülebilir izinlerle sorunlar oluşturabilirsiniz.


Merhaba, niyetim \ w FULL $ HOME yolu da dahil olmak üzere tam yolu ile değiştirmek oldu. Ignacio sayesinde şimdi PS1 = '\ e [4; 35m \ t \ e [24m \ u @ \ h: $ (pwd) \ e [m \ n $' kullanıyorum sorunumu çözdü :-)
Jirka

Mükemmel - \uKim olduğumu bilmek için dahil etmeyi seviyorum. Ignacio'nun cevabını kabul etmeyi unutmayın - sorunun solundaki onay kutusunu tıklayın.
Doug Harris

İpucu için teşekkürler. Bu forumda yeniyim. Harika bir yer.
Jirka

\ u @ \ h: $ PWD (iki nokta üst üste not edin) scp için giriş olarak kullanılabilir
weberjn

0

.Bash_profile dosyamda aşağıdaki ayarları kullanıyorum

$ export PS1='\e[1;34m\D{%T %d.%m.%Y} \[\033[00;39m\]\u\[\033[00;32m\]@$IP:\[\033[00;33m\]$(pwd)/\n\\$\[\033[00m\] '

21:40:08 14.12.2017 vmware@10.112.202.228:/home/vmware/Downloads/
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.