non*_*ity 1 bash zsh io-redirection
它们在 中无效csh
。在bash
and中使用它们的一般规则是zsh
什么?
使用 bash,没有命令的重定向只执行重定向然后关闭它们:
< foo.txt
本身作为命令行将打开文件foo.txt
进行读取,然后关闭它。> foo.txt
将打开文件foo.txt
进行写入,必要时创建它并截断它,然后关闭它。清空文件的快速方法。使用 zsh,无需命令即可重定向运行NULLCMD
或READNULLCMD
.
READNULLCMD
(或者NULLCMD
,如果 `READNULLCMD 未设置)用于标准输入的重定向:
% echo foo > foo.txt
% READNULLCMD=nl
% < foo.txt
1 foo
Run Code Online (Sandbox Code Playgroud)NULLCMD
对于标准输出的重定向:
% 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
Run Code Online (Sandbox Code Playgroud)有关详细信息,请参阅Zsh 7.3,无命令的重定向:
当一个简单的命令包含一个或多个重定向运算符和零个或多个参数赋值,但没有命令名称时,zsh 可以以多种方式运行。
如果
NULLCMD
未设置参数或设置了选项CSH_NULLCMD
,则会导致错误。这是csh行为,CSH_NULLCMD
在模拟csh时默认设置。如果
SH_NULLCMD
设置了该选项,则内置:
命令将作为具有给定重定向的命令插入。这是模拟sh或ksh时的默认设置。否则,如果
NULLCMD
设置了该参数,则其值将用作具有给定重定向的命令。如果同时NULLCMD
和READNULLCMD
被设置,然后后者的值将被用来代替前者的时重定向为输入。默认为NULLCMD
“cat
”,默认为READNULLCMD
“more
”。因此Run Code Online (Sandbox Code Playgroud)< file
在标准输出上显示文件的内容,如果是终端则使用分页。
NULLCMD
并且READNULLCMD
可以参考shell函数。