6

Я обнаружил, что продолжаю быстро выполнять cd some_dir за которым следует ls , и пытался написать псевдоним bash, чтобы я мог это сделать, например:

alas cd="cd $@; ls";

Проблема в том, что вы не можете иметь входной аргумент в середине псевдонима (поправьте меня, если я ошибаюсь).

Я также попытался определить свою собственную функцию оболочки, как предлагается на этой странице:

cd() { cd "$@"; ls; }

Но проблема с этим, если я пытаюсь использовать его так:

cd Documents

оболочка завершается с [Process completed] , что делает ее бесполезной ... Так как же мне обойти это?

4 ответа4

13

Попробуй это:

cd() { builtin cd "$@" && ls; }

builtin заставляет cd внутри функции вызывать встроенную команду cd а не пытаться вызывать функцию рекурсивно.

2

В GNU Bash,

PROMPT_COMMAND=ls
0

Я придумал сценарий 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
}
-1
     alias cd='cd $@ &&  ls $@ --color '

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .