我正在查看一些别名以快速保存当前目录,以便以后可以打开。
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
答案 0 :(得分:2)
在我看来,好像你正在加倍掩盖。
处理空格的一种方法是使用反斜杠单独屏蔽它们:
cd here\ I\ go
或用双引号屏蔽所有这些:
cd "here I go"
虽然这也是允许的:
cd here" I "go
然而,混合它们意味着你想要字面上的反斜杠:
cd "here\ I\ go"
这就是发生的事情。
请注意,虽然不常见,但标签和换行也可以包含在文件中。屏蔽它们的工作方式相同,但是从文件中读取它们可能会有所不同,并且多个空白通常由shell压缩为单个空格。
答案 1 :(得分:1)
如果文件名不在\
和"
"
转义
使用cdo
转义,但未在cdn中使用"
ALIAS cdo='pwd|sed 's/ /\ /g' > ~/.cdo'
AIIAS cdn='cd $(cat ~/.cdo)'
没有转义并使用""
(我认为这是更好)
ALIAS cdo='pwd > ~/.cdo'
AIIAS cdn='cd "$(cat ~/.cdo)"'