SORU
16 NİSAN 2011, CUMARTESİ


Bash: güzel çalışma dizini yolu ile özel PS1

Ubuntu kullanıyorum ve derin bir dizin hiyerarşisi ile çalıştığım zaman bash bu uzun ister bıktım. Yani, benim PS1 oynamak için çalışma dizini bölümü şu şekilde kısaltmak istiyorum:

Şu anda var:

pajton@dragon:~/workspace/projects/project1/folder1/test$

ve sahip olmak ister:

pajton@dragon:~/workspace/.../folder1/test$

Bu kesiliyor eğer len ($) ÖZÜRLÜ verilen eşiği geçerse oluşacak. Her zaman ilk yol bileşeni ve en azından son bir yol bileşeni tutmak istiyorum. Uzay izin veriyorsa, daha fazla bileşen sağdan alarak ekleyin.

Bu şu anda sahip olduğum şey. Çalışır, ama: 1), 2 ilk yol bileşeni tutmaz) sınırlarında yol kesme saygı yok:

pwd_length=14
pwd_symbol="..."
newPWD="${PWD/#$HOME/~}"

if [ $(echo -n $newPWD | wc -c | tr -d " ") -gt $pwd_length ]
then
   newPWD="...$(echo -n $PWD | sed -e "s/.*\(.\{$pwd_length\}\)/\1/")"
else
   newPWD="$(echo -n $PWD)"
fi

Ve sonuç:

pajton@dragon:...sth/folder1/sample$ 

Şimdiden teşekkürler!

CEVAP
8 Aralık 2011, PERŞEMBE


İnsanlar çok daha basit bir çözüm arayan ve ilk dizinin adı lazım değil yol için, Bash yerleşik bu desteği PROMPT_DIRTRIM değişken kullanarak. From the documentation:

PROMPT_DİRTRİM

Eğer sayı sıfırdan büyük set, değer dizin bileşenleri \w ve \W istemi dize kaçar (bir ileti Yazdırma) genişlemesini korumak için izleyen sayısı olarak kullanılır. Karakterler kaldırıldı yerine üç nokta vardır.

Örneğin:

~$ mkdir -p a/b/c/d/e/f
~$ cd a/b/c/d/e/f
~/a/b/c/d/e/f$ export PROMPT_DIRTRIM=2
~/.../e/f$ PROMPT_DIRTRIM=3
~/.../d/e/f$ 

Dezavantajı: dizin düzeyi, istemeyebilirsin hangi yolu uzunluğuna bağlıdır.

Baş: çok basit. Ekle export PROMPT_DIRTRIM=2 .bashrc.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • National Geographic

    National Geo

    7 Mayıs 2006
  • TecNoob

    TecNoob

    15 AĞUSTOS 2013
  • Visual Life

    Visual Life

    3 Temmuz 2006