Was macht das kleine Geschwätz unter Linux?

23918
O_O

Ich habe zwei Fälle davon, und ich wundere mich, was jeder macht:

  1. service=~

  2. mv ~/Desktop/Service$version.tgz $service

Was macht das kleine Geschwätz ~?

Was würde danach cd $servicetun?

25
das verdient so ein Tag * [verschnörkelt] * cregox vor 13 Jahren 3
Tilde ist Shell-spezifisch und nicht spezifisch für Linux. David Allan Finch vor 13 Jahren 3
@ Kawas: Fragen Sie und Sie erhalten. Dave Sherohman vor 13 Jahren 0
@Dave danke! Aber es scheint, als hätte Chris es gehasst. Na ja, das Leben geht weiter ... cregox vor 13 Jahren 0
Ist dies wirklich das erste Mal, dass dies gefragt wurde? Ich habe erwartet, dass dies als Duplikat geschlossen wird. Erik B vor 13 Jahren 0

5 Antworten auf die Frage

44
Mikel

Das schnörkelige Ding wird "Tilde" genannt.

Es wird zu Ihrem Heimatverzeichnis erweitert.

Versuchen

echo ~ echo $HOME 

Beide Anweisungen setzen Ihr Home-Verzeichnis von selbst in eine Zeile.

Einzelheiten finden Sie unter bash Tilde Expansion .

Der obige Vergleich ist zwar gültig, aber möglicherweise irreführend: Die Tilde funktioniert nur während der Shell-Interpretation in Skripten und in der Befehlszeile. Die Umgebungsvariable $ HOME funktioniert jedoch überall dort, wo eine Umgebungsvariable funktioniert. Mei vor 13 Jahren 8
36
Wuffers

Das "Squiggly" wird Tilde genannt. Es wird verwendet, um auf Ihr Home-Verzeichnis zu verweisen, das normalerweise unter Linux verwendet wird /home/username. Sie wird auch in der $HOMEUmgebungsvariablen gespeichert . Die Erweiterung ~auf den Speicherort des Home-Verzeichnisses ist Aufgabe der Shell (wie zsh oder bash) oder des Dateimanagers (wie Nautilus) und nicht des Dateisystems oder des Betriebssystems.

Sie können dies auch verwenden, um auf das Heimatverzeichnis eines anderen Benutzers zu verweisen. Wenn der Benutzername des anderen Benutzers beispielsweise lautet bob, können Sie auf das Heimatverzeichnis von verweisen ~bob, das erweitert wird /home/bob/.

In dem ersten Beispiel, das Sie angegeben haben, wird die Variable serviceauf " ~home" gesetzt. Dies ist äquivalent zu service=/home/usernameoder service=$HOME.

Das zweite Beispiel kopiert die Datei ~/Desktop/Service$version.tgz(oder /home/username/Desktop/Service$version.tgz) nach /home/username. Dieser Befehl entspricht:

mv ~/Desktop/Service$version.tgz ~ 

oder

mv ~/Desktop/Service$version.tgz $HOME 

oder

mv ~/Desktop/Service$version.tgz /home/username/ 

Beim dritten wird das aktuelle Arbeitsverzeichnis ( $PWD) in geändert /home/username/. Das ist äquivalent zu:

cd /home/username/ 

oder

cd $HOME 
Eine weitere Sache, die Sie beachten sollten: Die Erweiterung von Tilde ist die Aufgabe der Shell oder des Dateimanagers. Sie ist nicht vom Linux-Dateisystem selbst abhängig. Daher funktioniert es in Konfigurationsdateien oft nicht und das Hinzufügen von Anführungszeichen um "~" stoppt seine Erweiterung in der Shell. Grumbel vor 13 Jahren 3
Es sollte auch beachtet werden, dass Home-Verzeichnisse nicht unbedingt in / home liegen, daher sollte nicht davon ausgegangen werden, dass sich ~ nach / home / [mein Benutzername] oder ~ bob nach / home / bob erweitert darkliquid vor 13 Jahren 3
Danke für den Vorschlag @Grumbel. Und danke @PriceChild für das Hinzufügen von @ darkliquids Vorschlag! Wuffers vor 13 Jahren 0
10
nomaderWhat

In # 1 und # 2: ~ ist ~ Ihr Heimatverzeichnis. Wenn Sie also qwerty sind, handelt es sich wahrscheinlich um das Verzeichnis / home / qwerty. Also versuchen Sie das ls ~zu sehen.

Für # 1: Es sieht für mich so aus, als würde der Variablendienst als Ihr Heimatverzeichnis definiert.

Das heißt, nachdem # 2 die TGZ-Datei aus dem Desktop-Unterverzeichnis in Ihr Home-Verzeichnis verschoben hat, wechselt # 3 in das Home-Verzeichnis.

5
James

Es sieht so aus, als würden die Befehle Folgendes tun.

  1. Weisen Sie Ihrem Heimatordner eine Variable namens service zu, zum Beispiel:

    /home/user 
  2. Die Datei wird von Ihrem Desktop auf die oberste Ebene Ihres Basisverzeichnisses verschoben. Beispiel:

    /home/user/Desktop/Service$version.tgz $service 
  3. Das Skript ändert dann das Verzeichnis auf die oberste Ebene des Basisverzeichnisses.

Das Skript muss also lediglich den Desktop bereinigen, indem die Datei /home/userstattdessen in den Ordner verschoben wird.

1
Rooke

Ich füge hier hinzu, dass ~ user auch das Home-Verzeichnis von [user] erweitert, sodass es nicht nur eine Verknüpfung für Ihr eigenes Home-Verzeichnis ist.

Z.B:

[guy@abox anotherdir]$ cd ~  [guy@abox ~]$ pwd /home/guy [guy@abox ~]$ cd ~john [guy@abox john]$ pwd /home/john