Wofür steht ~ $?

27

Was bedeutet ~$stehen? Beispielsweise:

user@ubuntu:~$

Soweit ich weiß, ist das $Zeichen ein Symbol für einen normalen Benutzer. Wenn ich mich nicht irre habe rootich #am Ende.

Ich habe auch viele Befehle in den Foren gefunden, die beginnen mit $:

$ sudo apt-get update 

Also wofür steht $eigentlich?

BEARBEITEN (28.01.2014):

Heute bin ich auf dieses Video gestoßen, das meine Frage von vor 8 Monaten vollständig beantwortet hat und habe beschlossen, es hier zu teilen :)

BASH-Grundlagen - https://www.youtube.com/watch?v=x73WTEltyHU

FEarBG
quelle

Antworten:

33

Die ~und $sind Elemente der Befehlszeile . Dies zeigt an, dass Ihr Computer (oder genauer gesagt, die Shell, die Sie ausführen) auf Benutzereingaben wartet. Es wird aufgefordert Sie einen Befehl eingeben.

Das $ist nur ein Trennzeichen oder ein Teiler. Es trennt die Eingabeaufforderung von dem darauf folgenden Befehl. Wenn Leute wie $ sudo apt-get update(Ihr Beispiel) schreiben , sagen sie Ihnen einfach, dass der Befehl in diesem Fall sudo apt-get updatean einer Eingabeaufforderung eingegeben werden muss. Genau genommen $ist das in diesem Zusammenhang vielleicht überflüssig.

In anderen Situationen können andere Trennzeichen verwendet werden. Wird beispielsweise #für eine Root-Shell verwendet.

Die ~(als "Tilde" bezeichnete) Abkürzung für Ihr Home-Verzeichnis. Wenn es in einer Eingabeaufforderung angezeigt wird, bedeutet dies beispielsweise, user@hostame:~$dass das aktuelle Arbeitsverzeichnis Ihr Ausgangsverzeichnis ist. Wenn Sie also den Befehl list ausführen ls, ohne ein bestimmtes Verzeichnis anzugeben, wird der Inhalt Ihres Basisverzeichnisses aufgelistet.

(Übrigens $HOMEist, wie Sie vorschlagen, kein Befehl, sondern eine Umgebungsvariable . Er bestimmt den Speicherort Ihres Basisverzeichnisses. Sie können den Wert anzeigen, indem Sie ausführen $ echo $HOME.)

camsolo
quelle
10
@FEarBG Ich denke, diese Antwort schlägt in einem kleinen Punkt fehl: Die Eingabeaufforderung ist vollständig anpassbar und nur eine Dekoration. Sie können sich für eine leere Eingabeaufforderung entscheiden oder beliebige Symbole verwenden (z. B. auf meinem Computer, den ich durch $"I" als Eingabeaufforderungssymbol ersetzt habe). Sie können Ihre Eingabeaufforderung ändern, indem Sie die PS1Umgebungsvariable nach Ihren Wünschen einstellen .
Bakuriu
@ Bakuriu Vorausgesetzt, bash, natürlich. Andere Muscheln können anders sein.
CVn
1
"Genau genommen ist der Dollar in diesem Zusammenhang vielleicht überflüssig." - Ja, aus diesem Grund ziehen wir es im Allgemeinen vor, das zu vermeiden, $wenn dies nicht erforderlich ist (beispielsweise für Protokollkopien oder Beispielausgaben).
user98085
12

Traditionell endet eine Shell-Eingabeaufforderung entweder mit $,% oder #. Wenn es mit $ endet, weist dies auf eine Shell hin, die mit der Bourne-Shell kompatibel ist (z. B. eine POSIX-Shell oder eine Korn-Shell oder Bash). Wenn es mit% endet, zeigt dies eine C-Shell an (csh oder tcsh). Wenn es mit # endet, bedeutet dies, dass die Shell als Superuser-Konto (root) des Systems ausgeführt wird.

Quelle : hier

Mukund
quelle
Auf einigen (alten, normalerweise) Systemen haben Sie sogar als normaler Benutzer ein "#" (vielleicht, um Sie auf dem Laufenden zu halten ^^) ... dh einige ältere Shells ändern das Symbol nicht, wenn Sie root sind - vs- regulärer Benutzer.
Olivier Dulac
10
  • ~ steht für Ihr Home-Verzeichnis.
  • $Dies ist ein Trennzeichen für Ihr System. Es stammt aus dem Befehl \$auf der Manpage.

Wenn Sie also einen Befehl finden, der mit $diesem beginnt, müssen Sie lediglich angeben, dass vor diesem Befehl nichts hinzugefügt werden soll.

user@ubuntu:~$

userist der Benutzername, mit dem Sie angemeldet sind.
@ist nur zu sagen, hier ist ein Link.
ubuntuist der Name des Systems, unter dem Sie angemeldet sind.
:~sagt, dass Sie sich userjetzt im Home-Verzeichnis befinden.
$kommt aus der \$Fluchtsequenz im $PS1. Manpage.

Dies kann jedoch alles durch Lesen in der Manpage geändert werden . Vielen Dank an @demure für die Hilfe.

Alvar
quelle
2
Um genau zu sein, es ist der \$Teil der $ PS1, der zeigt, $wenn nicht root (sonst wird es #) Manpage ausüben
demure
@denure hat meine Antwort aktualisiert. Wenn Sie der Meinung sind, dass Sie sie verbessern können, tun Sie dies bitte.
Alvar,
6

Das $ -Zeichen steht am Ende der Eingabeaufforderung im Terminal, wenn Sie einen Befehl wie den angezeigten hinzufügen. Geben Sie nicht das $ ein, da dies sonst nicht funktioniert.

Also $ sudo apt-get update

würde eingegeben werden als:

sudo apt-get update 

Hoffentlich hilft das.

Bearbeiten

Das ~ steht für Ihren Home-Ordner und name@pc_name:~/Desktop$zeigt an, dass Sie sich im Ordner Home> Desktop befinden.

SimplySimon
quelle
3
Vielleicht, um zu zeigen, dass Sie den Befehl an der Eingabeaufforderung eingeben sollten.
SimplySimon
4
Und auch, um zwischen einem Befehl, der von einem normalen Benutzer (an der Eingabeaufforderung $) ausgeführt wird, und dem Befehl root (der Eingabeaufforderung #) zu unterscheiden.
Coneslayer
@FEarBG: Es ist eine willkürliche Konvention, die (soweit ich weiß) nichts mit der Verwendung von $zur Bezeichnung eines Variablennamens zu tun hat . Auf einer Tastatur sind nur so viele druckbare Zeichen verfügbar. DOS und Windows werden >in Eingabeaufforderungen verwendet, Unix verwendet normalerweise $oder %. Es zeigt an, dass dies eine Aufforderung ist, ohne Platz auf dem Bildschirm (oder früher Tinte und Papier) zu verschwenden.
Keith Thompson
Und natürlich in DOS und Windows Umgebungsvariablen verwenden %. Wie Sie sagen, ist es größtenteils willkürlich; es muss so ziemlich irgendetwas geben , aber es muss nicht überall dasselbe sein (obwohl es irgendwie nett wäre, wenn es so wäre).
CVn