在bash中,一个命令链接
echo test > actual.txt
将actual.txt
用“ test” 替换被调用文件的内容,并创建一个不存在的文件。但是,如果文件确实存在,bash只会打开它,截断它,然后将新内容写入文件。
具体来说,在这种情况下redirect命令失败:
ln -s /some/illegal/path link.txt
echo test > link.txt
Bash 4.4.12给了我令人困惑的错误消息link.txt: No such file or directory
。
避免这种情况的一种方法是确保在运行重定向命令之前删除文件。
rm link.txt && echo test > link.txt
不过,我想知道是否有一些bash选项或重定向操作符的调整可以防止这种故障模式。有任何想法吗?
link.txt
链接指向您拥有写和搜索许可权但不存在的目录类型文件/dir/file
所在的链接,该链接将不存在(并且重定向将在没有错误消息的情况下创建该文件)?如果存在但不是常规文件(设备,fifo,目录...),或者您没有对该文件的写入权限或搜索权限,该怎么办?/dir
/dir/file
/dir/file
/dir