it-swarm.com.de

Wie funktioniert ~ /?

Im Terminal besteht eine Möglichkeit zur Referenzierung des Zuhauses in der Verwendung von ~/. Ich verstehe nicht, wie das funktioniert, weil die Ausgabe von file ~/ ist:

/home/admin/: directory

wenn Sie ~/ ausführen, erhalten Sie:

-bash: /home/admin/: Is a directory

also, was konvertiert ~/ in /home/admin?

~/ scheint auch in /bin/dash zu funktionieren, daher weiß ich auch, dass es nicht bash-spezifisch ist.

10
NerdOfLinux

Dies ist Tilde-Erweiterung .

Die Tilde-Erweiterung wird von POSIX (siehe erste verknüpfte Seite ) benötigt und erscheint in allen modernen Bourne-artigen Shells . Dazu gehören die beliebten Shells bash, ksh93 und zsh, aber auch minimalistischere Shells wie mksh, dash und busybox ash.

In der Praxis unterscheiden sich verschiedene POSIX-kompatible Shells manchmal in den genauen Details der Tilde-Erweiterung, sowohl in dem nicht spezifizierten Fall, dass HOME verwendet würde, aber nicht gesetzt oder leer ist, als auch um die Verwendung der ~ -Notation zu ermöglichen für andere Zwecke als zum Erweitern der Home-Verzeichnisse der Benutzer. Zum Beispiel bietet Tilde-Erweiterung in bash auch eine Kurzform für den Zugriff auf die Werte der Variablen PWD und OLDPWD mit ~- und ~+.

In den typischen Fällen funktioniert dies jedoch für alle Bourne-Shells in etwa gleich. Dies sind typische Fälle (aber beachten Sie, dass diese Art der Trennung nicht offiziell ist, sondern nur meine Art, das Material zu präsentieren):

  • ~ oder ~/ werden automatisch in Ihr Ausgangsverzeichnis verschoben.
  • ~/ gefolgt von weiteren Pfadkomponenten wird zu einem Pfad erweitert, der in Ihrem Ausgangsverzeichnis beginnt.
  • ~username oder ~username/ selbst wird in das Ausgangsverzeichnis des Benutzers mit dem Benutzernamen username erweitert.
  • ~username/ gefolgt von weiteren Pfadkomponenten wird zu einem Pfad erweitert, der im Ausgangsverzeichnis des Benutzers beginnt, dessen Benutzername username ist.
15
Eliah Kagan

_~_ ist die Abkürzung für _$HOME_

~ ist eine 'Kurzform' zum Schreiben von _$HOME_, mit anderen Worten, Ihres Heimatverzeichnisses. Es funktioniert in Shells (z. B. bash) und wird als "Tilde-Erweiterung" bezeichnet.

Wenn Sie einen abschließenden Schrägstrich hinzufügen, wird davon ausgegangen, dass es sich um ein Verzeichnis handelt.

Beispiele:

_$ ls -d ~/
/home/sudodus/
$ ls -d ~
/home/sudodus
$ ls -d $HOME
/home/sudodus

$ Sudo -i
[Sudo] lösenord för sudodus: 
# ls -d ~/
/root/
# ls -d ~
/root
# exit
logout

$ ls xournal.png
xournal.png

$ LANG=C ls xournal.png/
ls: cannot access 'xournal.png/': Not a directory
_
5
sudodus