Wie kann ich meine Eingabeaufforderung verkürzen?

167

Derzeit ist es:

michael@Castle2012-Ubuntu-laptop01:~/Dropnot/webs/rails_v3/linker/spec/controllers$

Außerhalb der Umbenennung meiner Maschine und Verzeichnisstruktur ...

Wie könnte ich es so etwas ähnlicher machen:

michael:controllers$
Michael Durrant
quelle

Antworten:

241

Zum Ändern nur für die aktuelle Terminalinstanz

Geben Sie einfach ein PS1='\u:\W\$ 'und drücken Sie die Eingabetaste.


Es "dauerhaft" zu ändern

In Ihrem ~/.bashrcfinden Sie den folgenden Abschnitt:

if ["$ color_prompt" = yes]; dann
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [00m \] \ $ '
sonst
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $'
fi

Entfernen Sie das @\h, und ersetzen die \wmit einem Groß \W, so daß es:

if ["$ color_prompt" = yes]; dann
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ W \ [\ 033 [00m \] \ $ '
sonst
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u: \ W \ $'
fi

Speichern, beenden, Terminal schließen und ein anderes starten, um das Ergebnis zu sehen.


Tonnenweise mehr Optionen!

  • Sehen Sie hier für eine umfangreichere Howto, viele weitere Optionen
  • In dieser Antwort erfahren Sie, wie Sie mit einem winzigen Python-Skript die Eingabeaufforderung so einstellen, dass die Verkürzung nur auftritt, wenn Sie sich tief in einer Verzeichnisstruktur befinden.
ish
quelle
1
Sie können auch viele Informationen haben ... und dann einen Wagenrücklauf am Ende wie in unix.stackexchange.com/q/88780/10043
Michael Durrant
Gibt es eine Möglichkeit, dies global zu gestalten? Mit anderen Worten, wenn ich mich an einen anderen Benutzer wende, wird diese Einstellung nur für mich übernommen (dh nicht für den Benutzer, wenn er normalerweise sein Konto verwendet)?
Ctote
Um eine gemeinsam genutzte .bashrc-Datei zu haben, die sowohl unter Linux als auch unter OSX funktioniert, habe ich seitdem auf unix.stackexchange.com/a/127800/10043
Michael Durrant,
dh HOST='\033[02;36m\]\h' HOST=' '$HOST parse_git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; } 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\]$(parse_git_branch)\[\033[00m\]\n\$ ' PS1=$TIME$USER$HOST$LOCATION$BRANCH PS2='\[\033[01;36m\]>'
Michael Durrant
In der Antwort finden Sie jedoch den tatsächlich zu verwendenden Code.
Michael Durrant
104

Führen Sie diesen Code im aktuellen Terminal aus

PROMPT_DIRTRIM=3

Jetzt werden in der Bash-Eingabeaufforderung nur die letzten 3 Verzeichnisnamen angezeigt. Sie können 1 auswählen, um nur das aktuelle Verzeichnis anzuzeigen. Weitere Informationen finden Sie in der GNU-Dokumentation .

Der Effekt:

/var/lib/apt/lists# PROMPT_DIRTRIM=3
/.../lib/apt/lists# 

Wenn Sie es dauerhaft machen möchten, fügen Sie ~/.bashrcam Anfang die folgende Zeile hinzu :

PROMPT_DIRTRIM=3

oder eine andere Zahl größer als Null.

Santosh Mahto
quelle
7
Nur eine Randnotiz: Dies erfordert Bash 4.
Stefan Lasiewski
Nizza ... Ich habe ein bach_alias für diese (mit einer Funktion) hinzugefügt, promptdir() { PROMPT_DIRTRIM=$1; }nur um das Leben einfacher zu machen ...
Dgoosens
18

Dies ist meine bevorzugte Einstellung für die Eingabeaufforderung:

hinzugefügt in ~/.bashrc

PS1='[\u@\h \W]\$ '    

es sieht aus wie das:

[user@hostname dirname]$

(mit einem Leerzeichen nach dem $Zeichen)

nicht verwertbar
quelle
Wie würde ich zwischen jedem Wort ein Leerzeichen einfügen? Kann ich es auch ausmalen?
Daniel Springer
6

Persönlich möchte ich nur den aktuellen Ordner in der Bash-Eingabeaufforderung sehen. Ich kann dies mit dem folgenden Befehl tun:

PS1='\W\$ '

Wenn Sie möchten, dass es nach jedem Start wirksam wird, fügen Sie den obigen Befehl in Ihr ~ / .bashrc ein.

Rajeev Jayaswal
quelle
1

Mir ist klar, dass dies sehr alt ist, aber da niemand vorgeschlagen hat, einen Alias ​​zu erstellen, dachte ich mir, dass ich etwas posten würde. Mit Bash Prompt Escape Sequences habe ich einen Alias ​​erstelltshorten

Hier ~/.bash_aliaseswerden Sie feststellen, dass $ Blue var die Eingabeaufforderungsfarbe festlegt, die Sie je nach Vorliebe weglassen oder ändern können. Ich lösche auch das Terminal, wenn Sie short anrufen.

alias c='clear'

alias shorten='PS1="$Blue$USER:\W$ "&& c'

So erreichen Sie die gewünschte Eingabeaufforderungszeichenfolge des OP:

alias shorten='PS1="$USER:\W$ "'

Ich habe Farben in ~/.bashrcKopie definiert und von https://wiki.archlinux.org/index.php/Color_Bash_Prompt eingefügt . Nebenbei bemerkt, was ist mit Ansi-Code-Farben? Ich bin verwirrt, wenn ich es nur ansehe.

Blue='\e[0;34m'         # Blue
Allie Carver
quelle
Eine Schritt-für-Schritt-Anleitung dafür wäre so nützlich, dass ich keine Ahnung habe, wie ich zu .bash_aliases komme. Vielen Dank
Kayote
2
"." Präfix kennzeichnet ein verstecktes Verzeichnis oder eine versteckte Datei. Die Tilde "~" ist eine Kurzform der Variablen $ HOME. "~ / .Bash_aliases" ist also nur eine Kurzform von "/home/$USER/.bash_aliases". Um ".bash_aliases" zu öffnen, können Sie entweder ein Terminal öffnen und "gedit /home/$USER/.bash_aliases" oder "gedit ~ / .bash_aliases" eingeben oder in Ihrem Ausgangsverzeichnis Strg-h eingeben, um versteckte Dateien anzuzeigen und die Datei direkt zu öffnen . Ich hoffe, das hilft. Möglicherweise möchten Sie auch eine Google-Suche nach nützlichen Aliasnamen durchführen.
Allie Carver
0

Ich habe eine Funktion geschrieben, die Sie an Ihre Bedürfnisse anpassen können:

function termprompt() {
    PS1="${PS1//@\\h/}"     # Remove @host
    PS1="${PS1//\\w/\\W}"   # Change from full directory to last name
}

Platzieren Sie diese Funktion am oder in der Nähe des unteren Randes von, ~/.bashrcnachdem die PS1Linie vollständig berechnet wurde.

Sie würden termpromptimmer dann tippen, wenn Sie Ihre Eingabeaufforderung verkürzen wollten oder termpromptvon unten nach Ihrer ~/.bashrcBeständigkeit gerufen haben.

Der Vorteil dieser Technik gegenüber vielen anderen Antworten ist, dass Sie vier verschiedene .bashrcEinstellungen PS1vornehmen können (xterm + keine Farbe, xterm + Farbe, no-xterm + keine Farbe, no-xterm + Farbe). Diese Antwort unterstützt alle vier aktuellen Methoden und wahrscheinlich auch zukünftige Methoden.

Ein weiterer Vorteil ist, dass diese Methode weniger komplexe Steuercodes enthält, über die Sie hinweggehen müssen, um Ihre Änderungen einzufügen.

WinEunuuchs2Unix
quelle