Bionix1441 Asked: 2018-10-13 03:16:58 +0800 CST2018-10-13 03:16:58 +0800 CST 2018-10-13 03:16:58 +0800 CST 如何从 bash 脚本存储目录的完整路径? 772 我想从脚本中获取全路径导向器,即使用户输入“./”或“/~” #!/bin/bash echo "Enter the directory" read DIRECTORY #how to store the full-path instead of something like ./ echo "$DIRECTORY" linux bash 5 个回答 Voted rusty shackleford 2018-10-13T03:20:02+08:002018-10-13T03:20:02+08:00 对于目录,您可以使用命令pwd或变量$PWD。 例子 $ DIRECTORY=. $ TRUEDIR=$(cd -- "$DIRECTORY" && pwd) $ echo $TRUEDIR /home/steve $ Best Answer Ipor Sircer 2018-10-13T03:23:04+08:002018-10-13T03:23:04+08:00 使用真实路径: echo "$(realpath $DIRECTORY)" Gilles 'SO- stop being evil' 2018-10-13T04:16:27+08:002018-10-13T04:16:27+08:00 绝对路径以 开头/,相对路径不以 开头。您可以通过在相对路径前添加当前目录的路径和斜杠来将相对路径转换为绝对路径。 case $DIRECTORY in /*) DIRECTORY="$PWD/$DIRECTORY";; esac 这是可移植的代码:它在普通的 sh 中工作,而不仅仅是在 bash 中。 生成的路径可能包含符号链接。这几乎总是正确的,但是如果您想规范化符号链接,请参阅将相对路径转换为没有符号链接的绝对路径 RudiC 2018-10-13T04:05:22+08:002018-10-13T04:05:22+08:00 您可以为绝对路径添加测试: read DIRECTORY [ "${DIRECTORY:0:1}" = "/" ] || DIRECTORY="$PWD/$DIRECTORY" echo "$DIRECTORY" Glenn 2018-10-13T07:50:16+08:002018-10-13T07:50:16+08:00 realpath (已接受的答案)已被弃用,并且在大多数安装中不可用。我会使用它的替代品: readlink -f "$DIRECTORY" 它也处理 ~ 和 ./ 并将遵循符号链接。 如果要允许用户输入不存在的 $DIRECTORY,请使用: readlink -m "$DIRECTORY"
对于目录,您可以使用命令
pwd
或变量$PWD
。例子
使用真实路径:
绝对路径以 开头
/
,相对路径不以 开头。您可以通过在相对路径前添加当前目录的路径和斜杠来将相对路径转换为绝对路径。这是可移植的代码:它在普通的 sh 中工作,而不仅仅是在 bash 中。
生成的路径可能包含符号链接。这几乎总是正确的,但是如果您想规范化符号链接,请参阅将相对路径转换为没有符号链接的绝对路径
您可以为绝对路径添加测试:
realpath (已接受的答案)已被弃用,并且在大多数安装中不可用。我会使用它的替代品:
它也处理 ~ 和 ./ 并将遵循符号链接。
如果要允许用户输入不存在的 $DIRECTORY,请使用: