Was macht der kleine Kringel in Linux?


25

Ich habe zwei Instanzen davon und ich frage mich, was jeder tut:

  1. service=~

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

Was macht der kleine Schnörkel ~?

Was würde dann danach cd $servicetun?


3
das verdient so ein tag [squiggly]
cregox

3
Tilde ist Shell-spezifisch und nicht Linux-spezifisch.
David Allan Finch

@ Kawas: Fragen Sie, und Sie erhalten.
Dave Sherohman

@ Dave danke! Aber anscheinend hasste Chris es. Na
ja

Ist dies wirklich das erste Mal, dass dies gefragt wurde? Ich habe erwartet, dass dies als Duplikat geschlossen wird.
Erik B

Antworten:


45

Das schnörkellose Ding heißt "Tilde".

Es wird zu Ihrem Home-Verzeichnis erweitert.

Versuchen

echo ~
echo $HOME

Beide Anweisungen setzen Ihr Home-Verzeichnis für sich in eine Zeile.

Siehe bash Tilde Expansion für Details.


8
Der Vergleich oben ist zwar gültig, aber möglicherweise irreführend: Die Tilde funktioniert nur bei der Shell-Interpretation in Skripten und in der Befehlszeile. Die Umgebungsvariable $ HOME funktioniert jedoch überall dort, wo eine Umgebungsvariable funktioniert - das sind viel mehr Orte.
Mei

36

Der "Schnörkel" heißt eine Tilde. Es wird verwendet, um auf Ihr Heimverzeichnis zu verweisen, das unter Linux normalerweise ist /home/username . Es wird auch in der $HOMEUmgebungsvariablen gespeichert . Das Erweitern des ~zu dem Speicherort des Ausgangsverzeichnisses ist die Aufgabe der Shell (wie zsh oder bash) oder des Dateimanagers (wie Nautilus) und nicht des Dateisystems oder des Betriebssystems selbst.

Sie können hiermit auch auf das Basisverzeichnis eines anderen Benutzers verweisen. Wenn der Benutzername des anderen Benutzers beispielsweise "" ist bob, können Sie auf dessen Ausgangsverzeichnis mit verweisen ~bob, auf das erweitert wird /home/bob/.

Das erste Beispiel, das Sie angegeben haben, setzt die Variable serviceauf ~, sodass sie Ihrem Ausgangsverzeichnis entspricht. Dies entspricht 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/

Die dritte Option ändert das aktuelle Arbeitsverzeichnis ( $PWD) in /home/username/. Dies ist äquivalent zu:

cd /home/username/

oder

cd $HOME

3
Beachten Sie außerdem, dass die Tilde-Erweiterung Aufgabe der Shell oder des Dateimanagers ist und nicht vom Linux-Dateisystem selbst abhängt. Aus diesem Grund funktioniert es in Konfigurationsdateien oft nicht. Wenn Sie "~" in Anführungszeichen setzen, wird die Erweiterung in der Shell gestoppt.
Grumbel

3
Es sollte auch beachtet werden , dass die Home - Verzeichnisse nicht unbedingt in / home liegen , damit es nicht , dass ~ ERWEITERT / home angenommen werden sollte / [meinen Benutzername] oder dass ~ bob ERWEITERT / home / bob
darkliquid

Danke für den Vorschlag @Grumbel. Und danke @PriceChild, dass Sie den Vorschlag von @ darkliquid hinzugefügt haben!
Wuffers

10

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

Zu # 1: Für mich sieht es so aus, als würde der variable Dienst als Ihr Ausgangsverzeichnis 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

Es sieht so aus, als ob die Befehle Folgendes ausführen.

  1. Weisen Sie Ihrem Home-Ordner eine Variable namens service zu, zum Beispiel:

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

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

Das Skript bereinigt lediglich Ihren Desktop, indem Sie die Datei /home/userstattdessen in Ihren Ordner verschieben.


1

Ich füge hier hinzu, dass ~ user auch zum Ausgangsverzeichnis von [user] erweitert wird, sodass es nicht nur eine Verknüpfung für Ihr eigenes Ausgangsverzeichnis ist.

Z.B:

[guy@abox anotherdir]$ cd ~ 
[guy@abox ~]$ pwd
/home/guy
[guy@abox ~]$ cd ~john
[guy@abox john]$ pwd
/home/john
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.