Sie sind in nicht gültig csh
. Was ist die allgemeine Regel für ihre Verwendung in bash
und zsh
?
Antwort1
Bei Bash führen Umleitungen ohne Befehl einfach die Umleitungen aus und schließen sie dann:
< foo.txt
allein als Befehlszeile öffnet die Dateifoo.txt
zum Lesen und schließt sie dann.> foo.txt
öffnet die Dateifoo.txt
zum 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 NULLCMD
oder READNULLCMD
.
READNULLCMD
(oderNULLCMD
, wenn „READNULLCMD“ nicht gesetzt ist) für Umleitungen von stdin:% echo foo > foo.txt % READNULLCMD=nl % < foo.txt 1 foo
NULLCMD
fü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
NULLCMD
nicht gesetzt ist oder die OptionCSH_NULLCMD
gesetzt ist, wird ein Fehler verursacht. Dies ist dercshVerhalten undCSH_NULLCMD
ist standardmäßig eingestellt bei der Emulationcsh.Wenn die Option
SH_NULLCMD
gesetzt ist,:
wird das Builtin als Befehl mit den angegebenen Umleitungen eingefügt. Dies ist die Standardeinstellung bei der Emulation vonSchoderksh.Andernfalls
NULLCMD
wird der Wert des Parameters, wenn er gesetzt ist, als Befehl mit den angegebenen Umleitungen verwendet. Wenn sowohlNULLCMD
als auchREADNULLCMD
gesetzt sind, wird der Wert des letzteren anstelle des ersteren verwendet, wenn die Umleitung eine Eingabe ist. Der Standardwert fürNULLCMD
ist 'cat
' und fürREADNULLCMD
ist 'more
'. Somit< file
zeigt den Inhalt der Datei auf der Standardausgabe an, mit Seitennummerierung, wenn es sich um ein Terminal handelt.
NULLCMD
undREADNULLCMD
kann sich auf Shell-Funktionen beziehen.