Wie kann ich den auf dem Terminal angezeigten aktuellen Verzeichnispfad verkürzen?

17

Wenn ich mich in einem tiefen Verzeichnis befinde, sagen wir:

~/Desktop/Dropbox/School/2017/C/A3/

Wenn ich dann das Terminal öffne, heißt es

bob@bob-ubuntu:~/Desktop/Dropbox/School/2017/C/A3/$

und dann schreibe ich meinen Befehl. Das ist sehr lang und jede Zeile, die ich in das Terminal schreibe, geht in die nächste Zeile. Ich möchte wissen, ob es eine Möglichkeit gibt, dass nur mein aktuelles Verzeichnis angezeigt wird. Ich möchte, dass Folgendes angezeigt wird:

bob@bob-ubuntu: A3/$

Auf diese Weise ist es sehr klar und ich kann immer pwdmein gesamtes Verzeichnis sehen. Ich möchte nur nicht, dass das gesamte Verzeichnis im Terminal angezeigt wird, da es zu viel Speicherplatz beansprucht.

K X teilen
quelle

Antworten:

12

Sie müssen PS1(wahrscheinlich .bashrc) Änderungen in Ihrer Shell-Startdatei vornehmen .

Wenn es bereits vorhanden ist, enthält seine Einstellung das \wVerzeichnis, in dem sich Ihr Arbeitsverzeichnis befindet. Ändern Sie dies in \W(Großbuchstaben). Melden Sie sich ab und wieder an, oder tun Sie Folgendes:

. .bashrc

(oder was auch immer Ihre Datei ist).

Wenn es nicht vorhanden ist, fügen Sie Folgendes hinzu:

PS1='\u@\h: \W:\$'

zu .bashrcoder was auch immer. Schauen Sie auf PS1der bashHandbuchseite nach, um weitere Ideen zu erhalten.

Achtung; bashkann mehrere Initialisierungsdateien verwenden, zB .bashrcund .bash_profile; es kann sein, dass das PS1systemweit eingestellt ist. Sie können dies jedoch in einer Ihrer eigenen Dateien überschreiben.

Bob Eager
quelle
23

Seit bash 4 können Sie die Tiefe des Verzeichnisses in der Befehlszeile auf einfache Weise mit dem folgenden Befehl in Ihrer bashrc-Datei verkürzen. Denken Sie daran, Ihr Terminal erneut zu öffnen, und die Nummer (dh 1) gibt die Tiefe des anzuzeigenden Verzeichnisses an.

PROMPT_DIRTRIM = 1

Esmaeil MIRZAEE
quelle
4
Das ist genau das, wonach ich gesucht habe. Etwas wie export PROMPT_DIRTRIM=3in deinem zu setzen .bashrcist der perfekte Mittelweg zwischen \Wund \w. Siehe: gnu.org/software/bash/manual/html_node/Bash-Variables.html
spkane
3

Angenommen, Sie verwenden bash, ändern Sie die Eingabeaufforderungszeichenfolge (Variable PS1) so, dass sie \Wanstelle von verwendet wird \w.

zB wenn deine PS1 aktuell ist \u@\h:\w\$, stell sie auf\u@\h:\W\$

Um dies dauerhaft zu machen, müssen Sie es in Ihren Bash-Startdateien ändern - zB ~/.bash_profileoder ~/.bashrc.

sehen man bashund die Suche nach PROMPTINGfür weitere Informationen und eine Liste der Backslash-escaped Sonderzeichen.

cas
quelle
Ich habe 4 Erwähnungen von PS1 Ändere ich alle 4?
K Split X
4 Erwähnungen wo? in ~ / .bash_profile? Es sollte nicht schaden, alle Instanzen von \win PS1 zu ändern \W. Oder Sie können die Eingabeaufforderung ganz unten im Skript auf einen beliebigen Wert einstellen.
cas
1

in diesem Fall müssen Sie PS1 bearbeiten ,

Stattdessen \whaben Sie einen Befehl oder eine Variable, die den verkürzten Pfad anzeigt:

original PS1

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'

ändere es in

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]${PWD##*/}\[\033[00m\]\$'

Beachten Sie, dass dies den Benutzernamen von ~ einfügt, wenn Sie sich in Ihrem Heimatverzeichnis befinden!

Um dies zu vermeiden, benötigen Sie ein paar Befehle in $ {PWD ## * /}, z

if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi

Die neue PS1 wird wie folgt aussehen

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]`if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi`\[\033[00m\]\$'

oOps, während ich versuche, die Welt zu retten, hatte ich noIdea | forgoten the \ W

Jona
quelle
1

Dies ist für alle shShells tragbar .

Weisen Sie PS1in einer Ihrer Shell-Startdateien Folgendes zu:

PS1='${PWD##*/} $ '

Die Eingabeaufforderung wird so aussehen

dir $

Wo dirist der Basisname des aktuellen Verzeichnisses.

Die $PWDVariable enthält den aktuellen Verzeichnispfad und entfernt ${PWD##*/}alles bis einschließlich des letzten /in diesem Pfad.

Die einfachen Anführungszeichen verhindern, dass die Shell-Form die Variablensubstitution zum Zeitpunkt der Zuweisung $PS1auswertet (der Wert von wird jedes Mal ausgewertet, wenn die Eingabeaufforderung angezeigt wird).

Die PS1Variable sollte nicht exportiert werden, da sie nur von der aktuellen Shell verwendet wird.

Kusalananda
quelle
0

https://github.com/chrissound/SodiumSierraStrawberry

Ermöglicht das Abschneiden eines Pfades wie folgt:

Von: / home / natrium / Projekte / Persönlich / Sierra / Super / Lang / Pfad / HolyAvacado

An: »Projekte / Sie… / Sup… / Lon… / Pat… / HolyAvacado /

Chris Stryczynski
quelle