O que é equivalente a [alias cs = 'cd; ls'] mas com o argumento para cs ir para cd ao invés de ls?

3

Por exemplo, eu quero:

/tmp: $ cs /home

para executar 'cd / home; ls 'e dar:

user1 user2 user3 egfile.txt
/home: $
    
por John 20.09.2010 / 05:38

2 respostas

8

Você não pode passar argumentos para um alias, mas pode para uma função.

cs() {
cd "$@"
ls
}
    
por 20.09.2010 / 05:49
1

Combinando as respostas de @garyjohn e @Gilles com uma verificação interactive? e elaborando a formatação ls da saída.

Agora, você pode adicionar isso com segurança ao seu ~/.bashrc ou /etc/bash.bashrc :

Uma versão básica

#
# Replace every cd with cd+ls
#
if [[ $- == *i* ]]; then  # if running interactively
  cd() {
    builtin cd "$@" && ls
  }
fi

Uma versão linda

Filtra a saída de ls para que somente o tamanho, o horário e o nome sejam exibidos.

if [[ $- == *i* ]]; then  # if running interactively
  cd() {
    builtin cd "$@" &&
    ls --color=always -lh | 
    awk '{ for(i=5; i<=NF; i++) {printf("%s ", $i)}; print ""} '  | 
    column -t  && echo
  }
fi
    
por 03.02.2011 / 02:41