Итак, я начал с этого обсуждения, и оно в основном делает именно то, что я хочу.
Однако решение сохранить пробел в каталоге с помощью кавычек терпит неудачу при использовании аргументов, например, 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"
, что, очевидно, не удается.
Когда вы пишете $*
, вы проиграли: это стирает различие между пробелами в аргументе и пробелами для разделения аргументов. Вместо этого используйте "$@"
, который расширяется до одного слова в аргументе.
function cd {
builtin cd "$@" && ls
}