删除“”有任何危险吗?路径中的组件?


3

可以将路径转化A/./BA/B变化的路径是什么意思?

我知道,由于符号链接(如果是符号链接,则路径A/foo/../B可能与不在同一对象)A/B,因此该路径可能未与指向同一对象。我想检查一下是否没有类似的危险fooA/foo/..AA/./B


我认为这readlink -f /any/path/with/or/without/symlinks总是最好的。
Stefan Seidel 2012年

@StefanSeidel:问题是关于以字符串形式安全地操作路径(即,不访问文件系统)。
约翰·巴塞洛缪

根据定义,.始终引用当前目录。在特定情况下,它有时会派上用场,但通常是多余的。
Synetech 2012年

Answers:


2

从理论上讲.不能保证是当前目录,..也不能保证是父目录。但是,如果不是这样,则可能是文件系统损坏(在这种情况下,所有赌注都没有了)或巫术水平很高,您在现实生活中不太可能遇到这种情况。我说删除'是安全的' 组件。


哪种巫术会影响. == current目录?我知道符号链接会如何影响,..但我认为.它会非常强大。您能发布一个链接吗?
terdon 2012年

2
在Windows中,我相信.并且..DIR显示和CD(及其他路径名解析服务)荣誉的伪条目。在Unix中,它们是目录中的实际条目。如果您说rm foo,请rm检查是否foo为目录,如果目录为,则拒绝继续(除非您已指定-r)。您可以编写一个rm没有进行测试的版本。然后,如果你是根,你可以rm .ln /some/other/directory .。或者至少在几年前就这样运作过;它可能已经改变;我最近没有尝试过。警告:这比regedit!更危险!
Scott

@terdon:哦,特权用户也可以在未挂载的文件系统磁盘上运行十六进制编辑器;例如db /dev/hda2
Scott
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.