Beim Anschauen eines Videos habe ich Folgendes gesehen:
% more tinyUF.txt
10
4 3
3 8
6 5
Was ist dieses %
Zeichen vor dem more
Befehl?
shell
command-line
prompt
Maxim Koretskyi
quelle
quelle
export PS1=%
??$
Vorzeichen ändern , indem Sie angeben,export PS1=...
wo...
das Ersatzzeichen steht.Antworten:
Dies ist die Shell-Eingabeaufforderung oder genauer gesagt die primäre Eingabeaufforderung der Shell ( es gibt mehrere ). Es ist die Art und Weise, wie die Shell sagt: " Mach weiter, ich bin jetzt bereit für Eingaben ".
Die
%
Eingabeaufforderung ist incsh
-type-Shells üblich, währendsh
-shells (likebash
undksh93
) normalerweise a$
als Eingabeaufforderung verwendet.Die Eingabeaufforderung ändert sich normalerweise
#
für den Root-Benutzer, da ein ausreichend leistungsfähiger Benutzer durch eine alternative Eingabeaufforderung (wie es der POSIX-Standard ausdrückt) an diese Leistung erinnert werden sollte .Die primären Eingabeaufforderungs-Shell-
sh
Typen werden durch den Wert der Shell-Variablen bestimmtPS1
.Zusammenfassung der Kommentare unten mit Ergänzungen:
Das
#
Zeichen der Root-Eingabeaufforderung (von beidensh
undcsh
Shells verwendet) stimmt zufällig mit dem allgemeinen Shell-Kommentarzeichen überein. Das Kopieren und Einfügen eines Befehls als root würde den eingefügten Befehl funktionsunfähig machen, wenn die Shell-Eingabeaufforderung ebenfalls kopiert wurde. Beachten Sie, dass dies#
als Root-Eingabeaufforderung übernommen wurde, bevor die Shell eine Kommentar-Konvention hatte (Referenz: E-Mail von Doug McIlroy ).In den
es
undrc
-Shells von Plan 9 wird das;
Zeichen als Standardeingabeaufforderung verwendet. Dies hat zur Folge, dass das Kopieren und Einfügen eines Befehls, einschließlich der Eingabeaufforderung, weiterhin bedeutet, dass der eingefügte Befehl gültig ist (und ausgeführt wird).Eine Möglichkeit, eine benutzerdefinierte, aber immer noch kopierfähige Shell-Eingabeaufforderung zu aktivieren, wäre die Verwendung von
: something ;
, wobeisomething
beispielsweise das aktuelle Verzeichnis, der aktuelle Hostname oder die aktuelle Uhrzeit verwendet werden können.quelle
zsh
(eine Bourne-artige Shell, aber mit vielen Features austcsh
). Beachten Sie, dass Bourne-ähnliche und csh-ähnliche Shells normalerweise#
für Benutzer von uid 0 verwendet werden.rc
-ähnliche Shells verwendet;
werden (man kann die gesamte Zeile kopieren und einfügen, und das ist gültiger Shell-Code, wobei die gleiche Idee wie bei der Root-#
Eingabeaufforderung ein Kommentar ist).#...
Zeilen Kommentare sind, wenn sie kopiert und eingefügt werden, auch wenn dies nicht beabsichtigt war. Ich weiß nicht , ob es die Absicht , die hinter war;
inrc
entweder, obwohl ich es ist eine bequeme Folge beobachten.