Function 将cd重新定义为;cd<;目录>;ls-F";问题
在我的.bash_档案中,我有Function 将cd重新定义为;cd<;目录>;ls-F";问题,function,user-input,ls,cd,Function,User Input,Ls,Cd,在我的.bash_档案中,我有 cd(){ builtin cd $1 ls -F } 将cd更改为cd ls-F。这似乎在大多数情况下都有效,但当我想将cd更改为多字目录时,它不起作用。它认为这两个词是两个独立的输入。为了解决这个问题,我还尝试了: cd "word1 word2" cd "word1\ word2" dir=$"word1 word2" cd "$dir" 而这些都不起作用。我需要修改cd功能吗?还是我忽略了一个聪明的输入法?这正是(我认为)你想要的: cd() {
cd(){ builtin cd $1 ls -F }
将cd更改为cd ls-F。这似乎在大多数情况下都有效,但当我想将cd更改为多字目录时,它不起作用。它认为这两个词是两个独立的输入。为了解决这个问题,我还尝试了:
cd "word1 word2"
cd "word1\ word2"
dir=$"word1 word2"
cd "$dir"
而这些都不起作用。我需要修改cd功能吗?还是我忽略了一个聪明的输入法?这正是(我认为)你想要的:
cd() {
builtin cd "${1-$(echo ~)}" && ls -F
}
请注意以下几点:
- 该变量被引用,因此
将起作用cd'some dir with spaces'
- 在
和cd
之间有一个ls
,这样,如果前者失败,后者就不会发生。(它们可能只是在不同的行上,但是即使&&
失败,cd
的失败消息也会在cd
的输出中“丢失”。(不确定命令在同一行上应该如何工作。)ls
默认设置为$1
,以便只~
按预期工作cd
dir=$“word1 word2”cd“$dir”
返回:bash:cd:word1:没有这样的文件或目录
在cd“$1”
和ls-F
之间还需要分号或换行符。。。尝试cd“somewhere-else”ls-F
没有意义,因为cd
只接受一个参数。@gdavt或删除该$
dir=“word1 word2”
,cd“$dir”
对我来说很好。