Alguém pode explicar essa linha de código / comando, por favor?

3

Detalhes serão apreciados!

Eu sei que ele deveria ser um script de shell ou algo assim, mas seria ótimo se alguém mais experiente neste campo pudesse me dizer mais sobre isso.

echo "" >> $HOME/.bashrc && echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc
    
por J. Najera 10.04.2017 / 22:02

2 respostas

3

" echo " irá (como o nome indica) ecoar uma string de texto para std out (normalmente a tela).

" > > " anexará a saída do comando anterior a um caminho de arquivo.

" & & " executará (com base na saída bem-sucedida do comando anterior) o comando sucessivo.

"; " será executado (independentemente da saída bem-sucedida do comando anterior) do comando sucessivo.

" function " irá criar uma função que será executada no Bash Shell.

" $ HOME " é uma referência (Bash Variable) para o diretório pessoal do sistema operacional do usuário criado automaticamente pelo Bash.

" .bashrc " é um arquivo oculto (no diretório pessoal do usuário) que é executado quando o usuário inicia uma sessão interativa. É freqüentemente usado para personalizar o shell bash no nível do usuário.

" cd " é uma alteração de diretório, altera o diretório de trabalho.

" ls " lista os arquivos no diretório. Nesse caso, "--color" é um argumento que enfatizará determinados elementos do diretório com cor, em vez de usar uma única cor.

" $ 1 " é usado para permitir que um usuário passe um argumento para este comando como uma variável.

Então, em resumo, para ...

echo "" >> $HOME/.bashrc &&
   echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc

A primeira linha acrescenta uma linha "vazia" a .bashrc - apenas para fins de clareza, quando alguém olha para o arquivo no futuro. A segunda linha acrescenta uma nova função chamada " cdls ", que aceita um argumento (um nome de diretório), altera o diretório de trabalho para esse local e executa imediatamente o " ls "comando neste diretório.

EDIT: Por favor, veja os comentários de Celada e Derobert sobre a resposta de Steve.

    
por 10.04.2017 / 22:23
0

Teste se $ HOME / .bashrc é gravável, tentando acrescentar nada a ele:

echo "" >> $HOME/.bashrc &&

Se o teste for bem sucedido, o arquivo é gravável, acrescente uma função a ele. Portanto, executar cdls foo exibirá uma listagem de diretório colorido do diretório "foo".

echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc
    
por 10.04.2017 / 22:13