重新定义cd到&#34; cd <directory> ls -F&#34;问题</目录>

时间:2014-08-26 19:52:26

标签: function user-input ls cd

在我的.bash_profile中,我有

cd(){ builtin cd $1 ls -F }

将cd更改为cd ls -F。这似乎在很大程度上起作用,但是当我想要cd到一个多字目录时,它不起作用。它认为这两个词是两个独立的输入。为了解决这个问题,我也试过了:

cd "word1 word2"
cd "word1\ word2"

dir=$"word1 word2"
cd "$dir"

并且这些都没有奏效。我需要修改我的CD功能吗?或者我只是忽略了一个聪明的输入法?

1 个答案:

答案 0 :(得分:1)

这就是你想要的(我认为):

cd() {
  builtin cd "${1-$(echo ~)}" && ls -F
}

请注意以下几点:

  • 引用变量,以便cd 'some dir with spaces'起作用。

  • &&cd之间有ls,因此如果前者失败,后者将不会发生。 (它们可能只是在不同的行上,但即使ls失败也会运行cdcd关于失败的消息将在ls中“丢失”的输出。(不知道如何让同一行上的命令工作。))

  • $1默认为~,以便只有cd按预期工作。