Ich habe zwei Instanzen davon und ich frage mich, was jeder tut:
service=~
mv ~/Desktop/Service$version.tgz $service
Was macht der kleine Schnörkel ~
?
Was würde dann danach cd $service
tun?
Ich habe zwei Instanzen davon und ich frage mich, was jeder tut:
service=~
mv ~/Desktop/Service$version.tgz $service
Was macht der kleine Schnörkel ~
?
Was würde dann danach cd $service
tun?
Antworten:
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.
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 $HOME
Umgebungsvariablen 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 service
auf ~
, sodass sie Ihrem Ausgangsverzeichnis entspricht. Dies entspricht service=/home/username
oder 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
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.
Es sieht so aus, als ob die Befehle Folgendes ausführen.
Weisen Sie Ihrem Home-Ordner eine Variable namens service zu, zum Beispiel:
/home/user
Die Datei wird von Ihrem Desktop auf die oberste Ebene Ihres Home-Verzeichnisses verschoben. Beispiel:
/home/user/Desktop/Service$version.tgz $service
Das Skript ändert dann das Verzeichnis in die oberste Ebene des Basisverzeichnisses.
Das Skript bereinigt lediglich Ihren Desktop, indem Sie die Datei /home/user
stattdessen in Ihren Ordner verschieben.