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]
(对于已编译的程序)。