我经常看到使用以下命令的脚本选项如if [ -f some_file ]
检查是否some_file
是一个文件。我的理解很模糊旗帜,但是有人能给我一个很好的解释吗?其他人喜欢-p
,,-s
我不知道它们是什么,也无法找到关于它们的好的资源,因为单个谷歌搜索不会产生任何好的结果。
答案1
不管你信不信,[
这实际上是test
命令的另一个名称。
您可以查看man
页面:
man test
test
在大多数 shell 中也是一个内置 shell(并且它优先于外部 shell):
% type -a \[
[ is a shell builtin
[ is /usr/bin/[
% type -a test
test is a shell builtin
test is /usr/bin/test
中bash
还可以看到help test
。
答案2
最好的解决方案是 bash 手册,是的,简单的man bash
.
要查找手册中的确切条目,请执行以下命令:
LESS=+/'^CONDITIONAL EXPRESSIONS' man bash
在 bash shell 中工作时,这也有帮助:
help test