深度分析LINUX test命令
第一章:相遇——那个隐藏在方括号里的“侦探”
各位脚本玩家、运维侠客们,请想象一个场景:你写了一个自动部署脚本,它需要先检查一个关键配置文件是否存在,如果存在才继续执行。你会怎么做?
你大概率会写出这样的代码:
if [ -f /etc/super-app/config.conf ]; then
echo "配置文件存在,开始部署!"
# ... 部署操作
fi
是不是非常眼熟?但你是否曾有过一丝好奇:那个神秘的方括号 [ ] 到底是什么?它为什么能做出判断?为什么括号两边必须要有空格?
现在,揭晓答案:[ 本质上是一个命令! 它其实是 test 命令的另一种形式。是的,你没看错。在Linux中,test 和 [ 是同一个东西,只是 [ 命令要求它的最后一个参数必须是 ],这是一种语法上的优雅伪装。
所以,上面那段代码完全可以写成:
if test -f /etc/super-app/config.conf; then
echo "配置文件存在,开始部署!"
fi
两种写法完全等效。[ ] 更像是给 test 命令穿上了“吉利服”,让它更好地融入 if、while 这些语句中,看起来更符合我们的逻辑直觉。本章,我们就将揭开这位“伪装者”的全部技能。
第二章:办案手册——test侦探的三大侦查领域
test侦探的业务能力主要覆盖三大领域:文件侦查、字符串审讯和数值比对。它的办案手册(man page)里写满了各种“暗号”(参数)。
1. 文件侦查(File Investigations)
这是test命令最常用的技能之一。它能告诉你关于文件的一切你想知道的信息。
-e FILE:侦探基础问话:“元芳(文件),你存在吗?” 只要文件存在(无论类型),就返回真。
- bash复制下载test -e /any/path/file.txt && echo "存在!" || echo "不存在!"
-f FILE:甄别身份:“你是正规军(普通文件)吗?” 只有是普通文件(非目录、链接等)才返回真。
- bash复制下载[ -f /home/u

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



