GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Zeigt nur den aktuellen Verzeichnisnamen (nicht den vollständigen Pfad) an der Bash-Eingabeaufforderung an

Ändern Sie den \w (Kleinbuchstaben) bis \W (Großbuchstaben):

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
                                                                                       ^^
           this one waaaaaay over here ------------------------------------------------+    

Werfen Sie einen Blick auf das Bash Prompt HOWTO für viele lustige Details. Beispiel:

[email protected]:/usr/local/bin$ echo $PS1
${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ 

[email protected]:/usr/local/bin$ export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\W\[\033[00m\]\$ '

[email protected]:bin$

Die PROMPT_COMMAND Variable, falls gesetzt, ist ein Befehl, der ausgeführt wird, bevor die in PS1 angegebene Eingabeaufforderung angezeigt wird . In Ihrem Fall PROMPT_COMMAND führt einen echo aus -Anweisung mit bestimmten ANSI-Escape-Sequenzen, die die Titelleiste eines Xterm manipulieren.

Wenn Sie Ihren PROMPT_COMMAND vermuten überschreibt Ihren PS1 Eingabeaufforderung können Sie unset eingeben it und testen Sie die Dinge:

$ unset PROMPT_COMMAND

Stellen Sie schließlich sicher, dass Sie PS1 ändern Definition, die tatsächlich verwendet wird. Übliche Standorte sind /etc/bash.bashrc , /etc/profile , ~/.bashrc , ~/.bash_profile , ~/.profile . Die Systemdateien werden im Allgemeinen (aber nicht immer) vor den Benutzerdateien ausgeführt.


Der einfache Bash-Replace-Befehl ist

${VAR/pattern_to_find/pattern_to_replace}

Um das letzte Verzeichnis anzuzeigen, können Sie einfach ${PWD/*\//} ausführen , d.h. alles vor und einschließlich dem letzten '/ finden ' und durch nichts ersetzen.

Auf meinem Ubuntu-Rechner verwende ich:

export PS1='$(whoami):${PWD/*\//}#'. 

Meine Lösung besteht darin, die obersten drei und die untersten 2 Verzeichnisse anzuzeigen, wenn mehr als 5 vorhanden sind

Meine Eingabeaufforderung (die auch andere Informationen enthält) sieht also so aus:

08:38:42 durrantm U2017 /home/durrantm/Dropbox/_/rails/everquote

wenn mein pwd eigentlich

ist
/home/durrantm/Dropbox/93_2016/work/code/ruby__rails/rails/everquote

Meine PS1-Eingabeaufforderung ist wie folgt eingerichtet:

HOST='\[\033[02;36m\]\h'; HOST=' '$HOST
TIME='\[\033[01;31m\]\t \[\033[01;32m\]'
LOCATION=' \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH

git_branch ist eine Funktion, die den aktuellen Git-Zweig anzeigt, ich behalte ihn in meinen Dotfiles, es ist:

git_branch () {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
  }

Linux
  1. Pfadtrenner in Ps1 hervorheben?

  2. Abrufen des vollständigen Pfadnamens eines bestimmten Verzeichnisses?

  3. Wie zeigt man den vollständigen Pfad einer Datei oder eines Verzeichnisses im Terminal an?

  4. So führen Sie den Befehl „find“ nur im aktuellen Verzeichnis und nicht in Unterverzeichnissen aus

  5. Die Docker-Bash-Eingabeaufforderung zeigt keine Farbausgabe an

Abgekürztes aktuelles Verzeichnis in Shell-Eingabeaufforderung?

Entfernen Sie nur Dateien in Verzeichnissen unter Linux, NICHT in Verzeichnissen

Fügen Sie dem Pfad ein Bash-Skript hinzu

Wie konfigurieren Sie die Eingabeaufforderung in Linux, um das aktuelle Verzeichnis anzuzeigen?

Stellen Sie die Terminal-Eingabeaufforderung in Ubuntu so ein, dass nur der Name des Arbeitsverzeichnisses anstelle des vollständigen Pfads angezeigt wird

Wie führe ich ein Bash-Skript über einen absoluten Pfad aus?