0% acharam este documento útil (0 voto)
39 visualizações27 páginas

0.2 - Bloco1 - Unix & Bash - Parte 2

Este documento ensina sobre: (1) Comandos como find, redirecionamento de entrada e saída e alteração de permissões no Unix; (2) A importância de variáveis de ambiente e processos no Unix; (3) Detalhes sobre comandos como cat, echo, sort e find.

Enviado por

thiago m
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
39 visualizações27 páginas

0.2 - Bloco1 - Unix & Bash - Parte 2

Este documento ensina sobre: (1) Comandos como find, redirecionamento de entrada e saída e alteração de permissões no Unix; (2) A importância de variáveis de ambiente e processos no Unix; (3) Detalhes sobre comandos como cat, echo, sort e find.

Enviado por

thiago m
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 27

Unix & Bash - Parte 2

Você será capaz de:


Utilizar o comando find ;
Utilizar os operadores > (maior), >> (maior maior) e | (pipe) no terminal;
(chamados de operadores DE redirecionamento)
Alterar as permissões de arquivos e diretórios;
Verificar o status e enviar sinais a processos UNIX;

Por que isso é importante?


Conhecer variáveis de ambiente e saber como usá-las no seu código é
uma das principais habilidades que você irá usar para trazer flexibilidade
e segurança em seu código. Imagine que você precisa fazer um script que
se conecte com uma máquina remota, e precise de usuário e senha. Você
colocaria a senha direto no script ? 🤔

Quando se trabalha usando o terminal, cada comando que você digita é


executado dentro de um processo. Então é importante saber como você
pode se comunicar com tais processos quando, por exemplo, quiser
terminar a execução de algum que está travado. 🔫

Conhecer sobre permissões é uma outra habilidade importante para


garantir que os arquivos que você manipula na máquina (códigos,
configurações, etc) não sejam alterados ou executados por pessoas
indesejadas.

Conteúdos

Primeiro, você vai aprender a tratar inputs e outputs (entradas e saídas)


no terminal.

COMANDO CAT para receber inputs

o comando cat alem do que vimos na aula passada, que era ver os valores dentro de
um arquivo(cat arquivo.txt),

ele também pode servir para armazenar valores como inputs.


para fazer isso só escreva cat e aperte ENTER, digite o valor que quer armazenar e a
maquina irá te retorna o que escreveu.
para sair do comando cat aperte ctrl+D
COMANDO CAT >
o sinal de > no cat com o sinal > serve para colocar valores (digitados, de um
arquivo ou mais arquivos) e transforma os valores de outro arquivo nesses valores.
após usar o comando cat > arquivo.txt, você poderá digitar os valores que quer
adicionar escreva-os e aperte crtl+D para sair.
OBS:Esse caso o arquivo não exista no diretório ele irá criar o arquivo e adicionar os
valores.
OBS: caso haja algum conteúdo no arquivo, ele será substituído

vamos agora observar o arquivo usando o cat com o nome do arquivo para
visualizar/observar o seu conteúdo e verificar se os valores foram adicionados
corretamente.

COMANDO CAT ARQUIVO1 > ARQUIVO2

O comando cat arquivo1 > arquivo 2 pega os valores do arquivo1 e os coloca como
sendo do arquivo2, substituindo os valores anteriores do arquivo 2. observe nos
exemplos abaixo
arquivo1.txt tem os valores azul , amarelo, verde
arquivo2.txt tem os valores carro e moto
apos o comando os valores foram substituidos arquivo2 ficando iguais os do
arquivo1

OMANDO CAT ARQUIVO 1 ARQUIVO2 > ARQUIVO3 para adicionar os valores de 2


arquivos em 1.

Para coloca os valores (digitados ou de um, dois ou mais arquivos)em um ou mais


arquivos em outro basta, colocar o nome dos arquivos que quer mover ,depois > e
depois o arquivo que vai receber os valores.
sintaxe:cat ”nome do arquivo 1” “nome do arquivo 2” > “nome do “arquivo que vai
receber os valores”
Observe que os valores são colocados na ordem que foram nomeados, os valores do
primeiro arquivo e depois o do segundo… no arquivo desejado

COMANDO CAT >>

serve para adicionar valores no final dos valores de um arquivo,


OBS:O cat >> não substitui com o cat > ele somente adiciona novos valores ao
arquivo destino.

COMANDO ECHO “texto“

O echo é um comando utilizado em scripts ou no terminal para


exibir(imprimir) mensagens na tela ou em um arquivo.

Dica: se por acaso esquecer de fechar um arquivo

COMANDO ECHO “texto” > “arquivo.


O echo pode ser usado para colocar textos dentro de arquivos.
echo "Este é mais um teste" > teste.txt

observe que podemos usar o > ou o >> neste comando. respectivamente, um vai
transformar naquele valor, e o outro vai adicionar aos valores daquele arquivo.
ex:echo "The quick brown fox jumps over the lazy dog." > phrases2.txt
echo "Quick fox jumps nightly above wizard." >> phrases2.txt

COMANDO SORT

esse comando faz com que se ordene a visualização em ordem alfabética crescente
os valores de um arquivo. OBS: só sort não altera o arquivo em si.
OBS: caso o arquivo nao exista será criado.

COMANDO SORT <

esse comando sort ordena os valores, mas com o < ordena somente a visualização
os valores de um arquivo em ordem alfabética. não mudando em si os valores. ex:
sorte < cores.txt

OBS: esse comando sort < não modifica a ordem dos valores só sua visualização.
se você usar um cat normal no arquivo continuará fora de ordem.

COMANDO <
esse comando é utilizado junto com outros comandos que pedem um valor para ao inves de
o usuario digitar valor para um comando ele receber a entrada de um arquivo. para mandar
um comando para um arquivo sem modifica-lo. este arquivo não cria novos arquivos.
ex: o comando sort sozinho ele receber valores então podemos usar o <

perceba acima que os valores de valores.txt foram enviados para sort <, mas não foram
mandados para canto nenhum então continuam iguais como pode ser visto abaixo.

COMANDO sort < >

esse comando serve para ordenar a visualização de um arquivo(sem modifica-lo) e


faz esses valores ordenados se tornarem os valores em um outro arquivo.
sintaxe: sort < “arquivo que quer odenar” > “arquivo que quer criar ou adicionar
com os valores ordenados “
no exemplo acima pedimos para organizar os valores de cores.txt e mandar esses
valores para ao coresOrdenadas.txt.

COMANDO SORT >


cuidado com sort >arquivo ele vai aparecer para colocar valores quando terminar com
ctrl+d ele vai organizar o que foi digitado e substituir nos valores do arquivo.

veja o cat valores.txt mostra que está vazio. usa o sort > , digita os valores cinza azul
branco e amarelo., e substitui organizado em valores.txt.

COMANDO SORT “nome de arquivo1” > “nome de OUTRO arquivo”


OBS:se vocẽ usar o sort de um arquivo com e envia com > para o mesmo arquivo ele vai
deixar o arquivo VAZIO. se quiser para organizar um arquivo e mandar para ele mesmo use
o sort arquivo -o arquivo

existe a variação -o do sort que serve como o >, porém você consegue dar o sort e enviar
para o mesmo arquivo. exemplo sort frases.txt -o treino.txt

COMANDO SORT >>

vai receber valores para digitar, quando terminar aperte ctrl+d, irá organizar os valores
digitados e adicionar no final dos valores existentes no arquivo.
ex: sort >> valores.txt digitar amar brincar viver ctrl+d

OBS:caso o arquivo não exista será criado.


OBS: não será possivel fazer para o mesmo arquivoex: sort arquivo1 >> arquivo1
COMANDO WHO

saber pessoas os usuários que tem acesso ao terminal e quando realizou acesso.

Utilizando o |(pipe)
|(pipe) serve para realizar um comando com algum outro comando. o | canaliza a
saída do primeiro comando para a entrada do segundo, dessa forma
conseguimos realizar comandos de forma sucessiva
EXEMPLO DE USO DO | (PIPE)
Considere que queremos uma lista com todos os nomes que contenham
a letra "F" e que nosso resultado esteja em ordem alfabética
Para isso podemos realizar o comando abaixo:

grep F nomes.txt | sort


# Resultado
Fabiano
Fernanda

veja que ele fez a busca do grep por F e os ordenou com o sort.
lembre-se: grep é o comando que faz uma busca de algo entre os
valores de um arquivo. mais detalhes na aula anterior

Que tal procurar nos processos um processo especifico. ex: procurar nos processos um
sleep. ex: ps | grep sleep

outro exemplo do pipe com grep


grep -v b phrases2.txt | wc -l
o exemplo acima ele vai procurar em linhas com a letra e contar as linhas
podemos fazer isso com o comando who.

WHO | SORT irá pegar o comando who e colocar em ordem com o sort.

WHO | WC -L
o comando WHO | WC -l esse comando vai pegar o comando who e contar o numero
de linhas(L), para saber quantos usuários podem acessar.

—--------------------------------------------------------------------------------

Para fixar o conhecimento da diferença entre os operadores >


(maior), >> (maior maior) e | (pipe) veja o exemplo abaixo:

# Considere o arquivo nomes.txt para os exemplos a seguir


# Seu conteúdo inicial é:
Ana
Maria
João

# O > redireciona a saída padrão para um arquivo, sendo assim


# caso haja algum conteúdo no arquivo, ele será substituído
cat > nomes.txt
# Digite o nome "Amanda" e encerre o cat (Ctrl + D)

cat nomes.txt
# Resultado
Amanda
(observe que substituiu os valores anteriores)
# O >> anexa a saída padrão a um arquivo. Sendo assim, ele adiciona
# o que for digitado ao final do arquivo em questão

cat >> nomes.txt


# Digite o nome "Fernanda", depois `enter` e o nome "Fabiano", e
encerre o cat (Ctrl + D)

cat nomes.txt
# Resultado
Amanda
Fernanda
Fabiano

# O | canaliza a saída do primeiro comando para a entrada do segundo,


# dessa forma conseguimos realizar comandos de forma sucessiva

# Considere que queremos uma lista com todos os nomes que contenham
# a letra "F" e que nosso resultado esteja em ordem alfabética
# Para isso podemos realizar o comando abaixo

grep F nomes.txt | sort


# Resultado
Fabiano
Fernanda

—--------------------------------------------------------------------------------

Agora que você já sabe os comandos básicos do Bash, você vai aprender
como funciona o controle de acesso aos arquivos no Unix.

NIVEIS DE ACESSO DO UNIX

COMANDO LS -L

o comando ls -l mostra arquivos com o comando ls, mas ele fornece maiores detalhes como
os acessos, o usuario, grupo e o tipo, tamanho e data de ultima modificação
vamos criar um arquivo chamado arquivo.txt olhe os acessos de um arquivo recém criado.

primero parte( 1º caracter)


d -no inicio da sequencia significa que um diretório
- (hífen)- no começo da da sequencia significa que é um arquivo(arquivo comum, não
diretorio)

segunda parte( 2º ao 4º caracter)- U


r - significa o acesso de leitura (read) de arquivo ou diretorio
w - significa que pode escreve e modificar (write) de arquivo ou diretorio
x - executar um arquivo ou acessar um diretorio com o comando cd(execute)
- se tiver um hifen significa denied que não tem um dos valores dessa parte.

terceira parte(5º ao 7º caracter)- G


significa o que seu grupo pode com o arquivo. os caracteres repetem da segunda parte
podendo ter r,w,x,-

quarta parte(8º ao 10º caracter)- O


outros usuários podem fazer tem tem r,w,x
COMANDO CHMOD

esse CHMOD serve para modificar as caracteristicas de um arquivo ou diretorio. ele pode

ser usado com U(usuario atual) 2º ao 4º


com G(grupo) do 5 ao 7º caracter
com O(outros usuarios) do 8º ao 10º caracter
com A(todos (all)
depois coloca + ou -, para adicionar ou tirar, respectivamente uma caracteristica
+ adiciona uma permissão
- remove uma permissão
depois coloca as caracteristica que quer modificar
R- se refere ao read
W-se refere ao write
X- se refere ao execute

exemplo: acima usamos o chmod u-rw


significa que removemos o R e o W do usuário

sem poder ler o arquivo o comando cat irá aparecer permission denied
sem poder escrever o comando cat > permission denied

vamos então devolver o acesso de R e W ao usuario por chmod u+rw

Symbol Permission Object Description

r Read File Designated users can open and read the


contents of a file.

Directory Designated users can list files in the


directory.

w Write File Designated users can modify the contents


of the file or delete the file.

Directory Designated users can add files or add links


in the directory. They can also remove files
or remove links in the directory.

x Execute File Designated users can execute the file, if it is


a program or shell script. They also can run
the program with one of the exec(2) system
calls.

Directory Designated users can open files or execute


files in the directory. They also can make
the directory and the directories beneath it
current.

- Denied File and Designated users cannot read, write, or


Directory execute the file.

—--------------------------------------------------------------------------------
Vamos entender um pouco mais a fundo as permissões? Abra seu
terminal e digite o comando ls -l ou ll e veja detalhadamente o que
significa abaixo:

● Permissões => É possível verificar o tipo do item e nível de


permissão para Leitura, Escrita e Execução de item ou diretório;
● Links => Número de ligações que o item possui, no caso do
diretório, número de subdiretórios que possui;
● Proprietário => Quem é a pessoa dona, quem criou. É o diretório
padrão da pessoa usuária, o home;
● Grupo => Grupo ao qual pertence o item ou diretório. Utilizado
para dar permissões à outras pessoas;
● Tamanho => Em Bytes;
● Data e Hora => Momento em que foi criado ou última
modificação;
● Nome => Nome do item ou diretório;

Você aprendeu no vídeo como alterar as permissões no modo literal


(caracteres), mas também é possível usar o modo octal. Para
compreendermos esta outra forma, precisamos entender que eles são
administrados por meio de valores como descrito abaixo:

● Leitura r - tem valor de 4


● Escrita w - tem valor de 2
● Execução x - tem valor de 1

Esses valores são permissões com base em bits de ligados = 1 e


desligados = 0 ,
Copiar
rwx = 111 ( 7 | Acesso Total )
r-- = 100 ( 4 | Somente Leitura )
-w- = 010 ( 2 | Somente Escrita )
--x = 001 ( 1 | Somente Execução )
rw- = 110 ( 6 | Somente Leitura e Escrita )
r-x = 101 ( 5 | Somente Leitura e Execução )
-wx = 011 ( 3 | Somente Escrita e Execução )
--- = 000 ( 0 | Todos Acessos Negados )

Portanto, cada vez que você liga a chave de leitura, atribui-se o valor
para esta chave somando-se com as demais chaves de administração de
escrita e execução caso você também deseje ligá-las. A sintaxe para
realizar esta alteração continua a mesma que no modo literal, sendo
chmod 766 [arquivo ou diretório] . Cada número corresponde aos grupos
de pessoas usuárias, de grupo e de outras pessoas usuárias.
Agora você verá o que são, como listar e manipular os processos e jobs
(trabalhos).
—-----------------------------------------------------------------------------------------------------------------------
VER processos no unix

COMANDO PS

O comando ps serve para ver os processos.

PID - é o numero unico do processo, número de identificação (ID) de um processo.


TTY – O nome do console em que está “logado” o usuário.
TIME - Tempo que o processo utilizou da CPU (horas:minutos:segundos)
CMD - O nome do comando que disparou o processo

OBS:os processos podem estar em execução, background ou suspensos para ver isso use
o comando jobs descrito abaixo.

Algumas opções do comando


● -a : mostra os processos de todos os usuários.
● -A ou -e : mostra todos os processo.
● -f : mostra a árvore de execução de comandos.
● -g grupo : mostra os processos de um determinado nome de grupo.
● -o formato : usa o formato definido pelo usuário, Deve-se usar palavras-
chaves conhecidas como pid, ppid, ni, pri (prioridade) e comm (comando).
● -x : mostra os processos que não foram iniciados no console.
● -u : fornece o nome do usuário e a hora de início do processo.

● Para exibir todos os processos do sistema, independente de terminal, basta


digitar
ps -aux

● Para ver os processos do grupo adm, digite


ps -g adm

Dica:Que tal procurar nos processos um processo específico.


ex: procurar nos processos um sleep. ex: ps | grep sleep

COMANDO SLEEP
o sleep cria um processo que paralisa o terminal por uma quantidade de tempo em
segundos, em quantidade de numero escrito após ele. sintaxe sleep numero
vocẽ ainda poderá escrever no terminal, mas não usar comandos.
então aperte ctrz+Z para deixar suspenso
ou control+C para terminar o processo

COMANDO &

O comando & é utilizado ao final de qualquer outro comando para deixar seus processos
em um processo de backgroud.

isso significa que o processo sleep vai ficar rolando em background podendo ainda usar o
terminal, pelo unix ser um sistema multiprocesso.

observe que esse 10534 que aparece depois de usar o sleep, é o PID. o sleep aparece no
comando ps porque ele ainda está sendo executado.

outro exemplo

COMANDO CTRL+Z

quando um processo estiver sendo executado podemos apertar CTRL+Z para suspender
um processo em execução. na tela do terminal aparece como ^Z

COMANDO CTRL+C

este comando CRTL+C serve para terminar um processo sendo executado no foreground
do terminal. aparece no terminal como ^C. ou seja utilizado para eliminar o trabalho
em execução.
OBS:para matar um outro processo não está em foreground use o comando kill
COMANDO BG

bg coloca 1 processo suspensos em funcionamento no background

esse processo acima é o processo 6010 que usamos o sleep e ctrl+z explicados acima.

podemos ver com o ps que após o bg o processo voltou a funcionar

COMANDO JOBS

jobs mostra todos os processos executados e seus status de execução. rodando, suspenso,
backgroud

vamos então criar 2 sleeps em back ground um de 100 segundos e um de 200 segundos
ao usar o jobs

COMANDO FG %
o comando fg faz um processo voltar a ser executado sendo que em foreground, deve usar
fg %numero do processo na lista. O processo poderá estar suspenso ou ou em execução
de background antes do fg %.

veja criamos um sleep 100, apertamos ctrl+z (^F)para deixar ele suspenso o numero do
processo é o 1 que está dentro do [1]. usamos o fg %1.

COMANDO KILL

O comando kill serve para finalizar um processo. deixando com status de terminado.
temos duas formas:
- kill PID (não mata processos parado precisando dar bg para morrerem ao voltarem a
funcionar)
- kill %numero do processo(mata processo parado na hora)

Podemos matar o processo com kill % usando o numero de fila, deste modo até um
processo parado(suspenso) será morto

kill PID podemos ver o numeos com ps podemos ver que o processo sleep 100 de PID 7539
e que era o de numero [1] na lista de background não existe mais.
OBS: processos parados não são terminados quando usamos kill e numero PID, KILL PID,
para isso depois do kill, faça eles voltarem a ser ativados com o comando bg. observe no
exemplo acima fizemos um sleep 10 apertamos ctrl+z para deixar ele parado, podemos
observar o sleep no jobs e no ps, usamos o kill ao usar o jobs e o ps ele ainda está lá
só morrendo após usar o bg, para voltar a funcionar.
vamos agora usar o kill com o numero de PID. encontrado no ps.

para isso é só colocar kill “numero do PID”. ex: kill 7657

OBS: existem processos que não deixam usar o kill neles, para forçar terminar um
processo desse deve-se usar o kill -9 numero do PID
Você também poderá terminar um processo com kill %numero do processo. com kill% você
poderá terminar até mesmo processos parados.
dica: para ver o numero de fila use o jobs. então ficará mais facil usar o kill %

COMANDO KILLALL
para terminar todos os processos de um tipo existe o killall nome ex:killall sleep

Agora vamos aprender sobre os comandos find , history e echo .

COMANDO find

O find é um comando para pesquisar em diretórios por arquivos ou


outras pastas, de acordo com os parâmetros passados a ele. Esses
parâmetros podem ser name , date , size e type . Caso nenhum atributo
seja passado, ele pesquisará tudo que estiver dentro do diretório atual.
Veja abaixo alguns exemplos de como usá-lo:
sintaxe: find “local da busca” “-parametro” (“-parametro”) “o que quer
procurar”

# Para listar todos os arquivos que terminam em .txt

find . -name "*.txt"

obs: o find . significa que a busca é para fazer no diretorio que atual que
o susuario está dentro.

# Para localizar todos os diretórios

find . -type d

# Para localizar todos os arquivos

find . -type f

# Localizar tanto arquivos quanto diretórios que comecem por algum


trecho

find ./teste -name "exemplo*"

# Resultado

./teste/exemplo.txt

./teste/exemplo

# Localizar somente arquivos que comecem por algum trecho

find ./teste -type f -name "exemplo*"

obs: veja que colocamos 2 parametros -type e -name

# Resultado

./teste/exemplo.txt

# Localizar somente diretórios que comecem por algum trecho

find ./teste -type d -name "exemplo*"

# Resultado

./teste/exemplo

COMANDO HISTORY
O `history` é um comando que mostra todo o histórico de comandos que você executou no
terminal desde que ligou o computador. A quantidade ou o tamanho desse _"histórico"_
podem ser configurados para um número arbitrário de comandos ou para ver todo o
histórico.

history Mostra o histórico de comandos

history | tail”numero” history para pegar os últimos 10 comandos

history | tail -n 6 vai parecer os ultimos 6 comando do history

obs: você também poderia pegar os primeiros 10 valores com o history | head

RECAPITULANDO
Comando tr
Sua função principal é substituir (traduzir) o conteúdo de uma string (texto) recebido via entrada
padrão (STDIN) de um formato para outro, ou ainda excluir caracteres.

O comando tr funciona usando dois conjuntos de conteúdo fornecidos pelo usuário. O primeiro
conjunto pode ser considerado como o conjunto de caracteres original (atual) e o segundo
contém os caracteres que irão ser usados na substituição/exclusão. Por exemplo, podemos
trocar todas as ocorrências de um caracter em especial por outro usando o comando tr.

Sintaxe do comando
tr [opções] conjunto1 [conjunto2]

O comando receberá dados da entrada padrão, localizará os caracteres pertencentes ao


conjunto1 e os substituirá pelos caracteres pertencentes ao conjunto2.

Onde os conjuntos são arquivos ou outras fontes de texto, que serão passadas como argumento
ao comando tr via STDIN (entrada padrão).

Opções

-c, –complement
Usar o complemento do conjunto1 (conjunto inverso)

-d, –delete

Excluir caracteres do conjunto1, sem traduzi-los

-s, –squeeze-repeats

Substituir cada sequência de um caractere repetido listado no conjunto1 com uma única
ocorrência do caractere

-t, –truncate-set1

Truncar o conjunto1 no mesmo comprimento do conjunto2

–help

Mostrar a ajuda do comando e sair

–version

Mostrar informações de versão e sair.

Como especificar os conjuntos de caracteres

Podemos representar os conjuntos de caracteres a serem tratados pelo comando tr usando as


seguintes “classes” de caracteres:

\b Backspace

\f Form feed

\n New line
\r Carriage return

\t Tabulação

\v Tabulação vertical

a-a Faixa de caracteres. Representa uma faixa de caracteres entre os caracteres apresentados,
incluindo-os e em ordem ascendente, como definido pela sequência de colação do sistema

[:classe:] Representa todos os caracteres que pertençam à classe apresentada. Classes


comuns são:

Classe Significado

alnum Caracteres alfanuméricos

alpha Caracteres alfabéticos

blank Espaços em branco

digit Caracteres numéricos

graph Caracteres gráficos

lower Caracteres minúsculos

print Caracteres imprimíveis

punct Caracteres de pontuação

special Caracteres especiais

upper Caracteres em maiúsculas

xdigit Caracteres hexadecimais

Qualquer outro caractere que não foi descrito na tabela representará a si


próprio.

Exemplos

1. Substituir todas as ocorrências do caracter w por v no arquivo teste1, gerando o arquivo de


saída teste2:
$ tr 'w' 'v' < teste1 > teste2

2. Colocar todos os caracteres de um arquivo chamado propaganda.txt em maiúsculas:

$ tr 'a-z' 'A-Z' < propaganda.txt > propaganda-M.txt

3. Vamos excluir todas as ocorrências do caractere # do arquivo teste.conf, gerando um novo


arquivo teste2.conf. Isso equivale a descomentar todas as linhas de um arquivo de texto.
Usaremos a opção -d para isso:

$ tr -d '#' < teste.conf > teste2.conf

4. Vamos arrumar um arquivo que contém um erro comum: caracteres repetidos em sequência.
Por exemplo, vamos transformar todas as ocorrências da string ff no caracter único f no arquivo
teste1, produzindo o arquivo teste2. Usaremos a opção -s do comando (squeeze):

$ tr -s 'ff' < teste1 > teste2

5. Excluir todos os caracteres de um arquivo chamado memorando, exceto letras maiúsculas.


Usaremos a opção -d combinada com -c, que é o complemento – significa que excluiremos tudo
EXCETO o conjunto de caracteres que será fornecido – no caso, A-Z:

$ tr -dc 'A-Z' < memorando > memorando2

Existem diversos outros comandos que podem ser usados para tratar arquivos dessa forma, tais
como sed, awk, cut, que serão abordados em outros artigos.

Você também pode gostar