Eu frequentemente executo o ls
comando depois de executá-lo cd
. Como posso criar um alias (como cs
) para esta operação?
fonte
Eu frequentemente executo o ls
comando depois de executá-lo cd
. Como posso criar um alias (como cs
) para esta operação?
De Bash Tips and Tricks: 'cd' com estilo :
Por fim, quero mostrar como escrever sua própria substituição personalizada para o comando 'cd'.
Você sempre digita a mesma coisa ao mudar para um diretório? Você provavelmente lista pelo menos os arquivos sempre, talvez tanto que suas mãos digitam automaticamente 'ls' após cada 'cd'.
Bem, ao tentar de todas as formas que pude pensar, verifica-se que há apenas uma maneira de atingir adequadamente o objetivo que estamos buscando. Temos que criar uma função shell.
As funções do shell fazem parte da programação do shell. Como nas linguagens de programação compiladas, as funções fornecem uma espécie de capacidade modular de procedimento. Pode-se criar uma função genérica para executar um pouco de lógica ou computação frequentemente usado com parâmetros diferentes. Nesse caso, o parâmetro é o diretório de trabalho atual.
Aqui está um exemplo simples:
function cs () { cd $1 ls }
Como o @geirha observa corretamente, a função acima falhará se você tentar alternar para um diretório com um espaço em seu nome:
$ cs A\ B/
-bash: cd: A: No such file or directory
<current directory listing>
Você deve usar a seguinte função:
function cs () {
cd "$@" && ls
}
Depois de adicionar esse código ao seu ~/.bashrc
, você poderá fazer o seguinte:
hello@world:~$ cs Documents/
example.pdf tunafish.odt
hello@world:~/Documents$
Você pode usar o
builtin
comando no bash:fonte
function ls() { /usr/bin/ls $* }
cd
porquervm
altera minhacd
definição também. Veja stackoverflow.com/a/19941991/1601989Use uma função em vez de um alias:
fonte
Obrigado Florian Diesch pela dica de uso de uma função. Não posso usar
cs
como nome porque há umcs
comando no pacote csound , então useilc
.Adicionei isso a
~/.bash_aliases
(nano ~/.bash_aliases
):O terminal precisa ser
reset
para que isso entre em vigor.fonte
$1
não cotadas como que irá torná-lo falhar se o diretório contém espaços em branco. Além disso, você deve verificar o valor de retorno decd
; se falhou (por exemplo, permissão negada), não faz sentido executar ols
.lc() { cd "$@" && ls; }
Como uma expansão para esta função:
cs() { cd "$1" && ls; }
, você pode querer passar todos os argumentos da função paracd
usando$@
em vez de"$1"
como tal:cs() { cd $@ && ls; }
.fonte
Tive problemas para redefinir
cd
porquervm
altera minhacd
definição também. Consulte https://stackoverflow.com/a/19941991/1601989 . Eu realmente não queria usarbuiltin
porque isso pularia o quervm
estiver fazendo.Eu adicionei o seguinte ao meu
.bashrc
:E depois da
rmv
linha no.bashrc
:fonte