如何在解释诸如点“。”和波浪符号“~”之类的字符后回显文件路径?

如何在解释诸如点“。”和波浪符号“~”之类的字符后回显文件路径?

我想编写一个 bash 脚本,它接受一个文件规范作为输入参数,该文件规范包含一个或多个特殊字符...~。我希望脚本的输出能够反映 Bash 对我的脚本的完整路径解释。

这是我尝试过的脚本:

a=$(ls -l -o -g "${1}" | cut --delimiter=' ' --fields=1-6 --complement -)

echo "\\"${a}\\""

如果我发出命令:myscript ~/.local/../.profile

返回的结果是:/home/OldManK/.local/../.profile。但是,我想要:/home/OldManK/.profile

另一个例子:myscript ~/./.profile返回:/home/OldManK/./.profile,但是,我想要:/home/OldManK/.profile

另一个(从 执行/home/OldManK/.local):myscript ../.profile返回:../.profile,但是,我想要:/home/OldManK/.profile

请问还有其他方法吗?

答案1

使用realpath

$ realpath ~/.local/bin/../mycommand
/home/user/.local/mycommand

人真实路径

DESCRIPTION
    Print the resolved absolute file name; all but the last component must exist

相关内容