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$
Stuart K.
quelle

Antworten:

7

Versuche dies:

export PS1='$(echo $(dirname \w)|sed -e "s;\(/.\)[^/]*;\1;g")/$(basename \w) $ '
Matte
quelle
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.

Oleh Prypin
quelle