27Jun
Você aprendeu a criar scripts, usar argumentos e criar loops. Agora, vamos dar uma olhada em alguns comandos mais básicos, manipulação de arquivos de texto e redirecionamento de entrada e saída para arquivos e outros comandos.
Alguns comandos úteis básicos
Já lhe deram uma quebra básica de scripts de shell e um esboço baseado em exemplos de loops, mas não se esqueça de verificar esses artigos se você perdeu nosso guia de scripts de shell até agora.
A linha de comando é maravilhosa por muitos motivos e o redirecionamento é um dos mais prominentes. Se você tivesse que anotar e reproduzir a saída de cada comando, a fim de adotar outras ações ou usar isso para outra coisa, então, todos ficamos loucos há muito tempo. O redirecionamento nos permite usar essa saída e salvá-la ou usá-la imediatamente como entrada para outro comando. Nós também podemos usar arquivos como entradas para outros comandos.
Antes de prosseguir, cubramos alguns comandos básicos que podem ser usados em muitos lugares diferentes.
echo - Este comando simplesmente imprime( exibe) a totalidade de seu argumento na linha de comando como saída
argumento de eco com espaços
Como você pode ver, caracteres especiais precisam ser "escapados" para que eles sejam tratados normalmente. Isso é feito usando uma barra invertida( \) na frente do personagem.É uma idéia melhor usar citações. O comando echo também funciona com variáveis.
Como você pode ver, as cotações simples e duplas se comportam de forma diferente. Para mais informações, verifique qual a diferença entre citações simples e duplas no shell da Bash?
cat - Este comando exibe o conteúdo dos arquivos de texto como saída.
cat file_to_be_read
Digamos que criamos este arquivo de texto em nano:
Quando usamos o comando gato no arquivo, podemos ver sua saída.
grep - Este é um dos comandos mais poderosos e úteis disponíveis para você no Linux. Representa Imprensa de Expressão Global / Regular. Olha através de um arquivo e imprime qualquer linha que corresponda a um padrão específico. Como esse padrão é baseado em "expressão regular", uma linha concisa pode render uma infinidade de padrões a serem combinados. Por não, no entanto, você pode inserir um tern para pesquisar.
grep padrão arquivo
Eu asseguro-lhe, grep pode fazer mais, mas por agora vamos manter as coisas mais fáceis.
Redirecionando Saídas
Para redirecionar a saída de um comando para um arquivo, utilizamos um caractere especial, o símbolo maior que( & gt;).
Vamos mudar a nossa lista, devemos? Digite o seguinte comando:
echo pepperoni & gt;lista
Você pode ver que o eco não exibe a linha mais, e quando olhamos para o conteúdo do arquivo "lista", vemos o que ecoamos lá.
Tome nota também de que os conteúdos anteriores da "lista" foram removidos. Experimente novamente:
Isso pode ser útil quando você deseja reutilizar um arquivo, mas muitas vezes só queremos adicionar a um arquivo existente. Para isso, usamos dois símbolos maiores do que os símbolos:
echo pimentões amarelos & gt; & gt;liste
fácil! Vamos usar esse comando para criar uma lista maior, devemos?
Lá vamos nós. Eu acho que você pode ver por que tantos geeks usam a linha de comando para fazer listas de tarefas e outras, mas fica ainda melhor.
Vamos tirar o resultado de um comando e colocá-lo em um arquivo:
ls -al / & gt;~ / rootlist
Fazer listas de arquivos, editá-los e, em seguida, executar comandos sobre aqueles que você deseja nunca foi mais simples. E, enquanto estamos fazendo essas funções básicas na linha de comando, elas também funcionam bem em scripts.
Piping ou Chaining
Piping é assim chamado porque usa o pipe,( |; compartilhado com a tecla \ na maioria dos teclados).Essencialmente, ele tira o resultado de um comando e o alimenta diretamente para outro. Você pode criar longas cadeias de comandos para obter uma saída desejada muito específica desta forma, e é muito conveniente para comandos como o grep.
Atua muito como "& gt;", exceto que pode ser acorrentado várias vezes e seu efeito é mais geral na medida em que 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 fazer com que ele ignore o caso.
Redirecionando Entradas
Você também pode pegar entradas de arquivos para comandos usando o símbolo inferior a( & lt;).
cat & lt;lista
"Isso não é diferente de usar um argumento!", Você pode dizer. Bem, você estaria correto neste caso. Onde o redirecionamento de entrada realmente é útil é encadear comandos juntos.
Digamos que queremos filtrar qualquer palavra que tenha "pep" nele do nosso arquivo atual da "lista" para um novo arquivo chamado "revisões".
grep pep & lt;lista & gt;revisões
Vamos refazer este comando, e adicionar algumas classificações.
grep pep & lt;lista |classificar & gt;revisões
Isso usará "pep" como o termo de pesquisa da "lista" do arquivo de entrada, classificá-lo em ordem alfabética( todos os termos de maiúsculas e seguidos por todos os termos de minúsculas) e, em seguida, entregá-lo ao arquivo "revisões".
Para ilustrar o comando de ordenação, vejamos o seguinte exemplo:
Como você pode ver, adicionar o sinalizador "-f" ao comando de ordenação permite que você ignore o caso. Isso torna mais fácil para nós alfabetizar linhas em arquivos de texto e ignorar capitalização quando não importa.
Um script simples
Vamos criar um script que tenha o seguinte formulário:
script searchterm listfile
Tomará o termo e usará o grep para pesquisar através de um arquivo de lista, classificar os resultados e, em seguida, enviá-los para outro arquivo.
Aqui está o diretório em que estaremos testando o script em:
E, podemos criar uma lista do que aqui, então execute o script.
Lá você vai! Quanto mais você aprender as regras das expressões regulares, mais precisamente você pode montar um comando de busca. E, tudo o que é válido entre aspas pode ser substituído pelo seu primeiro argumento!
No que diz respeito à classificação, você pode fazer mais do que simplesmente classificar alfabeticamente. Dê uma olhada na página man para alguns dos seguintes comandos:
- tsort - uma função de classificação topológica mais avançada
- tr - permite que você mapeie caracteres específicos para outros caracteres e transcreva entre eles.
- uniq - remove qualquer
- awk não-exclusivo( leitura: duplicada) - um idioma / função de processamento de texto realmente avançado que pode ser usado para separar campos em nomes de arquivos
- cortar, colar / juntar - comandos úteis para isolar campos de arquivos de texto e adicionarnovos dados em colunas
- look - pesquisas como o grep, mas usa um arquivo de dicionário( que pode ser especificado pelo usuário) para a pesquisa
- wc - permite que você obtenha contagem de palavras, contagem de linhas, contagem de caracteres e mais
Demos uma olhadaem alguns mais básicos hoje que podem ser tão úteis na linha de comando quanto nos scripts. Os dados baseados em texto são muitas vezes o cerne das coisas que usamos diariamente, por isso podermos trabalhar com ele, buscá-lo e manipulá-lo é fundamental.
Quais são alguns dos seus scripts favoritos? Tem algum script de uso especial para arquivos baseados em texto? Compartilhe o que você conhece nos comentários!