Shell:提示用户输入目录路径

时间:2015-04-17 05:50:57

标签: python linux bash shell unix

我正在寻找一个与Python的os.path.join相当的Bash。我正在尝试提示用户输入目录路径,然后将使用(在路径连接等效的帮助下)来执行其他操作。

2 个答案:

答案 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系统上都可用。我会在这里留下我的答案,以防它在某种程度上仍有帮助。