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

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

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

但是,使用引号保留目录空格的解决方案在使用参数时会失败,例如cd -P dir。有什么方法可以保留空格并允许使用选项标志吗?

这是我目前正在使用的功能。

function cd {
    new_directory="$*";
    if [ $# -eq 0 ]; then 
        new_directory=${HOME};
    fi;
    builtin cd "${new_directory}" && ls;
}

例如,对于上面的代码,cd -P My\ Documents/会变成cd "-P My Documents"显然会失败。

答案1

当你写 时$*,你就输了:这会消除参数中的空格和用于分隔参数的空格之间的区别。改用"$@",这会扩展为每个参数一个单词。

function cd {
  builtin cd "$@" && ls
}

相关内容