Как мне автоматически `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
}

В GNU Bash,

PROMPT_COMMAND=ls
     alias cd='cd $@ &&  ls $@ --color '

Для любого имени каталога можно отобразить весь контент. В качестве псевдонима укажите команду cd в файле.bashrc и запустите. Файл.bashrc. это изменение во всех местах

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