我怎样才能让 bash 转换‘~’?

我怎样才能让 bash 转换‘~’?

有些程序无法识别文件名中的波浪符号快捷方式,而需要完整的规范路径,例如,/home/dave/myfile.txt而不是~/myfile.txt

有没有办法让 bash在使用波浪号时用完整的规范路径~替换?~user

答案1

嗯,不确定 perl,但是在 bash 脚本中你可以使用 eval 进行转换:

eval dir='~user/somedir'

$dir 将包含完整路径,即此时的 /home/user/somedir。

答案2

当您在 Bash shell 中运行命令时,例如:

command ~/myfile.txt

shell 首先进行扩展~(除非它被引用),然后使用结果运行命令。

但确实有些程序不解释~,例如:

$ cat "~/myfile.txt"
~/myfile.txt: No such file or directory

但这有效:

nano "~/myfile.txt"

但这种行为被 Bash 扩展所掩盖,因此你不需要任何进一步的解释

也许这很明显,但请注意,如果程序使用配置文件并期望其中包含某些路径,则 Bash 没有义务扩展它们。

相关内容