Script Bash para substituir duas etapas: cd ./some_dir, ls -al?

1

Eu gostaria de escrever um scipt bash que mudaria para o diretório de destino e listaria o conteúdo do novo diretório, tudo em uma única etapa. Substituiria os dois comandos que eu uso constantemente consecutivamente:

  • cd ./some_diretório
  • ls -al

Depois de executar o script, meu diretório atual mudaria e ls -al mostraria a lista de dir.

cdl ./some_directory

Isso é possível?

    
por Danijel 14.03.2017 / 11:10

2 respostas

4

Você não pode fazer isso com um script de shell, porque os scripts são executados em novos shells e sair do script sai do shell e "esquece" a alteração do diretório. Veja Script para alterar o diretório atual (cd, pwd) por exemplo (provavelmente há respostas mais detalhadas no site em algum lugar ).

Você precisa usar uma função:

cd1() {
    cd "$@"
    ls -al
}
    
por 14.03.2017 / 11:14
1

Outra opção (no seu .bashrc):

PROMPT_COMMAND='if [[ "$PWD" != "$_promptPWD" ]]; then ls -al; _promptPWD=$PWD; fi'
_promptPWD=$PWD

Isso conecta a funcionalidade PROMPT_COMMAND do bash para que ele execute o ls para você, se você tiver alterado os diretórios. As desvantagens são:

  • precisaria ser corrigido em qualquer PROMPT_COMMAND existente, se houver
  • desordena o ambiente com outra variável ( _promptPWD )

O lado positivo é que você pode continuar digitando cd como normal e não precisa digitar algo diferente para obter o comportamento ls .

    
por 14.03.2017 / 16:35