要在通常使用的unixy环境中截断文件:
$ > file
在bash(也是破折号)中,文件被截断(或者如果它不存在则创建),然后提示返回。在zsh中,文件被截断/创建,但它会挂起。您必须Ctrl-C
才能再次使用提示。
重定向非空输出可以正常工作:
zsh$ cat nonempty.file > file
zsh$
是否预期会出现这种情况?是zsh 错误?
答案 0 :(得分:11)
我不是真正的zsh用户,但似乎zsh中的> file
与bash中的cat > file
相同。要在zsh中创建新文件或将其截断,请使用: > file
。这也适用于bash。
在zsh手册中找到了这个:
没有命令的重定向:
当一个简单的命令由一个或多个重定向运算符和零个或多个参数赋值组成时,但没有命令名称,
zsh
可以通过多种方式运行如果未设置参数
NULLCMD
或设置了选项CSH_NULLCMD
,则会导致错误。这是csh
行为 模拟CSH_NULLCMD
时默认设置为csh
。如果设置了选项
SH_NULLCMD
,则会将内置的:
作为具有给定重定向的命令插入。这是 模拟sh
或ksh
时的默认设置。否则,如果设置了参数
NULLCMD
,则其值将用作具有给定重定向的命令。如果两者都有 设置NULLCMD
和READNULLCMD
,然后使用后者的值而不是前者的值 重定向是一种输入。NULLCMD
的默认设置为cat
,READNULLCMD
的默认设置为more
。
在我的系统上,默认为:
$ echo $ZSH_VERSION
4.3.10
$ echo $NULLCMD
cat
$ echo $READNULLCMD
/usr/bin/pager
$