我不小心运行less
了一个空文件名,我预计会失败,但令我惊讶的是,它打印了一些环境变量:
$ less -XE ""
export LESSOPEN="| /usr/bin/lesspipe %s";
export LESSCLOSE="/usr/bin/lesspipe %s %s";
(-XE
基本上使它表现得像cat
。)
cat
,另一方面,失败:
$ cat ""
cat: '': No such file or directory
如果您完全省略文件名,则会less
出错:
$ less -XE
Missing filename ("less --help" for help)
为什么这样less
做?我只能想象这是有问题的,因为如果您的代码中存在导致空文件名的错误,您将获得虚假输出。(比如,说,less "$(which nonexistent-script)"
。)
当我们在这里时,为什么它会打印那些环境变量?它们来自我的环境吗?它们是相同的:
$ declare -p LESSOPEN LESSCLOSE
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
我检查man less
过,但似乎没有明确记录文件名参数。其他提及它似乎与这种行为无关。我还检查了less
常见问题解答。