Псевдонимы 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", что, очевидно, не удается.

5
задан 13 April 2017 в 15:24

1 ответ

Когда вы пишете $*, вы проиграли: это стирает различие между пробелами в аргументе и пробелами для разделения аргументов. Вместо этого используйте "$@", который расширяется до одного слова в аргументе.

function cd {
  builtin cd "$@" && ls
}
0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: