Como eu 'cd' e depois * 'ls' automaticamente no linux?

5

Eu me peguei fazendo cd some_dir rapidamente seguido por ls por algum tempo agora, e tenho tentado escrever um apelido bash para me deixar fazer isso, como:

alas cd="cd $@; ls";

Problema com isto é você não pode ter um argumento de entrada no meio de um alias (corrija-me se estiver errado).

Eu também tentei definir minha própria função de shell como sugerido por página :

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

Mas o problema com este é se eu tentar usá-lo assim:

cd Documents

o shell sai com [Process completed] , tornando o shell inútil ... Então, como eu devo contornar isso?

    
por chutsu 17.11.2012 / 14:45

4 respostas

13

Tente isto:

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

builtin faz com que o cd dentro da função invoque o comando cd embutido em vez de tentar chamar a função recursivamente.

    
por 17.11.2012 / 14:49
2

No GNU Bash,

PROMPT_COMMAND=ls
    
por 20.11.2012 / 09:04
0

Eu criei um script Bash que deve funcionar para que isso aconteça.

# 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
}
    
por 13.06.2016 / 19:11
-1
     alias cd='cd $@ &&  ls $@ --color '

cd qualquer nome de diretório, ele pode exibir todo o conteúdo. O alias definido como cd command in   o arquivo .bashrc e execute o arquivo. arquivo .bashrc. é a mudança para todo lugar

    
por 20.11.2012 / 08:35