我的环境是:
- CentOS 6.9
- Ubuntu 16.04 LTS
GNU coreutils 8.4 有 test 命令来检查文件-f
option.
man test
shows
-f FILE
FILE exists and is a regular file
“常规文件”的定义对我来说是不明确的。
在终端上,我做了
$ touch afile
$ ln -fs afile LN-FILE
然后,我执行了以下脚本(check_file_exist_180320_exec)
#!/usr/bin/env bash
if [ -e LN-file ]
then
echo "file exists [-e]"
fi
if [ -f LN-file ]
then
echo "file exists [-f]"
fi
对于 CentOS 和 Ubuntu,均显示 -e 和 -f 表示符号链接文件 (LN-FILE)。
但是, ls -l 返回l:symbolik link
(not -:regular file
) LN-FILE 文件的标识符。
( 看。https://linuxconfig.org/identifying-file-types-in-linux https://linuxconfig.org/identifying-file-types-in-linux)
另一方面,我发现以下内容:if -e 和 if -f 之间的区别 https://stackoverflow.com/questions/10204562/difference-between-if-e-and-if-f
常规文件不是目录/符号链接/套接字/设备等。
于 2012 年 4 月 18 日 7:10 回答
jman
我应该检查“常规文件”(对于 CentOS 和 Ubuntu)的参考是什么?
请注意下面的文档man test
除了 -h 和 -L 之外,所有与 FILE 相关的测试都取消引用符号
链接。
基本上当你这样做时-f LN-file
,LN 文件是一个符号链接,-f
test 将遵循该符号链接,并给出符号链接指向的结果。
如果您想检查文件是符号链接还是常规文件,您需要执行以下操作:
if [ -h LN-file ]
then
echo "file is a symlink [-h]"
elif [ -f LN-file ]
then
echo "file is a regular file [-f]"
fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)