2016-05-27 8 views

Antwort

2

Es ist eine Umgebungsvariable PROMPT_COMMAND finden the manual

PROMPT_COMMAND

Wenn gesetzt, wird der Wert als Befehl an vor dem Drucken jeder primären Aufforderung auszuführen interpretiert wird ($PS1).

Für einen trivialen Fall, setzen Sie ihn wie ein Alias:

PROMPT_COMMAND='echo "Something"' 

Für komplexere Sachen, man kann es eine Funktion aufrufen haben:

prompt_command() { 
    # If username has underscore, shorten to 'a_b'; else just use first letter 
    un="${USER:0:1}" 
    if [[ $USER == *?_?* ]]; then 
     local suff="${USER##*_}" 
     un+=_"${suff:0:1}" 
    fi 
} 
PROMPT_COMMAND=prompt_command 

ich dies zu ändern, verwenden Benutzername in meiner Eingabeaufforderung, so woanders in meinem .bashrc gibt es etwas wie

export PS1="[email protected]\h \$" 

Der typische [email protected] $ Prompt also, aber der Benutzername wird dynamisch wie in der PROMPT_COMMAND Funktion angegeben verkürzt.

0

Hier ist ein PS4 Trick, dies zu tun. Unter der Annahme, möchten Sie date Befehl vor jedem Befehl ausgeführt werden soll, dann können Sie einstellen PS4 wie:

PS4='$(date)\n' 

Aktivieren Sie dann nur zu verfolgen, vor jedem Befehl Druckdatum zu starten:

set -x 

Dann können Sie sehen, Datum erscheinen bevor jeder Befehl ausgeführt:

$> set -x 

$> tty 
Fri May 27 09:57:42 EDT 2016 
tty 
/dev/ttys004 

$> uname 
Fri May 27 09:57:48 EDT 2016 
uname 
Darwin 

Wenn Sie diese deaktivieren deaktivieren nur die Spur mit:

set -x 
Verwandte Themen