[marcado] 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 esta ferramenta de forma eficaz pode economizar muito tempo. Em particular, falaremos sobre o shell Bash e 21 comandos úteis aqui. Também falaremos sobre como usar sinalizadores de comando e aliases Bash para acelerar a digitação de instruções longas.

[marcado] Bash para iniciantes: 21 comandos úteis

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

condições

Ao aprender a trabalhar com a linha de comando do Linux, você encontrará muitos conceitos úteis para navegar. Alguns deles, como “Linux” e “Unix”, ou “shell” e “terminal”, às vezes são confundidos. Vamos falar sobre esses e outros termos importantes.

Unix é um sistema operacional popular desenvolvido pela Bell Labs na década de 1970. Seu código foi fechado.

Linux é o sistema operacional semelhante ao Unix mais popular. Agora é usado em muitos dispositivos, incluindo computadores.

Terminal (terminal), ou emulador de terminal é um programa que dá acesso ao sistema operacional. Você pode ter várias janelas de terminal abertas ao mesmo tempo.

concha (shell) é um programa que permite enviar comandos escritos em uma linguagem especial para o sistema operacional.

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

Interface da Linha de comando (Command Line Interface, CLI) é um método de interação entre uma pessoa e um computador, ao utilizar o qual o usuário insere comandos do teclado, e o computador, ao executar esses comandos, exibe mensagens em formato de texto para o usuário. A CLI é usada principalmente para obter informações atualizadas sobre determinadas entidades, por exemplo, sobre arquivos, e para trabalhar com arquivos. A interface de linha de comando deve ser diferenciada da interface gráfica do usuário (GUI), que usa principalmente o mouse. A interface da linha de comando costuma ser chamada simplesmente de linha de comando.

Escrita (script) é um pequeno programa que contém uma sequência de comandos shell. Os scripts são gravados em arquivos e podem ser usados ​​repetidamente. Ao escrever scripts, você pode usar variáveis, condicionais, loops, funções e outros recursos.

Agora que cobrimos os termos importantes, quero salientar que usarei os termos "Bash", "shell" e "linha de comando" de forma intercambiável aqui, bem como os termos "diretório" e "pasta".

Padrão córregos, que usaremos aqui é a 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 comandos de exemplo que serão dados abaixo, você encontrará algo como my_whatever - isso significa que este fragmento precisa ser substituído por algo seu. Por exemplo, o nome de um arquivo.

Agora, antes de prosseguirmos com a análise dos comandos aos quais este material se dedica, vejamos sua lista e suas breves descrições.

21 comandos Bash

▍ Obtendo informações

  • man: exibe o guia do usuário (ajuda) do comando.
  • pwd: exibe informações sobre o diretório de trabalho.
  • ls: exibe o conteúdo de um 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: Copie um arquivo.
  • mv: mova ou exclua um arquivo.
  • ln: crie um link.

▍Redirecionamento de E/S e pipelines

  • <: redirecionar stdin.
  • >: redirecionar stdout.
  • |: canalizou a saída de um comando para a entrada de outro comando.

▍Leitura de arquivos

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

▍Excluir arquivos, interromper processos

  • rm: Exclua um arquivo.
  • kill: pare o processo.

▍Pesquisar

  • grep: busca de informações.
  • ag: comando avançado para pesquisa.

▍Arquivamento

  • tar: criando arquivos e trabalhando com eles.

Vamos falar sobre esses comandos com mais detalhes.

Detalhes da equipe

Para começar, vamos lidar com os comandos cujos resultados são emitidos no formato stdout. Geralmente esses resultados aparecem em uma janela de terminal.

▍ Obtendo informações

man command_name: exibe o guia de comandos, ou seja, informações de ajuda.

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 de um diretório. Este comando também é usado com bastante frequência.

ls -a: mostrar arquivos ocultos. bandeira aplicada aqui -a equipes ls. O uso de flags ajuda a customizar o comportamento dos comandos.

ls -l: exibe informações detalhadas sobre os arquivos.

Observe que os sinalizadores podem ser combinados. Por exemplo - assim: ls -al.

ps: visualize processos em execução.

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

▍Manipulação do sistema de arquivos

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

[marcado] Bash para iniciantes: 21 comandos úteis
comando cd

touch my_file: criação de arquivo my_file ao longo do caminho dado.

mkdir my_directory: crie uma pasta my_directory ao longo do caminho dado.

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

equipe mvtambé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
: crie uma cópia de um arquivo my_source_file e coloque-o em uma pasta target_directory.

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

Se o arquivo my_source_file será excluído, então my_target_file permanecerá. Bandeira -s equipes ln permite que você crie links para diretórios.

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

▍Redirecionamento de E/S e pipelines

my_command < my_file: substitui o descritor de arquivo de entrada padrão (stdin) por arquivo my_file. Isso pode ser útil se o comando estiver aguardando alguma entrada do teclado e esses dados já estiverem salvos em um arquivo.

my_command > my_file: redireciona os resultados do comando, ou seja, o que normalmente entraria stdout e saída para a tela, para um arquivo my_file. Se o arquivo my_file não existe - ele é criado. Se o arquivo existir, ele será sobrescrito.

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

Se em vez do símbolo > use a construção >>, então, desde que exista o arquivo para o qual a saída do comando é redirecionada, esse arquivo não será sobrescrito. Os dados serão adicionados ao final deste arquivo.

Agora vamos dar uma olhada no processamento do pipeline de dados.

[marcado] Bash para iniciantes: 21 comandos úteis
A saída de um comando é alimentada na entrada de outro comando. É como conectar um tubo a outro

first_command | second_command: símbolo do transportador, |, é usado para enviar a saída de um comando para outro comando. O que o comando do lado esquerdo da estrutura descrita envia para stdout, Cair em stdin comando à direita do símbolo do pipeline.

No Linux, os dados podem ser canalizados usando praticamente qualquer comando bem formado. Costuma-se dizer que tudo no Linux é um pipeline.

Você pode encadear vários comandos usando o símbolo de pipeline. Se parece com isso:

first_command | second_command | third_command

[marcado] Bash para iniciantes: 21 comandos úteis
Um pipeline de vários comandos pode ser comparado a um pipeline

Observe que quando o comando à esquerda do símbolo |, gera algo para stdout, o que ela produz está imediatamente disponível como stdin segunda equipe. Ou seja, verifica-se que, por meio do pipeline, estamos lidando com a execução paralela de comandos. Às vezes, isso pode levar a resultados inesperados. Detalhes sobre isso podem ser lidos aqui.

Agora vamos falar sobre a leitura de dados de arquivos e sua exibição na tela.

▍Leitura de arquivos

head my_file: lê as linhas do início de um arquivo e as imprime na tela. Você pode ler não apenas o conteúdo dos arquivos, mas também o que os comandos geram stdinusando este comando como parte do pipeline.

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

[marcado] Bash para iniciantes: 21 comandos úteis
A cabeça (cabeça) está na frente e a cauda (cauda) está atrás

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

Considere outras maneiras de ler arquivos, vamos falar sobre o comando cat.

Equipe cat imprime o conteúdo de um arquivo na tela ou concatena vários arquivos. Depende de quantos arquivos são passados ​​para este comando quando chamado.

[marcado] Bash para iniciantes: 21 comandos úteis
comando gato

cat my_one_file.txt: quando um único arquivo é passado para este comando, ele é enviado para stdout.

Se você fornecer dois ou mais arquivos, ele se comportará de maneira diferente.

cat my_file1.txt my_file2.txt: tendo recebido vários arquivos como entrada, este comando concatena seus conteúdos e exibe o que aconteceu em 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.

▍Excluir arquivos, interromper processos

rm my_file: excluir arquivo my_file.

rm -r my_folder: exclui uma pasta my_folder e todos os arquivos e pastas que ele contém. Bandeira -r indica que o comando será executado em modo recursivo.

Para evitar que o sistema peça confirmação cada vez que um arquivo ou pasta for excluído, use o sinalizador -f.

kill 012345: interrompe o processo em execução especificado, dando-lhe tempo para encerrar normalmente.

kill -9 012345: encerra à força o processo em execução especificado. Ver bandeira -s SIGKILL significa o mesmo que a bandeira -9.

▍Pesquisar

Você pode usar comandos diferentes para pesquisar dados. Em particular - grep, ag и ack. Vamos começar a nos familiarizar com esses comandos com grep. Este é um comando confiável e testado pelo tempo, que, no entanto, é mais lento que outros e não é tão conveniente de usar quanto é.

[marcado] Bash para iniciantes: 21 comandos úteis
comando grep

grep my_regex my_file: pesquisas my_regex в my_file. Se uma correspondência for encontrada, a string inteira será retornada para cada correspondência. Padrão my_regex tratado como uma expressão regular.

grep -i my_regex my_file: a pesquisa é realizada sem distinção entre maiúsculas e minúsculas.

grep -v my_regex my_file: retorna todas as linhas que não contêm my_regex. Bandeira -v significa inversão, assemelha-se ao operador NOT, encontrado em muitas linguagens de programação.

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

grep -R my_regex my_folder: realiza uma pesquisa recursiva em todos os arquivos localizados na pasta especificada e nas pastas aninhadas nela.

Agora vamos falar sobre a equipe ag. Ela veio mais tarde grep, é mais rápido, é mais conveniente trabalhar com ele.

[marcado] Bash para iniciantes: 21 comandos úteis
comando ag

ag my_regex my_file: retorna informações sobre os números das linhas e as próprias linhas nas quais foram encontradas correspondências com my_regex.

ag -i my_regex my_file: a pesquisa é realizada sem distinção entre maiúsculas e minúsculas.

Equipe ag processar automaticamente o arquivo .gitignore e exclui da saída o que é encontrado nas pastas ou arquivos listados nesse arquivo. É muito confortável.

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

Além disso, para informar a equipe ag em quais caminhos de arquivo você deseja excluir da pesquisa, você pode criar um arquivo .agignore.

No início desta seção, mencionamos o comando ack. Equipes ack и ag muito semelhantes, podemos dizer que são 99% intercambiáveis. No entanto, a equipe ag funciona mais rápido, é por isso que o descrevi.

Agora vamos falar sobre como trabalhar com arquivos.

▍Arquivamento

tar my_source_directory: concatena arquivos de uma pasta my_source_directory em um único arquivo tarball. Esses arquivos são úteis para transferir grandes conjuntos de arquivos para alguém.

[marcado] Bash para iniciantes: 21 comandos úteis
comando tar

Os arquivos tarball gerados por este comando são arquivos com a extensão .tar (Arquivo de fita). O fato de a palavra “tape” (fita) estar oculta no nome do comando e na extensão dos nomes dos arquivos que ele cria indica há quanto tempo esse comando existe.

tar -cf my_file.tar my_source_directory: cria um arquivo tarball chamado my_file.tar com conteúdo da pasta my_source_directory. Bandeira -c significa "criar" (criação), e a bandeira -f como "arquivo" (arquivo).

Para extrair arquivos de .tar-arquivo, use o comando tar com bandeiras -x ("extrair", extração) e -f ("arquivo", arquivo).

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

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

tar -cfz my_file.tar.gz my_source_directory: aqui usando a bandeira -z ("zip", algoritmo de compactação) indica que o algoritmo deve ser usado para compactar arquivos gzip (GNUzip). A compactação de arquivos economiza espaço em disco ao armazenar esses arquivos. Se os arquivos forem planejados, por exemplo, para serem transferidos para outros usuários, isso contribui para um download mais rápido de tais arquivos.

Descompacte o arquivo .tar.gz você pode adicionar uma bandeira -z para o comando extrair conteúdo .tar-files, que discutimos acima. Se parece com isso:

tar -xfz my_file.tar.gz
Vale ressaltar que a equipe tar Existem muitos outros sinalizadores úteis.

Aliases do Bash

Aliases Bash (também chamados de aliases ou abreviaturas) são projetados para criar nomes abreviados de comandos ou suas sequências, cujo uso em vez de comandos regulares acelera o trabalho. Se você tiver um apelido bu, que oculta o comando python setup.py sdist bdist_wheel, então para chamar este comando, basta usar este alias.

Para criar tal 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 o arquivo ~/.bash_profile, então você mesmo pode criá-lo usando o comando touch. Após criar o alias, reinicie o terminal, após o qual você poderá usar este alias. Neste caso, a entrada de dois caracteres substitui a entrada de mais de três dezenas de caracteres do comando, que se destina a montagem Pacotes Python.

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

▍Resultados

Nesta postagem, cobrimos 21 comandos Bash populares e falamos sobre a criação de aliases de comando. Se você estiver interessado neste tópico - aqui uma série de publicações dedicadas ao Bash. é Você pode encontrar uma versão em PDF dessas publicações. Além disso, se você quiser aprender Bash, lembre-se de que, como acontece com qualquer outro sistema de programação, a prática é fundamental.

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

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

[marcado] Bash para iniciantes: 21 comandos úteis

Fonte: habr.com

Adicionar um comentário