LFCS #1: Como usar o comando 'sed' para manipulação de arquivos no Linux
A Linux Foundation anunciou a certificação LFCS (Linux Foundation Certified Sysadmin), um novo programa que visa ajudar indivíduos de todo o mundo a obterem certificação em tarefas básicas a intermediárias de administração de sistemas Linux.
Isso inclui suporte a sistemas e serviços em execução, juntamente com solução de problemas e análises em primeira mão, e tomada de decisão inteligente para encaminhar problemas às equipes de engenharia.
Desde a última revisão em 11 de agosto de 2023, contabilizamos meticulosamente os domínios e competências, alinhando-nos com a data efetiva de 11 de maio de 2023, conforme declarado oficialmente por a Fundação Linux.
A série será intitulada Preparação para o LFCS (Linux Foundation Certified Sysadmin) Partes 1 a 33 e cobrirá os seguintes tópicos:
- Part 1
Como usar o comando ‘Sed’ para manipular arquivos no Linux
- Part 2
-
Como instalar e usar Vi/Vim no Linux
- Part 3
Como compactar arquivos e diretórios e localizar arquivos no Linux
- Part 4
Particionando dispositivos de armazenamento, formatando sistemas de arquivos e configurando partição swap
- Part 5
Montar/desmontar sistemas de arquivos locais e de rede (Samba e NFS) no Linux
- Part 6
Montando Partições como Dispositivos RAID – Criando e Gerenciando Backups do Sistema
- Part 7
Gerenciando processos e serviços de inicialização do sistema (SysVinit, Systemd e Upstart
- Part 8
Como gerenciar usuários e grupos, permissões de arquivos e acesso Sudo
- Part 9
Gerenciamento de pacotes Linux com Yum, RPM, Apt, Dpkg, Aptitude e Zypper
- Part 10
Aprendendo scripts básicos de shell e solução de problemas de sistema de arquivos
- Part 11
Como gerenciar e criar LVM usando os comandos vgcreate, lvcreate e lvextend
- Part 12
-
Como explorar o Linux com documentações e ferramentas de ajuda instaladas
- Part 13
Como configurar e solucionar problemas do Grand Unified Bootloader (GRUB)
- Part 14
Monitore o uso de recursos dos processos do Linux e defina limites de processos por usuário
- Part 15
Como definir ou modificar parâmetros de tempo de execução do kernel em sistemas Linux
- Part 16
Implementando controle de acesso obrigatório com SELinux ou AppArmor no Linux
- Part 17
Como definir listas de controle de acesso (ACLs) e cotas de disco para usuários e grupos
- Part 18
Instalando serviços de rede e configurando inicialização automática na inicialização
- Part 19
Um guia definitivo para configurar um servidor FTP para permitir logins anônimos
- Part 20
Configure um servidor DNS de cache recursivo básico e configure zonas para domínio
- Part 21
Como instalar, proteger e ajustar o desempenho do servidor de banco de dados MariaDB
- Part 22
-
Como instalar e configurar o servidor NFS para compartilhamento do sistema de arquivos
- Part 23
Como configurar o Apache com hospedagem virtual baseada em nome com certificado SSL
- Part 24
Como configurar um firewall Iptables para permitir acesso remoto a serviços no Linux
- Part 25
Como transformar um Linux em um roteador para lidar com o tráfego de forma estática e dinâmica
- Part 26
Como configurar sistemas de arquivos criptografados e trocar usando a ferramenta Cryptsetup
- Part 27
Como monitorar o uso do sistema, interrupções e solucionar problemas de servidores Linux
- Part 28
Como configurar um repositório de rede para instalar ou atualizar pacotes
- Part 29
Como auditar o desempenho, a segurança e a solução de problemas da rede
- Part 30
Como instalar e gerenciar máquinas virtuais e contêineres
- Part 31
Aprenda os fundamentos do Git para gerenciar projetos com eficiência
- Part 32
Guia para iniciantes na configuração de endereços IPv4 e IPv6 no Linux
- Part 33
Um guia para iniciantes para criar ligações e pontes de rede no Ubuntu
Esta postagem é a Parte 1 de uma série de 33 tutoriais, que cobrirá os domínios e competências necessários para o exame de certificação LFCS. Dito isto, ligue seu terminal e vamos começar.
Processando fluxos de texto no Linux
O Linux trata a entrada e a saída dos programas como fluxos (ou sequências) de caracteres. Para começar a entender o redirecionamento e os pipes, devemos primeiro entender os três tipos mais importantes de fluxos de E/S (entrada e saída), que são na verdade arquivos especiais (por convenção em UNIX e Linux, fluxos de dados e periféricos, ou arquivos de dispositivos, também são tratados como arquivos comuns).
A diferença entre >
(operador de redirecionamento) e |
(operador de pipeline) é que enquanto o primeiro conecta um comando a um arquivo, o último conecta a saída de um comando a outro comando.
command > file
command1 | command2
Como o operador de redirecionamento cria ou sobrescreve arquivos silenciosamente, devemos usá-lo com extremo cuidado e nunca confundi-lo com um pipeline.
Uma vantagem dos pipes em sistemas Linux e UNIX é que não há nenhum arquivo intermediário envolvido com um pipe – o stdout do primeiro comando não é gravado em um arquivo e depois lido pelo segundo comando.
Para os exercícios práticos a seguir, usaremos o poema “Uma criança feliz” (autor anônimo).
Usando o comando sed
O nome sed é a abreviação de editor de fluxo. Para quem não está familiarizado com o termo, um editor de fluxo é usado para realizar transformações básicas de texto em um fluxo de entrada (um arquivo ou entrada de um pipeline).
Alterar minúsculas para maiúsculas no arquivo
O uso mais básico (e popular) de sed é a substituição de caracteres. Começaremos alterando cada ocorrência de y
minúsculo para Y
MAIÚSCULA e redirecionando a saída para ahappychild2.txt.
O sinalizador g
indica que sed deve realizar a substituição de todas as instâncias de term em cada linha do arquivo. Se este sinalizador for omitido, sed substituirá apenas a primeira ocorrência do termo em cada linha.
Sintaxe Básica do Sed:
sed ‘s/term/replacement/flag’ file
Nosso exemplo:
sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt
Pesquise e substitua o Word no arquivo
Se você quiser procurar ou substituir um caractere especial (como /
, \
, &
) você precisa escapá-lo, no termo ou strings de substituição, com uma barra invertida.
Por exemplo, substituiremos a palavra e por um e comercial. Ao mesmo tempo, substituiremos a palavra I
por You
quando a primeira for encontrada no início de uma linha.
sed 's/and/\&/g;s/^I/You/g' ahappychild.txt
No comando acima, um ^
(sinal circunflexo) é uma expressão regular bem conhecida usada para representar o início de uma linha.
Como você pode ver, podemos combinar dois ou mais comandos de substituição (e usar expressões regulares dentro deles) separando-os com ponto e vírgula e colocando o conjunto entre aspas simples.
Imprimir linhas selecionadas de um arquivo
Outro uso do sed é mostrar (ou excluir) uma parte escolhida de um arquivo. No exemplo a seguir, exibiremos as primeiras 5 linhas de /var/log/messages de 8 de junho.
sed -n '/^Jun 8/ p' /var/log/messages | sed -n 1,5p
Observe que, por padrão, sed imprime todas as linhas. Podemos substituir esse comportamento com a opção -n e então dizer ao sed para imprimir (indicado por p) apenas a parte do arquivo (ou canal) que corresponde ao padrão (8 de junho no início da linha no primeiro caso e linhas 1 a 5 inclusive no segundo caso).
Finalmente, pode ser útil ao inspecionar scripts ou arquivos de configuração inspecionar o próprio código e deixar comentários de fora. O seguinte sed one-liner exclui (d
) linhas em branco ou aquelas que começam com #
(o caractere |
indica um booleano OR< entre as duas expressões regulares).
sed '/^#\|^$/d' apache2.conf
Comando único
O comando uniq nos permite reportar ou remover linhas duplicadas em um arquivo, gravando em stdout por padrão. Devemos observar que uniq não detecta linhas repetidas, a menos que sejam adjacentes.
Assim, uniq é comumente usado junto com um sort anterior (que é usado para classificar linhas de arquivos de texto). Por padrão, sort considera o primeiro campo (separado por espaços) como campo-chave. Para especificar um campo-chave diferente, precisamos usar a opção -k
.
Exemplos de comandos Uniq
O comando du -sch /path/to/directory/* retorna o uso do espaço em disco por subdiretórios e arquivos dentro do diretório especificado em formato legível por humanos (também mostra um total por diretório) e não ordene a saída por tamanho, mas por subdiretório e nome de arquivo.
Podemos usar o seguinte comando para classificar por tamanho.
du -sch /var/* | sort –h
Você pode contar o número de eventos em um log por data, dizendo ao uniq para realizar a comparação usando os primeiros 6 caracteres (-w 6)
de cada linha (onde a data é especificado) e prefixando cada linha de saída pelo número de ocorrências (-c
) com o comando a seguir.
cat /var/log/mail.log | uniq -c -w 6
Finalmente, você pode combinar sort e uniq (como normalmente são). Considere o seguinte arquivo com uma lista de doadores, data da doação e valor. Suponha que queiramos saber quantos doadores únicos existem.
Usaremos o seguinte comando cat para cortar o primeiro campo (os campos são delimitados por dois pontos), classificar por nome e remover linhas duplicadas.
cat sortuniq.txt | cut -d: -f1 | sort | uniq
Comando grep
O comando grep pesquisa em arquivos de texto ou (saída do comando) a ocorrência de uma expressão regular especificada e gera qualquer linha contendo uma correspondência com a saída padrão.
Exemplos de comandos Grep
Exibe as informações de /etc/passwd para o usuário gacanepa, ignorando maiúsculas e minúsculas.
grep -i gacanepa /etc/passwd
Mostra todo o conteúdo de /etc cujo nome começa com rc seguido por qualquer número.
ls -l /etc | grep rc[0-9]
Uso do comando tr
O comando tr pode ser usado para traduzir (alterar) ou excluir caracteres de stdin e gravar o resultado em stdout.
Altere todas as letras minúsculas para maiúsculas no arquivo sortuniq.txt.
cat sortuniq.txt | tr [:lower:] [:upper:]
Aperte o delimitador na saída de ls –l para apenas um espaço.
ls -l | tr -s ' '
Cortar uso do comando
O comando cut extrai porções de linhas de entrada (de stdin ou arquivos) e exibe o resultado na saída padrão, com base no número de bytes (opção -b
), caracteres (-c
)) ou campos (-f
).
Neste último caso (baseado em campos), o separador de campos padrão é uma tabulação, mas um delimitador diferente pode ser especificado usando a opção -d
.
Exemplos de comandos de corte
Extraia as contas de usuário e os shells padrão atribuídos a eles de /etc/passwd (a opção –d
nos permite especificar o delimitador de campo e o –f
A opção indica quais campos serão extraídos.
cat /etc/passwd | cut -d: -f1,7
Resumindo, criaremos um fluxo de texto que consiste no primeiro e no terceiro arquivos não vazios da saída do comando último. Usaremos grep como primeiro filtro para verificar as sessões do usuário gacanepa e, em seguida, comprimiremos os delimitadores em apenas um espaço (tr -s ' '
).
A seguir, extrairemos o primeiro e o terceiro campos com cut e, finalmente, classificaremos pelo segundo campo (endereços IP neste caso) mostrando único.
last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq
O comando acima mostra como vários comandos e pipes podem ser combinados para obter dados filtrados de acordo com nossos desejos. Sinta-se à vontade para executá-lo também por partes, para ajudá-lo a ver a saída que é canalizada de um comando para o outro (a propósito, essa pode ser uma ótima experiência de aprendizado!).
Resumo
Embora este exemplo (junto com o restante dos exemplos do tutorial atual) possa não parecer muito útil à primeira vista, eles são um bom ponto de partida para começar a experimentar comandos usados para criar, editar e manipular arquivos do Linux. linha de comando.
Sinta-se à vontade para deixar suas perguntas e comentários abaixo – eles serão muito apreciados!
O e-book LFCS já está disponível para compra. Solicite sua cópia hoje e comece sua jornada para se tornar um administrador de sistema Linux certificado!
Product Name | Price | Buy |
---|---|---|
The Linux Foundation’s LFCS Certification Preparation Guide | $19.99 | [Buy Now] |
Por último, mas não menos importante, considere comprar seu voucher de exame usando os links a seguir para ganhar uma pequena comissão, que nos ajudará a manter este livro atualizado.