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.