我正在寻找一个与Python的os.path.join相当的Bash。我正在尝试提示用户输入目录路径,然后将使用(在路径连接等效的帮助下)来执行其他操作。
答案 0 :(得分:1)
使用起来非常安全,例如"${dirpath}/${filename}"
脚本中的bash
。
bash
只能理解POSIX风格的路径名。即使您在Windows上构建MinGW / native bash
。这意味着/
始终是路径分隔符。并且这意味着连续添加两个斜杠永远不会伤害,所以即使$dirpath
恰好以' /'结尾,一切都很好。
所以,例如:
$ cat join.sh
#!/bin/bash
echo -n 'Path: '
read dirpath
echo -n 'Filename: '
read filename
ls -l "${dirpath}/${filename}"
$ ./join.sh
Path: /etc/
Filename: hosts
-rw-r--r-- 1 root wheel 236 Sep 15 2014 /etc/hosts
在Python中,以这种方式使用/
并不安全。 Python在POSIX和POSIX类系统上处理本机格式的路径名,但也处理Windows上的本机格式路径名。*,其中路径分隔符为\
,两个反斜杠在某些地方有特殊含义,你有因此,您必须使用os.path.join
来移植。
*它还包含经典Mac(使用冒号),VMS(使用您不想知道的不同内容的混合物)的代码等等,如果你'使用足够老的Python。
答案 1 :(得分:1)
您可能正在寻找readlink
命令。您可以使用readlink -m "some/path"
将路径转换为规范路径格式。它并不完全是path.join,但确实提供了类似的功能。
编辑:有人向我指出readlink
实际上更像是os.path.realpath
。它也是GNU扩展,并非在所有* nix系统上都可用。我会在这里留下我的答案,以防它在某种程度上仍有帮助。