Pesquisa de site

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.