最推荐用[ -e "路径" ]判断路径是否存在,它不区分文件类型且不受权限影响;需加双引号防空格错误;若需按类型判断则用-f(普通文件)、-d(目录)、-l(符号链接)。

最直接可靠的方式是用 [ -e "路径" ] 判断——它只关心“这个路径是否真实存在”,不管它是普通文件、目录还是符号链接。
用 -e 判断是否存在(推荐通用写法)
这是最稳妥的判断方式,适用于所有类型的目标:
-
[ -e "/tmp/data.log" ]→ 存在返回真(退出码 0),不存在返回假 - 路径变量必须加双引号,避免含空格或为空时出错,例如:
[ -e "$file_path" ] - 常配合 if 使用:
if [ -e "/etc/hosts" ]; then echo "存在"; fi
按类型精准判断(需要区分用途)
如果明确知道要检查的是文件、目录还是软链接,可用更具体的测试符:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
-f:仅当是**普通文件**且存在才为真(排除目录、链接) -
-d:仅当是**目录**且存在才为真 -
-L或-h:仅当是**符号链接**且存在才为真 - 注意:
file_exists类逻辑(如 PHP)对软链接默认追踪目标;而 shell 的-e只看链接本身是否存在
常见误操作和避坑点
几个容易出错的地方,实际脚本中高频发生:
- 漏掉空格:
[ -e$file ]错误,必须写成[ -e "$file" ] - 用
-f检查目录 → 永远失败,应改用-d - 路径未转义或含变量未引号包裹,遇到空格或特殊字符直接报语法错误
- 权限不足导致
-r或-x判断失败,但-e不受权限影响
一行快速验证(命令行即用)
不用写脚本,终端里直接敲:
test -e /usr/bin/python3 && echo "存在" || echo "不存在"[ -e ~/.bashrc ] && echo "配置文件在" || echo "没找到"- 想静默检查只取结果?用
test -e path; echo $?,输出 0 表示存在










