whitespace - 如何转义 bash 别名中的空格?

标签 whitespace alias bash escaping

试图在我的 .bashrc 文件中设置一些别名。这个……

export alias umusic="/Volumes/180 gram/Uncompressed/"

...出现以下错误...

-bash: cd: /Volumes/180: No such file or directory

...当我尝试“cd $umusic”时。

我试过各种方法来转义目录名中的空格,但都无济于事。 (180\克、180%20 克、单引号、双引号、无引号。)我意识到最简单的解决方案是将目录重命名为“180gram”,但我想知道如何解决这个特定问题。

我在 Mac 上,如果这有什么不同的话。

最佳答案

您对 export 命令的使用使 umusic 成为环境变量 而不是别名export 命令导出在命令行其余部分命名的环境变量,可选择使用新值。因此它导出一个名为 alias 的环境变量(可能未设置)和一个名为 umusic 的环境变量。

鉴于您正在扩展一个环境变量,shell 会执行以下替换:

cd $umusic
cd /Volumes/180 gram/Uncompressed/

这会生成您收到的错误,因为未引用空格。相反,如果您这样做:

cd "$umusic"

那么展开就是

cd "/Volumes/180 gram/Uncompressed/"

这就是您所期望的。

但是,为此使用环境变量可能仍然有点太多工作,因为您必须引用扩展。相反,试试这个别名:

alias umusic="cd '/Volumes/180 gram/Uncompressed'"

你只需要运行它

$ umusic
$ pwd
/Volumes/180 gram/Uncompressed

关于whitespace - 如何转义 bash 别名中的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911080/

相关文章:

list - TCL - 将字符串按任意数量的空格拆分为列表

php - 是否可以使用 PHP 在表单提交中指定 "Reply From"电子邮件地址?

perl - 使用 perl 单线器的 Csh 别名在创建别名时评估,而不是在使用别名时评估

XML 回车编码

c - 如何在 c 中使用 scanf 读取空格?

c - 别名结构成员

linux - 在 ubuntu bash 脚本中,当我尝试转换错误的十六进制值时不会抛出任何错误

bash - 在这个简单的Docker包装脚本示例中,如何正确传递当前包含空格的工作目录路径?

bash - 如何通过 find -exec 使用 .bashrc 中定义的 bash 函数

xml - ScalaXML 和空行