0.2 - Bloco1 - Unix & Bash - Parte 2
0.2 - Bloco1 - Unix & Bash - Parte 2
Conteúdos
o comando cat alem do que vimos na aula passada, que era ver os valores dentro de
um arquivo(cat arquivo.txt),
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.
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
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.
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.
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.
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
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
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:
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
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.
—--------------------------------------------------------------------------------
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
# Resultado
Amanda
Fernanda
Fabiano
# 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
—--------------------------------------------------------------------------------
Agora que você já sabe os comandos básicos do Bash, você vai aprender
como funciona o controle de acesso aos arquivos no 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.
esse CHMOD serve para modificar as caracteristicas de um arquivo ou diretorio. ele pode
sem poder ler o arquivo o comando cat irá aparecer permission denied
sem poder escrever o comando cat > permission denied
—--------------------------------------------------------------------------------
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:
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
OBS:os processos podem estar em execução, background ou suspensos para ver isso use
o comando jobs descrito abaixo.
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
esse processo acima é o processo 6010 que usamos o sleep e ctrl+z explicados acima.
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.
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
COMANDO find
obs: o find . significa que a busca é para fazer no diretorio que atual que
o susuario está dentro.
find . -type d
find . -type f
# Resultado
./teste/exemplo.txt
./teste/exemplo
# Resultado
./teste/exemplo.txt
# 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.
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]
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
-s, –squeeze-repeats
Substituir cada sequência de um caractere repetido listado no conjunto1 com uma única
ocorrência do caractere
-t, –truncate-set1
–help
–version
\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 Significado
Exemplos
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):
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.