Frage Verstecke das aktuelle Arbeitsverzeichnis im Terminal


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

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

Je tiefer Sie in das Dateisystem gehen, desto weniger Platz ist für die Eingabe von Befehlen übrig. Kann ich das ändern, um nur etwas zu zeigen:

>

Ich meine, ich kann einfach tippen pwd um zu zeigen, wo ich bin. ;)


112
2017-12-09 09:16


Ursprung


Dies sollte ein Kommentar sein, aber ich kann nicht kommentieren, sorry. Zusätzlich zum Verbergen des aktuellen Verzeichnisses wird der folgende PS1-Wert Ihre bash-Befehle visuell gut trennen: export PS1="\n___" - Hello World
experimentierte mit Oli's Lösungen. Die Farbschriftarten funktionieren gut im Terminal: Export PS1 = '[\ 033 [0; 35m] \ h [\ 033 [0; 33m] \ w [\ 033 [00m]:' - linbianxiaocao


Antworten:


export PS1='\u@\h: '

Das ergibt oli@bert: für meine Aufforderung.

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

export PS1='> '

Sie können das an das Ende Ihrer anschließen ~/.bashrc Datei, um sie zwischen den Logins bestehen zu lassen.

Sie können auch mit einigen Farben kreativ werden. Hier ist, was ich auf meinen Servern verwende:

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

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

My terminals

Glossar akzeptabler Zeichen in PS1


129
2017-12-09 09:22



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 habe diese Art von "extremer" Shell-Anpassung in msysGit zum ersten Mal erlebt, 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 Zustand des Git-Index ...) genau dort waren so großartig. Ich plane etwas ähnliches mit der Ubuntu-Installation, die ich kürzlich auf einen alten Laptop (neben Windows XP) gelegt habe. - dgw
In welchem ​​Format werden die Farben eingestellt? - Syed Rakib Al Hasan


Nur um Oli's Antwort zu erweitern (und damit ich ein Lesezeichen für diese Kurzzeichen habe):

Die Bash-Aufforderung (stefano@linux:~$) ist nur der erste von ein paar Aufforderungen Sie könnten sehen:

  • PS1: Die Standardeingabeaufforderung, die beim Öffnen einer Shell angezeigt wird

    Sein Wert wird in einer aufgerufenen Umgebungsvariablen gespeichert PS1. Um seinen Wert zu sehen, Art

    echo $PS1

    Dies wird dir etwas geben

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

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

    export PS1="\u > "
    

    Dies wird zu einer Eingabeaufforderung wie folgt führen:

    stefano > 
    
  • PS2: ist Ihre sekundäre Eingabeaufforderung. Dies wird angezeigt, wenn ein Befehl nicht beendet ist. Art echo "asd und drücken Sie Enter, die sekundäre Eingabeaufforderung lässt Sie mehr eingeben Linien, bis Sie die Anführungszeichen schließen.

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

  • PS4 ist die Eingabeaufforderung für alt text  Stapelspuren (Standard: +)

Um die Änderungen dauerhaft zu machen, fügen Sie sie am Ende an .bash_profile (oder .bashrc, sehen diese Frage) in deinem Heimverzeichnis.

Hier ist eine mehr oder weniger vollständige Liste von Kurzschreibweisen, die Sie verwenden können, wenn Sie diese zusammenstellen:

  • \a Das "Glocke" -Zeichen
  • \A 24h Zeit
  • \d Datum (z. B. Di 21. Dez.)
  • \e Das 'Flucht'-Zeichen
  • \h Hostname (bis zum ersten ".")
  • \H Hostname
  • \j Anzahl der laufenden Jobs (ps)
  • \l Aktuelle tty
  • \n Zeilenvorschub
  • \t Zeit (hh: mm: ss)
  • \T Zeit (hh: mm: ss, 12h Format)
  • \r Wagenrückgabe
  • \s Shell (d.h. bash, zsh, ksh ..)
  • \u Nutzername
  • \v Bash-Version
  • \V Full Bash Release-String
  • \w Aktuelles Arbeitsverzeichnis
  • \W Letzter Teil des aktuellen Arbeitsverzeichnisses
  • \! Aktueller Index in der Geschichte
  • \# Befehlsindex
  • \$ Ein "#" wenn du root bist, sonst "$"
  • \\ Wörtlicher Backslash
  • \@ Zeit (12h Format mit am / pm)

Sie können natürlich eine beliebige Zeichenfolge und einen beliebigen Befehl einfügen:

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

Woher $(pwd) steht an Stelle von "der Ausgang von" pwd.

  • Wenn die Befehlssubstitution wie in \$(pwd), es wird jedes Mal ausgewertet, wenn die Eingabeaufforderung angezeigt wird, andernfalls wie in $(pwd)Es wird nur einmal ausgewertet, wenn bash gestartet wird.

Wenn Sie möchten, dass Ihre Eingabeaufforderung Farben enthält, können Sie die Farbcodes der 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 = blink
    • 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 auf der linken Seite. h. "1" bedeutet fett, "1; 31" bedeutet fett und rot. Und Sie würden Ihr Terminal veranlassen, in Farbe zu drucken, indem Sie der Anweisung mit entkommen \33[ und endend mit einem m. 33, oder 1B in hexadezimal, ist das ASCII-Zeichen "ESCAPE" (ein Sonderzeichen im ASCII-Zeichensatz). Beispiel:

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

Druckt "Hello World" in leuchtendem Rot.


87
2017-12-21 21:57



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


Eine andere Alternative ist, den Arbeitsverzeichnispfad zu kürzen, wenn er zu lang wird: trimmen Sie das Arbeitsverzeichnis des Terminalbefehlsaufrufs

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:

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

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


6
2017-12-22 00:26



Exa ... ~ / short.pwd.py, export ... ~ / .short.pwd.py Ich denke beide müssen gleich sein. Entweder Sie setzen einen zusätzlichen Befehl in beide Orte oder Sie tun das überhaupt nicht. Aber das ist eine ausgezeichnete Antwort .. - MycrofD


Ich möchte das oft vorübergehend machen. 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.


4
2018-03-27 22:33





Die Sache, die mir geholfen hat, war: Export PS1 = '$'

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

Hoffe das hilft. Arbeitete für mich.


0
2017-07-05 19:36