Как мне автоматически `cd` и затем * `ls` в Linux?
Я нашел себя продолжать делать cd some_dir
быстро следуют ls
в течение достаточно долгого времени, и пытался написать псевдоним bash, чтобы позволить мне сделать это, например:
alas cd="cd $@; ls";
Проблема в том, что вы не можете иметь входной аргумент в середине псевдонима (поправьте меня, если я ошибаюсь).
Я также попытался определить свою собственную функцию оболочки, как предлагается на этой странице:
cd() { cd "$@"; ls; }
Но проблема с этим, если я пытаюсь использовать его так:
cd Documents
оболочка выходит с [Process completed]
, делая оболочку бесполезной... Так как же мне обойти это?
4 ответа
Попробуй это:
cd() { builtin cd "$@" && ls; }
builtin
делает cd
внутри функции вызвать встроенную cd
команда, а не пытаться вызвать функцию рекурсивно.
Я придумал сценарий Bash, который должен работать, чтобы это произошло.
# Automatically do an ls after each cd
cd() {
if [ -n "$1" ]; then
builtin cd "$@" && ls --group-directories-first
else
builtin cd ~ && ls --group-directories-first
fi
}
alias cd='cd $@ && ls $@ --color '
Для любого имени каталога можно отобразить весь контент. В качестве псевдонима укажите команду cd в файле.bashrc и запустите. Файл.bashrc. это изменение во всех местах