几乎每一本 Linux / Shell 入门的书中都会讲到如何新建一个空文件,那就是 touch 命令:
touch file_name
实际上在 bash 中有更高效的方法(其实就是少敲 4 个字符,😄):
> file_name
但是,如果在 zsh 中尝试执行以上命令,会发现 zsh 陷入到一个进程中不会退出,直到按 Ctrl-d为止。这是因为在 zsh 中执行一个只有IO重定向而没有命令名字的 command line 时,zsh 会使用变量 NULLCMD 的值作为这个 command line 的命令名字,而 NULLCMD 的默认值为:cat,就是说当在 zsh 中执行 > file_name 时,实际上执行的是 cat > file_name,如果要获得和 bash 中一样的体验,可以将 NULLCMD 的值修改为 ::
export NULLCMD=:
可以将以上代码加入到 zsh 配置文件中。
类似的,当在 zsh 中执行 < file_name 这条命令的时候,zsh 会使用变量 READNULLCMD 的值作为这行 command line 的命令名字, READNULLCMD 的默认值为:more。
PS:
(1). touch 命令
实际上 touch命令的主要功能并不是用来创建一个新的空文件。它的手册(man 1 touch)中的说明是:
change file access and modification times
(2). : 命令
是的,: 是一个命令的名字,bash 和 zsh 都内建了这个命令,它的功能非常简单,就是:什么都不做,退出状态码为 0。










网友评论