par*_*ton 13 bash whitespace alias escaping
试图在我的.bashrc文件中设置一些别名.这个...
export alias umusic="/Volumes/180 gram/Uncompressed/"
Run Code Online (Sandbox Code Playgroud)
...得到以下错误......
-bash:cd:/ Volumes/180:没有这样的文件或目录
...当我尝试"cd $ umusic"时.
我已经尝试了各种方法来逃避目录名称中的空格,但无济于事.(180\gram,180%20gram,单引号,双引号,无引号.)我意识到最简单的解决方案是将目录重命名为"180gram",但我想知道如何解决这个特殊问题.
我在Mac上,如果这有任何区别.
Gre*_*ill 18
您使用的export
命令正在umusic
一个环境变量,而不是一个别名.该export
命令导出在命令行的其余部分上命名的环境变量,可选地使用新值.所以它导出一个名为alias
(可能没有设置)的环境变量和一个名为的环境变量umusic
.
鉴于您正在扩展环境变量,shell会执行以下替换:
cd $umusic
cd /Volumes/180 gram/Uncompressed/
Run Code Online (Sandbox Code Playgroud)
由于未引用空格,因此会生成错误.相反,如果您这样做:
cd "$umusic"
Run Code Online (Sandbox Code Playgroud)
那么扩张就是
cd "/Volumes/180 gram/Uncompressed/"
Run Code Online (Sandbox Code Playgroud)
这是你所期待的.
但是,为此使用环境变量可能仍然有点太多工作,因为您必须引用扩展.相反,尝试这个别名:
alias umusic="cd '/Volumes/180 gram/Uncompressed'"
Run Code Online (Sandbox Code Playgroud)
你将与谁一起运行
$ umusic
$ pwd
/Volumes/180 gram/Uncompressed
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8260 次 |
最近记录: |