Bash/Tildeexpansion: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 3: Zeile 3:
* Betrachtet werden alle der Tilde folgenden Zeichen bis zum ersten Schrägstrich (Slash).  
* Betrachtet werden alle der Tilde folgenden Zeichen bis zum ersten Schrägstrich (Slash).  
* Ergibt dies eine gültige Benutzerkennung, so expandiert der Ausdruck zum Heimatverzeichnis dieses Benutzers.  
* Ergibt dies eine gültige Benutzerkennung, so expandiert der Ausdruck zum Heimatverzeichnis dieses Benutzers.  
 
* Folgt der Tilde unmittelbar der Schrägstrich, wird der Ausdruck durch den Inhalt der Variablen HOME ersetzt
Folgt der Tilde unmittelbar der Schrägstrich, wird der Ausdruck durch den Inhalt der Variablen HOME ersetzt; ist diese nicht gesetzt, wird das Heimatverzeichnis des aktuellen Benutzers angenommen:
* ist diese nicht gesetzt, wird das Heimatverzeichnis des aktuellen Benutzers angenommen
; Beispiel
  $ var=~
  $ var=~
  $ echo $var
  $ echo $var
Zeile 12: Zeile 13:
  $ /root/
  $ /root/


Wenn ein ''Wort'' mit einer unmaskierten tilde Zeichen ("~") beninnt,<span > </span>
Alle Zeichen bis zum ersten nicht in Anführungszeichen gesetzten Schrägstrich (oder alle Zeichen, wenn es keinen nicht in Anführungszeichen gesetzten Schrägstrich gibt) werden als ''Tilde-Präfix'' betrachtet.
* Wenn keines der Zeichen im Tilde-Präfix in Anführungszeichen steht, werden die Zeichen im Tilde-Präfix, die auf die Tilde folgen, als möglicher Anmeldename behandelt.


All of the characters up to the first unquoted slash (or all characters, if there is no unquoted slash) are considered a ''tilde-prefix''.  
Ist dieser Anmeldename eine Nullzeichenkette, wird die Tilde durch den Wert der Shell-Variablen HOME ersetzt.  
* If none of the characters in the tilde-prefix are quoted, the characters in the tilde-prefix following the tilde are treated as a possible login name.  
* Wenn HOME nicht gesetzt ist, wird stattdessen das Heimatverzeichnis des Benutzers, der die Shell ausführt, verwendet.
* Andernfalls wird das Tilde-Präfix durch das Home-Verzeichnis ersetzt, das dem angegebenen Login-Namen zugeordnet ist.


If this login name is the null string, the tilde is replaced with the value of the HOME shell variable.  
Wenn das Tilde-Präfix "~+" ist, ersetzt der Wert der Shell-Variablen PWD das Tilde-Präfix.  
* If HOME is unset, the home directory of the user executing the shell is substituted instead.
* Ist das Tilde-Präfix "~-", wird der Wert der Shell-Variablen OLDPWD, sofern sie gesetzt ist, ersetzt.
* Otherwise, the tilde-prefix is replaced with the home directory associated with the specified login name.


If the tilde-prefix is "~+", the value of the shell variable PWD replaces the tilde-prefix.  
Wenn die Zeichen nach der Tilde im Tilde-Präfix aus einer Zahl N bestehen, der wahlweise ein "+" oder ein "-" vorangestellt ist, wird das Tilde-Präfix durch das entsprechende Element aus dem Verzeichnisstapel ersetzt, wie es von dem mit den Zeichen nach der Tilde im Tilde-Präfix als Argument aufgerufenen dirs built-in angezeigt würde.  
* If the tilde-prefix is "~-", the value of the shell variable OLDPWD, if it is set, is substituted.
* Wenn der Tilde-Präfix ohne Tilde aus einer Zahl ohne führendes "+" oder "-" besteht, wird "+" angenommen.


If the characters following the tilde in the tilde-prefix consist of a number N, optionally prefixed by a "+" or a "-", the tilde-prefix is replaced with the corresponding element from the directory stack, as it would be displayed by the dirs built-in invoked with the characters following tilde in the tilde-prefix as an argument.  
Wenn der Anmeldename ungültig ist oder die Tilde-Expansion fehlschlägt, wird das Wort unverändert gelassen.
* If the tilde-prefix, without the tilde, consists of a number without a leading "+" or "-", "+" is assumed.
* Jede Variablenzuweisung wird auf nicht in Anführungszeichen gesetzte Tilde-Präfixe unmittelbar nach einem ":" oder "=" geprüft.  
* In diesen Fällen wird ebenfalls eine Tilde-Expansion durchgeführt.  


If the login name is invalid, or the tilde expansion fails, the word is left unchanged.
Folglich kann man Dateinamen mit Tilden in Zuweisungen an PATH, MAILPATH und CDPATH verwenden, und die Shell weist den erweiterten Wert zu.
* Each variable assignment is checked for unquoted tilde-prefixes immediately following a ":" or "=".
* In these cases, tilde expansion is also performed.  


Consequently, one may use file names with tildes in assignments to PATH, MAILPATH, and CDPATH, and the shell assigns the expanded value.
; Beispiel
$ export PATH="$PATH:~/testdir"


==== Beispiel ====
~/testdir wird zu $HOME/testdir erweitert.
$ export PATH="$PATH:~/testdir"


~/testdir will be expanded to $HOME/testdir, so if $HOME is /var/home/dirkwagner, the directory /var/home/dirkwagner/testdir will be added to the content of the PATH variable.
Wenn $HOME also /var/home/dirkwagner ist, wird das Verzeichnis /var/home/dirkwagner/testdir zum Inhalt der PATH-Variablen hinzugefügt.


[[Kategorie:Bash:Expansionen]]
[[Kategorie:Bash:Expansionen]]

Version vom 30. Juli 2022, 11:24 Uhr

Tildeexpansion

Beginnt der Wert mit einer unmaskierten Tilde (~), wird versucht, diese zu substituieren.

  • Betrachtet werden alle der Tilde folgenden Zeichen bis zum ersten Schrägstrich (Slash).
  • Ergibt dies eine gültige Benutzerkennung, so expandiert der Ausdruck zum Heimatverzeichnis dieses Benutzers.
  • Folgt der Tilde unmittelbar der Schrägstrich, wird der Ausdruck durch den Inhalt der Variablen HOME ersetzt
  • ist diese nicht gesetzt, wird das Heimatverzeichnis des aktuellen Benutzers angenommen
Beispiel
$ var=~
$ echo $var
$ /home/user
$ var=~root/
$ echo $var
$ /root/

Alle Zeichen bis zum ersten nicht in Anführungszeichen gesetzten Schrägstrich (oder alle Zeichen, wenn es keinen nicht in Anführungszeichen gesetzten Schrägstrich gibt) werden als Tilde-Präfix betrachtet.

  • Wenn keines der Zeichen im Tilde-Präfix in Anführungszeichen steht, werden die Zeichen im Tilde-Präfix, die auf die Tilde folgen, als möglicher Anmeldename behandelt.

Ist dieser Anmeldename eine Nullzeichenkette, wird die Tilde durch den Wert der Shell-Variablen HOME ersetzt.

  • Wenn HOME nicht gesetzt ist, wird stattdessen das Heimatverzeichnis des Benutzers, der die Shell ausführt, verwendet.
  • Andernfalls wird das Tilde-Präfix durch das Home-Verzeichnis ersetzt, das dem angegebenen Login-Namen zugeordnet ist.

Wenn das Tilde-Präfix "~+" ist, ersetzt der Wert der Shell-Variablen PWD das Tilde-Präfix.

  • Ist das Tilde-Präfix "~-", wird der Wert der Shell-Variablen OLDPWD, sofern sie gesetzt ist, ersetzt.

Wenn die Zeichen nach der Tilde im Tilde-Präfix aus einer Zahl N bestehen, der wahlweise ein "+" oder ein "-" vorangestellt ist, wird das Tilde-Präfix durch das entsprechende Element aus dem Verzeichnisstapel ersetzt, wie es von dem mit den Zeichen nach der Tilde im Tilde-Präfix als Argument aufgerufenen dirs built-in angezeigt würde.

  • Wenn der Tilde-Präfix ohne Tilde aus einer Zahl ohne führendes "+" oder "-" besteht, wird "+" angenommen.

Wenn der Anmeldename ungültig ist oder die Tilde-Expansion fehlschlägt, wird das Wort unverändert gelassen.

  • Jede Variablenzuweisung wird auf nicht in Anführungszeichen gesetzte Tilde-Präfixe unmittelbar nach einem ":" oder "=" geprüft.
  • In diesen Fällen wird ebenfalls eine Tilde-Expansion durchgeführt.

Folglich kann man Dateinamen mit Tilden in Zuweisungen an PATH, MAILPATH und CDPATH verwenden, und die Shell weist den erweiterten Wert zu.

Beispiel
$ export PATH="$PATH:~/testdir"

~/testdir wird zu $HOME/testdir erweitert.

Wenn $HOME also /var/home/dirkwagner ist, wird das Verzeichnis /var/home/dirkwagner/testdir zum Inhalt der PATH-Variablen hinzugefügt.