/ / Guia para iniciantes de scripts de shell 3: comandos e cadeias mais básicas

Guia do iniciante para scripts de shell 3: comandos e cadeias mais básicas

banner-01

Você aprendeu a criar scripts, useargumentos e construir para loops. Agora, vamos dar uma olhada em alguns comandos mais básicos, manipulação de arquivos de texto e redirecionar entrada e saída para arquivos e outros comandos.

Alguns comandos úteis básicos

Já fornecemos a você uma análise básica dos scripts de shell e um esboço baseado em exemplos de loops, mas não deixe de conferir esses artigos se você perdeu o nosso guia de scripts de shell até agora.

A linha de comando é maravilhosa por vários motivos,e o redirecionamento é um dos mais importantes. Se você tivesse que anotar e reproduzir a saída de todos os comandos para executar outras ações ou usá-las para outra coisa, todos nós ficamos loucos há muito tempo. O redirecionamento nos permite usar essa saída e salvá-la ou usá-la imediatamente como uma entrada para outro comando. Também podemos usar arquivos como entradas para outros comandos.

Antes de prosseguirmos, vamos abordar alguns comandos básicos que podem ser úteis em muitos lugares diferentes.

eco - Este comando simplesmente imprime (exibe) todo o seu argumento na linha de comando como saída

argumento de eco com espaços

eco 1

Como você pode ver, caracteres especiais precisam ser"Escaparam" para que sejam tratados normalmente. Isso é feito usando uma barra invertida () na frente do caractere. É uma ideia melhor usar aspas. O comando echo também funciona com variáveis.

eco 2

Como você pode ver, aspas simples e duplas se comportam de maneira diferente. Para obter mais informações, consulte Qual é a diferença entre aspas simples e duplas no Bash Shell?

gato - Este comando exibe o conteúdo dos arquivos de texto como saída.

cat file_to_be_read

Digamos que criamos esse arquivo de texto no nano:

lista nano

Quando usamos o comando cat no arquivo, podemos ver o resultado.

lista de gatos

grep - Este é um dos mais poderosos ecomandos úteis disponíveis para você no Linux. Significa Global / Regular Expression Print. Ele examina um arquivo e imprime qualquer linha que corresponda a um padrão específico. Como esse padrão é baseado na "expressão regular", uma linha concisa pode produzir uma infinidade de padrões a serem correspondidos. Para não, no entanto, você pode inserir uma andorinha-do-mar para pesquisar.

arquivo de padrão grep

grep

Garanto que o grep pode fazer mais, mas por enquanto vamos nos ater às coisas mais fáceis.

Redirecionando Saídas

Para redirecionar a saída de um comando para um arquivo, usamos um caractere especial, o símbolo maior que (>).

Vamos mudar nossa lista, sim? Digite o seguinte comando:

eco pepperoni> lista

eco gt list

Você pode ver que o eco não exibe mais a linha e, quando olhamos para o conteúdo do arquivo "list", vemos o que ecoamos lá.

Observe também que o conteúdo anterior da "lista" foi removido. Tente de novo:

eco gt list 2

Isso pode ser útil quando você deseja reutilizar um arquivo, mas geralmente queremos adicionar a um arquivo existente. Para isso, usamos dois símbolos consecutivos maiores que:

eco pimentão amarelo >> lista

eco gtgt list

Fácil! Vamos usar esse comando para criar uma lista maior, não é?

echo gtgt list 2

Aqui vamos nós. Eu acho que você pode ver por que tantos geeks usam a linha de comando para criar listas de tarefas e afins, mas fica ainda melhor.

Vamos pegar a saída de um comando e colocá-lo em um arquivo:

ls –al /> ~ / lista de root

rootlist

Fazendo listas de arquivos, editando-os para baixo eentão, executar comandos nos que você deseja nunca foi tão simples. E, enquanto executamos essas funções básicas na linha de comando, elas funcionam bem em scripts também.

Tubulação ou encadeamento

Tubulação é assim chamada porque usa a tubulação, (|;compartilhado com a tecla na maioria dos teclados). Essencialmente, ele pega a saída de um comando e o alimenta diretamente a outro. Você pode criar longas cadeias de comandos para obter uma saída desejada muito específica dessa maneira, e é muito conveniente para comandos como grep.

grep pipe

Ele funciona muito como ">", exceto que pode ser encadeado várias vezes e seu efeito é mais geral, pois não precisa passar por um arquivo de texto.

Como você pode ver, o grep diferencia maiúsculas de minúsculas. Você pode usar o sinalizador "-i" para ignorar maiúsculas e minúsculas.

grep não diferencia maiúsculas de minúsculas

Redirecionando entradas

Você também pode obter entradas de arquivos para comandos usando o símbolo menor que (<).

gato <lista

lista lt gato

"Isso não é diferente de usar um argumento!", Você pode dizer. Bem, você estaria correto neste caso. Onde o redirecionamento de entrada realmente é útil é o encadeamento de comandos.

Digamos que queremos filtrar qualquer palavra que contenha "pep" do nosso arquivo "lista" atual para um novo arquivo chamado "revisões".

revisões <lista> do grep pep

entrada-saída 1

Vamos refazer este comando e adicionar uma classificação.

grep pep <lista | ordenar> revisões

entrada-saída 2

Isso usará "pep" como o termo de pesquisa do arquivo de entrada "list", classifique-o em ordem alfabética (todos os termos em maiúsculas seguidos por todos os em minúsculas) e, em seguida, imprima-o no arquivo "revisões".

Para ilustrar o comando de classificação, vejamos o seguinte exemplo:

classificar -f

Como você pode ver, adicionar o sinalizador “-f” ao comando de classificação permite ignorar maiúsculas e minúsculas. Isso facilita a alfabetização de linhas em arquivos de texto e ignora letras maiúsculas quando isso não importa.

Um script simples

Vamos criar um script que tenha o seguinte formato:

script searchterm listfile

Ele aceitará o termo e usará grep para pesquisar em um arquivo de lista, classificar os resultados e enviá-los para outro arquivo.

script1

Aqui está o diretório em que testaremos o script:

script3

E, podemos criar uma lista do que está aqui e executar o script.

script2

Ai está! Quanto mais você aprende as regras das expressões regulares, mais precisamente é possível montar um comando de pesquisa. E qualquer coisa válida entre aspas pode ser substituída pelo seu primeiro argumento!

No que diz respeito à classificação, você pode fazer mais do que apenas classificar em ordem alfabética. Dê uma olhada na página de manual para obter alguns dos seguintes comandos:

  • tsort - uma função de classificação topológica mais avançada
  • tr - permite mapear caracteres específicos para outros caracteres e transcrever entre eles.
  • uniq - remove qualquer item não exclusivo (leia-se: duplicado)
  • awk - uma linguagem / função de processamento de texto realmente avançada que pode ser usada para separar campos nos nomes de arquivos
  • cortar, colar / juntar - comandos úteis para isolar campos de arquivos de texto e adicionar novos dados em colunas
  • look - pesquisa como o grep, mas usa um arquivo de dicionário (que pode ser especificado pelo usuário) para a pesquisa
  • wc - permite obter contagem de palavras, contagem de linhas, contagem de caracteres e muito mais

Hoje demos uma olhada em mais alguns princípios básicos que podemser tão útil na linha de comando quanto nos scripts. Os dados baseados em texto costumam estar no centro das coisas que usamos diariamente, por isso é fundamental trabalhar com eles, pesquisá-los e manipulá-los.

Quais são alguns dos seus scripts favoritos? Tem algum script de uso especial para arquivos baseados em texto? Compartilhe o que você sabe nos comentários!