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.
→
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.
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 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
<
: redirecionarstdin
.>
: redirecionarstdout
.|
: 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 ../
.
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 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
: crie uma cópia de um arquivo
cp my_source_file target_directorymy_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.
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
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
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 stdin
usando 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.
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.
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 é.
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.
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.
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
В ~/.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 -
Caros leitores! Quais comandos úteis para iniciantes você adicionaria aos discutidos neste artigo?
→
Fonte: habr.com