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 bashTermos
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 Cdtouch 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 outrofirst_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 oleodutoObserve 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 costasSe 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 gatocat 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 Grepgrep 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 Agag 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 TarOs 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