如何获取运行命令的目录的路径?

如何获取运行命令的目录的路径?

uploadme假设文件夹中有一个名为“ ”的 bash 文件/usr/bin

我正在使用该文件作为命令,并通过文件名作为一个命令行参数,在我的主目录的任何子目录中。

假设我在目录 directory 中/home/John/documents/。在该目录中,只存在一个名为“Hello.txt”的文件。我将使用以下命令:

uploadme Hello.txt

因此,bash 文件将获得一个参数“Hello.txt”,但是我想要文件的完整路径,但不在参数中提及它。

我们怎样才能做到这一点?

答案1

该工具realpath可以执行以下操作:

echo $(realpath "$1")

答案2

您可以使用readlink -f

readlink -f "$1"

答案3

有一个名为的环境变量PWD,它保存了当前/工作目录的名称。此外,该命令pwd还会打印当前目录。

因此,您可以使用 获取脚本中传递参数的完整路径$PWD/$1

答案4

如果您尝试获取命令的路径,而不是文件参数的路径,则可以使用命令which。如果您在脚本命令中想知道命令的位置(而不是当前工作目录或参数文件的完整路径),则可以查看which $0(对于脚本)或argv[0](对于已编译的程序)。

相关内容