Verstecke das aktuelle Arbeitsverzeichnis im Terminal


133

Standardmäßig zeigt die Terminal-Eingabeaufforderung Folgendes an:

user@system:/folder1/folder2/folder3/folder4$

Je tiefer Sie in das Dateisystem vordringen, desto weniger Platz bleibt für die Eingabe von Befehlen. Kann ich dies so ändern, dass nur Folgendes angezeigt wird:

>

Ich meine, ich kann nur tippen, um pwdzu zeigen, wo ich bin. ;)


1
Dies sollte ein Kommentar sein, aber ich kann ihn leider nicht kommentieren. Zusätzlich zum Ausblenden des aktuellen Verzeichnisses werden Ihre Bash-Befehle durch den folgenden PS1-Wert optisch getrennt:export PS1="\n___"
Hello World,

experimentierte mit Olis Lösungen. Die Farbschriften funktionieren im Terminal gut: export PS1 = '[\ 033 [0; 35m] \ h [\ 033 [0; 33m] \ w [\ 033 [00m]:'
Linbianxiaocao

Antworten:


153
export PS1='\u@\h: '

Das führt oli@bert:zu meiner Aufforderung.

Wenn Sie wirklich etwas so Minimalistisches wollen, wie Sie es sich wünschen, versuchen Sie Folgendes:

export PS1='> '

Sie können dies an das Ende Ihrer ~/.bashrcDatei anhängen, damit sie zwischen den Anmeldungen erhalten bleibt.

Sie können auch mit einigen Farben kreativ werden. Folgendes verwende ich auf meinen Servern:

export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '

Geben (auf einem schwarzen Hintergrund ist es einfacher zu sehen):

Meine Terminals

Glossar der zulässigen Zeichen in PS1


2
Sie können auch Zeilenumbrüche (\ n) als Teil der Eingabeaufforderung verwenden, sodass Sie alle Informationen und das '>' in separaten Zeilen einfügen können.
Ak2

Ich bin zum ersten Mal auf diese Art von "extremer" Shell-Anpassung in msysGit gestoßen, ob Sie es glauben oder nicht. Ich wurde sofort in die Welt der Bash umgewandelt. Alle Informationen (mein aktuelles Verzeichnis, der aktuelle Zweig, der aus dem Git-Repo ausgecheckt wurde, der Status des Git-Index ...) genau dort zu haben, war so fantastisch. Ich habe vor, etwas Ähnliches mit der Ubuntu-Installation zu machen, die ich kürzlich auf einem alten Laptop installiert habe (neben Windows XP).
dgw

3
Welches Format wird zum Einrichten der Farben verwendet?
Rakib

1
@SyedRakibAlHasan Versuch echo -e "\e[31mHello World\e[0m"oder echo -e "\033[31mHello\e[0m World"in einem Terminal, das sollte dir einen Hinweis geben. source
daka

103

Um die Antwort von Oli zu erweitern (und damit ich ein Lesezeichen für diese Kurzzeichensymbole habe):

Die Bash-Eingabeaufforderung ( stefano@linux:~$) ist nur die erste von ein paar Eingabeaufforderungen, die Sie möglicherweise sehen:

  • PS1 : Die Standard-Eingabeaufforderung, die beim Öffnen einer Shell angezeigt wird

    Sein Wert wird in einer Umgebungsvariablen namens gespeichert PS1. Geben Sie ein, um den Wert anzuzeigen

    echo $PS1

    Das gibt dir so etwas wie

    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

    Um dies zu ändern, können Sie einen neuen Wert für die Variable festlegen:

    export PS1="\u > "

    Dies führt zu einer Eingabeaufforderung wie folgt:

    stefano > 
  • PS2 : ist deine zweite Eingabeaufforderung. Dies wird angezeigt, wenn ein Befehl nicht beendet ist. Geben Sie ein echo "asdund drücken Sie die Eingabetaste. In der zweiten Eingabeaufforderung können Sie weitere Zeilen eingeben, bis Sie die Anführungszeichen schließen.

  • PS3 ist die Eingabeaufforderung für select(2)

  • PS4 ist die Aufforderung zur Eingabe verwendet Alt-Text Stapelüberwachungen (Standard: +)

Um die Änderungen dauerhaft zu machen, fügen Sie sie an das Ende von .bash_profile(oder .bashrc, siehe diese Frage ) in Ihrem Ausgangsverzeichnis an.

Hier ist eine mehr oder weniger vollständige Liste der Kurzformate, die Sie beim Verfassen dieser verwenden können:

  • \a     Die Glocke
  • \A     24h Zeit
  • \d     Datum (zB Di Dez 21)
  • \e     Der Fluchtcharakter
  • \h     Hostname (bis zum ersten ".")
  • \H     Hostname
  • \j     Anzahl der aktuell ausgeführten Jobs (ps)
  • \l     Aktuelle tty
  • \n     Zeilenvorschub
  • \t     Zeit (hh: mm: ss)
  • \T     Zeit (hh: mm: ss, 12h Format)
  • \r     Wagenrücklauf
  • \s     Shell (dh bash, zsh, ksh ..)
  • \u     Nutzername
  • \v     Bash-Version
  • \V     Vollständige Bash-Release-Saite
  • \w     Aktuelles Arbeitsverzeichnis
  • \W     Letzter Teil des aktuellen Arbeitsverzeichnisses
  • \!     Aktueller Index in der Geschichte
  • \#     Befehlsindex
  • \$     Ein "#", wenn Sie root sind, sonst "$"
  • \\     Literal Backslash
  • \@     Uhrzeit (12h Format mit am / pm)

Sie können natürlich jede Literalzeichenfolge und jeden Befehl einfügen:

export PS1="\u \$(pwd) > "

Wo $(pwd)steht anstelle von "die Ausgabe von" pwd.

  • Wenn die Befehlsersetzung wie in \$(pwd)maskiert wird, wird sie jedes Mal ausgewertet, wenn die Eingabeaufforderung angezeigt wird. Andernfalls wird sie wie in $(pwd)maskiert nur einmal ausgewertet, wenn die Bash gestartet wird.

Wenn Sie möchten, dass Ihre Eingabeaufforderung Farben enthält, können Sie die Farbcodes von bash verwenden. Der Code besteht aus drei Teilen:

40;33;01
  • Der erste Teil vor dem Semikolon steht für den Textstil.

    • 00 = keine
    • 01 = fett
    • 04 = Unterstrich
    • 05 = blinken
    • 07 = rückwärts
    • 08 = verborgen
  • Der zweite und dritte Teil sind die Farbe und die Hintergrundfarbe:

    • 30 = schwarz
    • 31 = rot
    • 32 = grün
    • 33 = gelb
    • 34 = blau
    • 35 = Magenta
    • 36 = Cyan
    • 37 = weiß

Jeder Teil kann weggelassen werden, vorausgesetzt, er beginnt links. dh "1" bedeutet fett, "1; 31" bedeutet fett und rot. Und Sie würden Ihr Terminal dazu bringen, in Farbe zu drucken, indem Sie die Anweisung mit schließen \33[und mit einem abschließen m. 33 oder 1B hexadezimal ist das ASCII-Zeichen "ESCAPE" (ein Sonderzeichen im ASCII-Zeichensatz). Beispiel:

"\33[1;31mHello World\33[m"

Druckt "Hello World" in leuchtendem Rot.


Ich habe angehängt export PS1='\[\033[1;31m\]\w\[\033[00m\] \$> ', /etc/bash.bashrcaber nichts schien sich zu ändern ... es funktioniert für eine Sitzung, aber ich kann es nicht dauerhaft machen.
Jared Tritsch

8

Eine andere Alternative besteht darin, den Arbeitsverzeichnispfad zu verkürzen, wenn er zu lang wird: Schneiden Sie das Arbeitsverzeichnis der Eingabeaufforderung des Terminals

Erstellen Sie ein kleines Python-Skript, das die gewünschte Trimmlogik implementiert.

Beispiel: ~ / short.pwd.py

import os
from commands import getoutput
from socket import gethostname
hostname = gethostname()
username = os.environ['USER']
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)
if len(pwd) > 30:
    pwd = pwd[:10]+'...'+pwd[-20:] # first 10 chars+last 20 chars
print '[%s@%s:%s] ' % (username, hostname, pwd)

Testen Sie es jetzt von einem Terminal aus:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'

Wenn Sie mit dem Ergebnis zufrieden sind, fügen Sie den Befehl einfach in Ihr ~ / .bashrc ein


Exa ... ~ / short.pwd.py, export ... ~ / .short.pwd.py Ich denke, beide müssen gleich sein. Entweder geben Sie an beiden Stellen einen zusätzlichen Befehl ein oder Sie tun dies überhaupt nicht. Aber das ist eine ausgezeichnete Antwort ..
MycrofD

7

Ich möchte das oft vorübergehend tun. Folgendes mache ich:

$ export OLD_PS1=$PS1                    # save Long Prompt to OLD_PS1
$ export PS1="\u > "export PS1="\u $ "   # change to PS1 to Short Prompt
$ export PS1=$OLD_PS1                    # restore Long Prompt to PS1

Ich hoffe das hilft jemandem.


1

für macOS benutzer:

open ~/.bash_profile

Fügen Sie am Ende der Datei die folgende Zeile hinzu und speichern Sie sie

export PS1='\u:\w\$ '

Ergebnis im Home-Verzeichnis:

user: ~$

Hier ist u für Benutzer w für das aktuelle Arbeitsverzeichnis $ zur Anzeige aufzufordern

Sie können die folgenden Stile ausprobieren:

export PS1='$ '

nur $ als Eingabeaufforderung haben, sonst nichts. so wie:

$ 

0

Das was mir geholfen hat war: export PS1 = '$'

Um dies bei jedem Öffnen des Terminals zu erhalten, schreiben Sie den Befehl am Ende der .bashrc-Datei, die Sie mit 'cd' gefolgt von 'gedit .bashrc' öffnen können.

Hoffe das hilft. Hat für mich geklappt.

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.