Linux 中是否有可以“规范化”文件名的命令行工具?即删除所有“xx/./xx”部分或“myfolder/../myotherfolder”部分?
答案1
实际上,它是真实路径: http://linux.about.com/library/cmd/blcmdl3_realpath.htm
还有一个命令行版本:cyberciti.biz/faq/unix-linux-bsd-find-real-physical-path/
但在我的 CentOS 5 上它默认不可用。
另外还有一种“作弊方法”:
$ bash -c "cd /foo/../bar/ ; pwd"
/bar
答案2
readlink -f
似乎可以做到这一点(尽管旨在取消引用符号链接):
[root@noldevvg19 ~]# readlink -f /etc/../usr/../etc/./sysconfig/../redhat-release
/etc/redhat-release
我相信这被称为‘规范化’。
答案3
您是在询问 basename 命令吗?
$ basename ../../.bashrc
.bashrc
还有另一部分:dirname
$ dirname ../../.bashrc
../..
答案4
使用python行命令:
python -c 'import os; print os.path.basename("/home/mezgani/nat")'
python -c 'import os; print os.path.direname("/home/mezgani/nat")'