别名 cd 和 ls 支持空格和参数

Jon*_*Jon 5 command-line bash

所以我从这个讨论开始,它基本上完全符合我的要求。

但是,在使用参数(例如cd -P dir. 任何保留空白和允许选项标志的想法?

这是我目前使用的功能。

function cd {
    new_directory="$*";
    if [ $# -eq 0 ]; then 
        new_directory=${HOME};
    fi;
    builtin cd "${new_directory}" && ls;
}
Run Code Online (Sandbox Code Playgroud)

例如,与上述,cd -P My\ Documents/成为cd "-P My Documents"这显然失败。

Gil*_*il' 5

当你写的时候$*,你已经失去了:这消除了参数中的空格和分隔参数的空格之间的区别。"$@"改为使用,每个参数扩展为一个单词。

function cd {
  builtin cd "$@" && ls
}
Run Code Online (Sandbox Code Playgroud)