Was ist die allgemeine Regel für die alleinige Verwendung von `> foo.txt` und `< foo.txt` in Bash und Zsh?

Was ist die allgemeine Regel für die alleinige Verwendung von `> foo.txt` und `< foo.txt` in Bash und Zsh?

Sie sind in nicht gültig csh. Was ist die allgemeine Regel für ihre Verwendung in bashund zsh?

Antwort1

Bei Bash führen Umleitungen ohne Befehl einfach die Umleitungen aus und schließen sie dann:

  • < foo.txtallein als Befehlszeile öffnet die Datei foo.txtzum Lesen und schließt sie dann.
  • > foo.txtöffnet die Datei foo.txtzum Schreiben, erstellt sie bei Bedarf, kürzt sie und schließt sie anschließend. Schnelle Möglichkeit zum Leeren einer Datei.

Mit zsh können Umleitungen ohne einen Befehl ausgeführt werden NULLCMDoder READNULLCMD.

  • READNULLCMD(oder NULLCMD, wenn „READNULLCMD“ nicht gesetzt ist) für Umleitungen von stdin:

    % echo foo > foo.txt
    % READNULLCMD=nl
    % < foo.txt
         1  foo
    
  • NULLCMDfür Umleitungen von stdout:

    % NULLCMD='ls'
    % > foo.txt   # runs $NULLCMD
    % < foo.txt   # runs $READNULLCMD, showing the output of `NULLCMD` run previously
         1  Applications
         2  Desktop
         3  Documents
         4  Downloads
    

SehenZsh 7.3, Umleitungen ohne Befehlfür Details:

Wenn ein einfacher Befehl aus einem oder mehreren Umleitungsoperatoren und null oder mehr Parameterzuweisungen, aber keinem Befehlsnamen besteht, kann sich zsh auf verschiedene Arten verhalten.

Wenn der Parameter NULLCMDnicht gesetzt ist oder die Option CSH_NULLCMDgesetzt ist, wird ein Fehler verursacht. Dies ist dercshVerhalten und CSH_NULLCMD ist standardmäßig eingestellt bei der Emulationcsh.

Wenn die Option SH_NULLCMDgesetzt ist, :wird das Builtin als Befehl mit den angegebenen Umleitungen eingefügt. Dies ist die Standardeinstellung bei der Emulation vonSchoderksh.

Andernfalls NULLCMDwird der Wert des Parameters, wenn er gesetzt ist, als Befehl mit den angegebenen Umleitungen verwendet. Wenn sowohl NULLCMDals auch READNULLCMDgesetzt sind, wird der Wert des letzteren anstelle des ersteren verwendet, wenn die Umleitung eine Eingabe ist. Der Standardwert für NULLCMDist ' cat' und für READNULLCMDist ' more'. Somit

< file

zeigt den Inhalt der Datei auf der Standardausgabe an, mit Seitennummerierung, wenn es sich um ein Terminal handelt. NULLCMDund READNULLCMDkann sich auf Shell-Funktionen beziehen.

verwandte Informationen