我想检查一个文件是否存在
[ -f /path/to/file/ ]
但是,我以普通用户身份运行此命令,并且该文件归 root 所有。我如何使用 sudo 来完成此操作。
sudo [ -f /path/to/file/ ] 不起作用。
Luc*_*one 19
if sudo test -f "/path/to/file"; then
echo "FILE EXISTS"
else
echo "FILE DOESN'T EXIST"
fi
Run Code Online (Sandbox Code Playgroud)
为了完成事情,在另一方面,如果您想从 root 检查文件或目录是否对某个用户可读,您可以使用
if sudo -u username test -f "/path/to/file"; then
echo "FILE EXISTS"
else
echo "FILE DOESN'T EXIST"
fi
Run Code Online (Sandbox Code Playgroud)
vor*_*aq7 12
您所描述的应该可以正常工作 - 只要您使用绝对路径,并且-f(“文件存在并且是常规文件”)确实是您想要执行的测试。
我看到/您在问题中发布的内容的结尾- 您是否正在测试目录?那应该是-d,或者简单地说-e(“存在具有该名称的东西 - 无论类型如何”)
另请注意,除非沿途的某些内容不可读test( [) 应该能够告诉您 root 拥有的文件是否存在(例如[ -f /root/.ssh/known_hosts ]可能会失败,因为 /root/.ssh 目录不是(或至少应该'不是) 普通用户可读。 [ -f /etc/crontab ]应该成功)。
| 归档时间: |
|
| 查看次数: |
12565 次 |
| 最近记录: |