我想从脚本中获取完整路径director,即使用户输入“./”或“/~”
#!/bin/bash
echo "Enter the directory"
read DIRECTORY #how to store the full-path instead of something like ./
echo "$DIRECTORY"
答案1
使用真实路径:
echo "$(realpath $DIRECTORY)"
答案2
对于目录,您可以使用命令pwd
或变量$PWD
。
例子
$ DIRECTORY=.
$ TRUEDIR=$(cd -- "$DIRECTORY" && pwd)
$ echo $TRUEDIR
/home/steve
$
答案3
绝对路径以 开头/
,相对路径则不然。您可以通过在相对路径前添加当前目录的路径和斜杠将相对路径转换为绝对路径。
case $DIRECTORY in
/*) DIRECTORY="$PWD/$DIRECTORY";;
esac
这是可移植代码:它可以在纯 sh 中运行,而不仅仅是在 bash 中。
生成的路径可能包含符号链接。这几乎总是正确的事情,但如果您想规范化符号链接,请参阅将相对路径转换为绝对路径,无需符号链接
答案4
realpath(接受的答案)已被弃用,并且在大多数安装中不可用。我会使用它的替代品:
readlink -f "$DIRECTORY"
它也处理 ~ 和 ./ 并将遵循符号链接。
如果您想允许用户输入不存在的 $DIRECTORY,请使用:
readlink -m "$DIRECTORY"