Ist es möglich, bash dazu zu bringen, den ersten Buchstaben jedes Verzeichnisses in meinem Arbeitspfad anzuzeigen?


8

Zum Beispiel arbeiten in:

/home/stuart/src/project/com/example/package
/usr/lib/python2.6

würde erscheinen als:

~/s/p/c/e/package$ 
/u/l/python2.6$

Antworten:



7

Versuche dies:

export PS1='$(echo $(dirname \w)|sed -e "s;\(/.\)[^/]*;\1;g")/$(basename \w) $ '

Vielen Dank. Ich habe es aktualisiert auf: export PS1='$(echo $(dirname \w)|sed -e "s;\(/\.\?.\)[^/]*;\1;g" -e "s;/h/s;~;")/\W\$ ' Damit Punktverzeichnisse ein "." und ein Charakter. Ich ersetze auch "/ h / s" (/ home / stuart) durch ein "~".
Stuart K

2
Zweites Update: export PS1='$(echo $(dirname $(echo \w | sed "s;$HOME;~;"))/ |sed -e "s;\(/\.\?.\)[^/]*;\1;g" -e "s;/h/s;~;" -e "s;\./;;")\W\$ 'Fügt weitere Hacks hinzu, damit es im Home-Verzeichnis gut aussieht.
Stuart K

Und jetzt habe ich festgestellt, dass es viel zu viele Randfälle gibt, als dass dieser Ansatz so funktionieren könnte, wie ich es möchte (Root-Verzeichnis, im Ausgangsverzeichnis, unter dem Ausgangsverzeichnis). Es ist immer noch sehr elegant!
Stuart K

1

Hier ist mein Versuch, basierend auf Mats Antwort. Vermeidet Probleme in Eckfällen wie /und ~.

PS1='`echo "${PWD%/*}" | sed -e "s;\(/.\)[^/]*;\1;g"`/${PWD##*/} \$ '

Ersetzen Sie .durch .., um 2 Buchstaben anzuzeigen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.