Bash避免文件名解释
我正在寻找一些别名来快速保存当前目录,以便以后可以打开它Bash避免文件名解释,bash,variables,interpretation,Bash,Variables,Interpretation,我正在寻找一些别名来快速保存当前目录,以便以后可以打开它 ALIAS cdo='pwd|sed 's/ /\ /g' > ~/.cdo' AIIAS cdn='cd "$(cat ~/.cdo)"' sed命令显然处理空间 然而,我仍然有一个奇怪的问题,我无法解决,这必须涉及变量解释 jk@bt:~# cd Hello\ World/ jk@bt:~/Hello World# pwd|sed 's/ /\\ /g' > ~/.cdo jk@bt:~/Hello World# cat
ALIAS cdo='pwd|sed 's/ /\ /g' > ~/.cdo'
AIIAS cdn='cd "$(cat ~/.cdo)"'
sed命令显然处理空间
然而,我仍然有一个奇怪的问题,我无法解决,这必须涉及变量解释
jk@bt:~# cd Hello\ World/
jk@bt:~/Hello World# pwd|sed 's/ /\\ /g' > ~/.cdo
jk@bt:~/Hello World# cat ~/.cdo
/home/jk/Hello\ World
jk@bt:~/Hello World# cd ..
jk@bt:~# cd "$(cat ~/.cdo)"
bash: cd: /home/jk/Hello\ World: No such file or directory
如果文件名不在
“
和”
在cdn中使用cdo进行转义,但不使用“
”
ALIAS cdo='pwd|sed 's/ /\ /g' > ~/.cdo'
AIIAS cdn='cd $(cat ~/.cdo)'
不转义并使用”
(我认为这样更好)
如果文件名不在“
和”
在cdn中使用cdo进行转义,但不使用“
”
ALIAS cdo='pwd|sed 's/ /\ /g' > ~/.cdo'
AIIAS cdn='cd $(cat ~/.cdo)'
不转义并使用”
(我认为这样更好)
在我看来好像你在加倍伪装
处理空格的一种方法是使用反斜杠分别屏蔽空格:
cd here\ I\ go
或者用双引号遮住它们:
cd "here I go"
虽然这也是允许的:
cd here" I "go
但是,混合它们意味着,您需要字面上的反斜杠:
cd "here\ I\ go"
这就是正在发生的事情
请注意,选项卡和换行符虽然不是很常见,但也可以包含在文件中。屏蔽它们的工作方式相同,但从文件中读取它们可能会有所不同,而且shell通常会将多个空格压缩为一个空格。在我看来,好像是在加倍屏蔽
处理空格的一种方法是使用反斜杠分别屏蔽空格:
cd here\ I\ go
或者用双引号遮住它们:
cd "here I go"
虽然这也是允许的:
cd here" I "go
但是,混合它们意味着,您需要字面上的反斜杠:
cd "here\ I\ go"
这就是正在发生的事情
请注意,选项卡和换行符虽然不是很常见,但也可以包含在文件中。屏蔽它们的工作方式相同,但从文件中读取它们可能会有所不同,shell通常会将多个空格压缩为一个空格。请参阅以了解发生这种行为的原因:引用变量替换(这是正确使用的!)不会处理转义,也不应该。使用和dirs
命令解决这个问题要好得多。请查看acd_func.sh--扩展bash的CD,以便在See上保存、显示和访问访问目录名的历史记录,以了解发生这种行为的原因:引用变量替换(这是正确的使用!)不处理转义,也不应该处理转义。使用和dirs
命令解决此问题要好得多。请查看acd_func.sh--扩展bash的CD以保留、显示和访问问题所在目录名的历史记录,而不是,他不应该在不需要解析的内容中进行手动转义。那么,你的第二个例子是正确的,但是这个解释是误导性的。问题是,他不应该对那些不会被解析的内容进行手动转义。那么,你的第二个例子是正确的,但解释是误导性的。