![在 bash 和 zsh 中单独使用 `> foo.txt` 和 `< foo.txt` 的一般规则是什么?](https://linux22.com/image/169295/%E5%9C%A8%20bash%20%E5%92%8C%20zsh%20%E4%B8%AD%E5%8D%95%E7%8B%AC%E4%BD%BF%E7%94%A8%20%60%3E%20foo.txt%60%20%E5%92%8C%20%60%3C%20foo.txt%60%20%E7%9A%84%E4%B8%80%E8%88%AC%E8%A7%84%E5%88%99%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
它们在 中无效csh
。在bash
and中使用它们的一般规则是什么zsh
?
答案1
使用 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
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
看Zsh 7.3,无需命令的重定向详情:
当一个简单命令由一个或多个重定向运算符和零个或多个参数分配组成,但没有命令名称时,zsh 可以有多种行为方式。
NULLCMD
如果未设置该参数或CSH_NULLCMD
设置了该选项,则会导致错误。这是西施行为并CSH_NULLCMD
在模拟时默认设置西施。如果
SH_NULLCMD
设置了该选项,则内置命令:
将作为具有给定重定向的命令插入。这是模拟时的默认值嘘或者克什。否则,如果设置了该参数
NULLCMD
,则其值将用作具有给定重定向的命令。如果 和 都NULLCMD
被READNULLCMD
设置,那么当重定向是输入时,将使用后者的值而不是前者的值。的默认NULLCMD
值为“cat
”,默认值为READNULLCMD
“more
”。因此< file
在标准输出上显示文件的内容,如果是终端,则进行分页。
NULLCMD
并READNULLCMD
可能引用 shell 函数。