所以我开始这讨论,它基本上完全符合我的要求。
但是,使用引号保留目录空格的解决方案在使用参数时会失败,例如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
}