[marcador] Bash para iniciantes: 21 comandos úteis

O material, cuja tradução publicamos hoje, é destinado a quem deseja dominar a linha de comando do Linux. A capacidade de usar efetivamente essa ferramenta economiza muito tempo. Em particular, será sobre o shell Bash e 21 comandos úteis. Também falaremos sobre como usar sinalizadores de comando e aliases do Bash para acelerar a entrada de instruções longas.



Leia também em nosso blog uma série de publicações sobre scripts bash

Termos


Conforme você aprende a usar a linha de comando do Linux, você pode encontrar muitos conceitos que serão úteis para navegar. Alguns deles, como "Linux" e "Unix", ou "shell de comando" e "terminal", às vezes são confusos. Vamos falar sobre esses e outros termos importantes.

O Unix é um sistema operacional popular que foi desenvolvido pelo Bell Labs na década de 1970. O código dela era particular.

O Linux é o sistema operacional mais popular do tipo Unix. É usado hoje em uma variedade de dispositivos, incluindo computadores.

Um terminal ou emulador de terminal é um programa que fornece acesso ao sistema operacional. Você pode abrir várias janelas do terminal ao mesmo tempo.

Um shell é um programa que permite enviar comandos escritos em um idioma especial para o sistema operacional.

Bash significa Bourne Again Shell. Essa é a linguagem shell mais comum usada para interagir com o sistema operacional. Além disso, o shell Bash padrão é usado pelo macOS.

A Interface da Linha de Comandos (CLI) é uma maneira de interação entre uma pessoa e um computador, ao usar o que o usuário digita comandos do teclado e o computador, executando esses comandos, exibe mensagens em formato de texto para o usuário. Basicamente, a CLI é usada para obter informações atualizadas sobre determinadas entidades, por exemplo, arquivos e para trabalhar com arquivos. A interface da linha de comando deve ser diferenciada da GUI (Graphical User Interface), usada principalmente pelo mouse. A interface da linha de comandos geralmente é chamada simplesmente de linha de comando.

Um script é um pequeno programa que contém uma sequência de comandos do shell. Os scripts são gravados em arquivos, você pode usá-los repetidamente. Ao escrever scripts, você pode usar variáveis, construções condicionais, loops, funções e outros recursos.

Agora que consideramos termos importantes, quero observar que aqui usarei os termos "Bash", "shell" e "linha de comando" como intercambiáveis, bem como os conceitos de "diretório" e "pasta".

Os fluxos padrão que usaremos aqui são entrada padrão (entrada padrão, stdin ), saída padrão (saída padrão, stdout ) e saída de erro padrão (erro padrão, stderr ).

Se nos exemplos dos comandos que serão dados abaixo, você encontrar algo como my_whatever - isso significa que esse fragmento precisa ser substituído por algo seu. Por exemplo, o nome do arquivo.

Agora, antes de prosseguir com a análise das equipes às quais esse material é dedicado, vamos dar uma olhada em sua lista e em suas breves descrições.

21 Bash Team


Obter informações


  • man : exibe o manual do usuário (ajuda) para o comando.
  • pwd : exibe informações sobre o diretório ativo.
  • ls : exibe o conteúdo do diretório.
  • ps : permite visualizar informações sobre processos em execução.

▍ Manipulação do sistema de arquivos


  • cd : altera o diretório de trabalho.
  • touch : crie um arquivo.
  • mkdir : crie um diretório.
  • cp : copiar arquivo.
  • mv : move ou exclui um arquivo.
  • ln : criação de link.

Redir Redirecionamento de E / S e pipelines


  • < : redirecionamento stdin .
  • > : redirecionamento stdout .
  • | : redirecionando a saída de um comando para a entrada de outro comando usando o pipeline.

EadingLendo arquivos


  • head : leia o início do arquivo.
  • tail : leia o final do arquivo.
  • cat : lendo um arquivo e exibindo seu conteúdo na tela ou concatenando arquivos.

▍ Apague arquivos, pare processos


  • rm : exclua o arquivo.
  • kill : interrompa o processo.

▍Pesquisar


  • grep : procure por informações.
  • ag : equipe de pesquisa avançada.

▍Arquivamento


  • tar : crie e trabalhe com arquivos.

Vamos falar sobre esses comandos com mais detalhes.

Detalhes da Equipa


Para começar, vamos lidar com equipes cujos resultados são exibidos na forma de stdout . Normalmente, esses resultados aparecem em uma janela de terminal.

Obter informações


man command_name : a saída do manual de comandos, ou seja, informações de referência.

pwd : exibe o caminho para o diretório de trabalho atual. Ao trabalhar com a linha de comando, o usuário geralmente precisa descobrir exatamente onde ele está no sistema.

ls : exibe o conteúdo do diretório. Este comando também é usado com bastante frequência.

ls -a : gera arquivos ocultos. O sinalizador -a do ls aplicado aqui. O uso de sinalizadores ajuda a personalizar o comportamento da equipe.

ls -l : exibe informações detalhadas do arquivo.

Observe que as bandeiras podem ser combinadas. Por exemplo, assim: ls -al .

ps : visualizar processos em execução.

ps -e : exibe informações sobre todos os processos em execução, não apenas aqueles relacionados ao shell do usuário atual. Este comando é frequentemente usado neste formulário.

▍ Manipulação do sistema de arquivos


cd my_directory : altere o diretório de trabalho para my_directory . Para subir um nível mais alto na árvore de diretórios, use o caminho relativo ../ como my_directory .


Comando Cd

touch my_file : crie my_file no caminho especificado.

mkdir my_directory : Crie a pasta my_directory no caminho especificado.

mv my_file target_directory : mova o arquivo my_file para a pasta my_file . Ao especificar o diretório de destino, você deve usar o caminho absoluto para ele (e não uma construção como ../ ).

O comando mv também pode ser usado para renomear arquivos ou pastas. Por exemplo, pode ser assim:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: crie uma cópia do my_source_file e coloque-a na pasta target_directory .

ln -s my_source_file my_target_file : crie um link simbólico my_target_file para my_source_file . Se você alterar o link, o arquivo original também será alterado.

Se o arquivo my_source_file for excluído, o my_target_file permanecerá. O sinalizador -s do comando ln permite criar links para diretórios.

Agora vamos falar sobre o redirecionamento de E / S e os pipelines.

Redir Redirecionamento de E / S e pipelines


my_command < my_file : substitui o descritor do arquivo de entrada padrão ( stdin ) pelo arquivo my_file . Isso pode ser útil se o comando espera inserir alguns dados do teclado, e esses dados são armazenados em um arquivo com antecedência.

my_command > my_file : redireciona os resultados do comando, ou seja, o que geralmente entra no stdout e é exibido na tela, para o arquivo my_file . Se o arquivo my_file não existir, ele será criado. Se o arquivo existir, ele será substituído.

Por exemplo, após executar o ls > my_folder_contents.txt , será criado um arquivo de texto contendo uma lista do que está no diretório de trabalho atual.

Se em vez do símbolo > usar a construção >> , desde que haja um arquivo para o qual a saída do comando seja redirecionada, esse arquivo não será substituído. Os dados serão adicionados ao final deste arquivo.

Agora dê uma olhada nos dados de pipelining.


A saída de um comando é alimentada na entrada de outro comando. É como conectar um tubo a outro

first_command | second_command first_command | second_command : símbolo de first_command | second_command vertical, | , é usado para enviar os resultados de uma equipe para outra equipe. O fato de o comando localizado no lado esquerdo da construção descrita ser stdout para stdout cai no stdin comando, localizado à direita do símbolo do pipeline.

No Linux, os dados de pipelining podem ser organizados usando quase qualquer comando composto corretamente. Costuma-se dizer que tudo no Linux é um pipeline.

Usando o símbolo do transportador, você pode encadear vários comandos. É assim:

 first_command | second_command | third_command 


Um transportador de várias equipes pode ser comparado a um oleoduto

Observe que quando um comando está à esquerda do | imprime algo no stdout , o que ele imprime imediatamente se torna disponível como um stdin segundo comando. Ou seja, acontece que, usando o pipeline, estamos lidando com a execução paralela de comandos. Às vezes, isso pode levar a resultados inesperados. Detalhes sobre isso podem ser encontrados aqui .

Agora vamos falar sobre a leitura de dados de arquivos e exibi-los na tela.

EadingLendo arquivos


head my_file : lê as linhas desde o início do arquivo e as exibe. Você pode ler não apenas o conteúdo dos arquivos, mas também o que os comandos stdin para stdin , usando esse comando como um elemento do pipeline.

tail my_file : lê as linhas do final do arquivo. Este comando também pode ser usado no pipeline.


A cabeça está na frente e a cauda está nas costas

Se você estiver trabalhando com dados usando a biblioteca pandas, os comandos head e tail deverão ser familiares para você. Se não for esse o caso, dê uma olhada na figura acima e você se lembrará facilmente delas.

Vamos ver outras maneiras de ler arquivos e falar sobre o cat .

O cat exibe o conteúdo do arquivo na tela ou concatena vários arquivos. Depende de quantos arquivos são passados ​​para este comando quando chamados.


Equipe gato

cat my_one_file.txt : quando um comando é transferido para esse comando, ele é exibido no stdout .

Se você der a ela dois ou mais arquivos, ela se comportará de maneira diferente.

cat my_file1.txt my_file2.txt : tendo recebido vários arquivos como entrada, esse comando concatena seu conteúdo e exibe o que aconteceu no stdout .

Se o resultado da concatenação de arquivos precisar ser salvo como um novo arquivo, você poderá usar o operador > :

 cat my_file1.txt my_file2.txt > my_new_file.txt 

Agora vamos falar sobre como excluir arquivos e interromper processos.

▍ Apague arquivos, pare processos


rm my_file : exclui o arquivo my_file .

rm -r my_folder : Exclui a pasta my_folder e todos os arquivos e pastas que ela contém. O sinalizador -r indica que o comando funcionará no modo recursivo.

Para impedir que o sistema solicite confirmação durante cada operação para excluir um arquivo ou pasta, use o sinalizador -f .

kill 012345 : interrompe o processo em execução especificado, dando tempo para desligar corretamente.

kill -9 012345 : finaliza forçosamente o processo em execução especificado. Uma bandeira do formulário -s SIGKILL significa o mesmo que uma bandeira -9 .

▍Pesquisar


Você pode usar comandos diferentes para procurar dados. Em particular, grep , ag e ack . Começamos nossa introdução a esses comandos com grep . Essa é uma equipe confiável e testada pelo tempo, que, no entanto, é mais lenta que outras e não gosta delas, conveniente de usar.


Comando Grep

grep my_regex my_file : pesquisa my_regex em my_file . Quando são encontradas correspondências, a cadeia inteira é retornada para cada uma delas. Por padrão, my_regex tratado como uma expressão regular.

grep -i my_regex my_file : a pesquisa não grep -i my_regex my_file maiúsculas de minúsculas.

grep -v my_regex my_file : retorna todas as linhas que não contêm my_regex . O sinalizador -v significa inversão; assemelha-se ao operador NOT , disponível em várias linguagens de programação.

grep -c my_regex my_file : retorna informações sobre o número de correspondências com o padrão de pesquisa encontrado no arquivo.

grep -R my_regex my_folder : executa uma pesquisa recursiva em todos os arquivos localizados em uma determinada pasta e nas pastas localizadas nela.

Agora vamos falar sobre a equipe ag . Ela apareceu depois grep , ela é mais rápida, é mais conveniente trabalhar com ela.


Equipe de Ag

ag my_regex my_file : retorna informações sobre números de linha e as próprias linhas, nas quais são encontradas correspondências com my_regex .

ag -i my_regex my_file : a pesquisa não ag -i my_regex my_file maiúsculas de minúsculas.

O comando ag processa automaticamente o arquivo .gitignore e exclui da saída o que é encontrado nas pastas ou arquivos listados neste arquivo. É muito conveniente

ag my_regex my_file -- skip-vcs-ignores : o conteúdo dos arquivos dos sistemas de controle automático de versão (como .gitignore ) não é levado em consideração durante a pesquisa.

Além disso, para informar ao comando ag quais caminhos de arquivo excluir da pesquisa, você pode criar um arquivo .agignore .

No início desta seção, mencionamos o comando ack . Os comandos ack e ag são muito semelhantes; podemos dizer que eles são 99% intercambiáveis. No entanto, o comando ag é mais rápido, então eu o descrevi especificamente.

Agora vamos falar sobre como trabalhar com arquivos.

▍Arquivamento


tar my_source_directory : combina os arquivos da pasta my_source_directory em um único arquivo tarball. Esses arquivos são convenientes de usar para transferir grandes conjuntos de arquivos para alguém.


Comando Tar

Os arquivos tarball criados por este comando são arquivos com a extensão .tar (Tape ARchive). O fato de a palavra "fita" estar oculta no nome do comando e na extensão dos nomes dos arquivos criados por ela indica quanto tempo esse comando existe.

tar -cf my_file.tar my_source_directory : cria um arquivo tarball chamado my_file.tar com o conteúdo da pasta my_source_directory . O sinalizador -c significa "create" e o sinalizador -f significa "file".

Para extrair os arquivos que estão no arquivo .tar , use o comando tar com os sinalizadores -x ("extrair", extração) e -f ("arquivo", arquivo).

tar -xf my_file.tar : tar -xf my_file.tar arquivos de my_file.tar para o diretório de trabalho atual.

Agora vamos falar sobre como compactar e descompactar arquivos .tar .

tar -cfz my_file.tar.gz my_source_directory : aqui, usando o sinalizador -z (algoritmo de compressão “zip”) indica que o gzip (GNU zip) deve ser usado para compactar arquivos. A compactação de arquivos economiza espaço em disco ao armazenar esses arquivos. Se os arquivos estiverem planejados, por exemplo, para serem transferidos para outros usuários, isso contribuirá para um download mais rápido desses arquivos.

Você pode descompactar o arquivo .tar.gz adicionando o sinalizador -z ao comando para extrair o conteúdo dos arquivos .tar , que examinamos acima. É assim:

tar -xfz my_file.tar.gz
Deve-se notar que o comando tar possui muitos outros sinalizadores úteis.

Aliases do Bash


Os aliases de bash (também chamados aliases ou abreviações) são projetados para criar nomes abreviados de comandos ou suas seqüências, cuja utilização em vez de comandos comuns acelera o trabalho. Se, por python setup.py sdist bdist_wheel , você tiver um alias bu , atrás do qual o python setup.py sdist bdist_wheel , para chamar esse comando, basta usar esse alias.

Para criar um alias, basta adicionar o seguinte comando ao arquivo ~/.bash_profile :

 alias bu="python setup.py sdist bdist_wheel" 

Se o seu sistema não possui um arquivo ~/.bash_profile , você pode criá-lo usando o comando touch . Após criar um alias, reinicie o terminal, após o qual você pode usar esse alias. Nesse caso, a entrada de dois caracteres substitui a entrada de mais de três dúzias de caracteres do comando, projetado para criar pacotes Python.

Em ~/.bash_profile você pode adicionar aliases para qualquer comando usado com frequência.

▍ Resultados


Neste artigo, analisamos 21 equipes populares do Bash e conversamos sobre a criação de aliases para equipes. Se você está interessado neste tópico, aqui está a série de publicações Bash. Aqui você pode encontrar a versão em pdf dessas publicações. Além disso, se você quiser aprender Bash, lembre-se de que aqui, como no estudo de qualquer outro sistema de software, a prática é importante.

Caros leitores! Quais comandos úteis para iniciantes saberiam que você adicionaria aos discutidos neste artigo?

Leia também em nosso blog uma série de publicações sobre scripts bash

Source: https://habr.com/ru/post/pt445270/


All Articles