在 bash 和 zsh 中单独使用 `> foo.txt` 和 `< foo.txt` 的一般规则是什么?

在 bash 和 zsh 中单独使用 `> foo.txt` 和 `< foo.txt` 的一般规则是什么?

它们在 中无效csh。在bashand中使用它们的一般规则是什么zsh

答案1

使用 bash,无需命令的重定向只需执行重定向,然后关闭它们:

  • < foo.txt本身作为命令行将打开文件foo.txt进行读取,然后将其关闭。
  • > foo.txt将打开文件foo.txt进行写入,必要时创建文件并截断​​它,然后关闭它。清空文件的快速方法。

使用 zsh,无需命令运行即可重定向NULLCMDREADNULLCMD.

  • 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,则其值将用作具有给定重定向的命令。如果 和 都NULLCMDREADNULLCMD设置,那么当重定向是输入时,将使用后者的值而不是前者的值。的默认NULLCMD值为“ cat”,默认值为READNULLCMDmore”。因此

< file

在标准输出上显示文件的内容,如果是终端,则进行分页。NULLCMDREADNULLCMD可能引用 shell 函数。

相关内容