| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

Comandos avançados

Page history last edited by Sérgio Luiz Araújo Silva 12 years, 7 months ago


 

Agendando o download do kurumin

 

 

echo "wget -c http://mirrors.uol.com.br/pub/kurumin/kurumin-7.0.iso" | at 01:00 tomorrow

 

Comandos built-in

Comandos built-in são tratados pelo próprio shell do sistema e portanto são muito mais rápidos veja dois exemplos

 

o comando cd e os redirecionamentos >

 

Criando um arquivo com comando built-in:

 

> folder

 

Busca no bash usando regex

 

if [[ $RESPONSE =~ ^(sim|s|yes|y) ]] ; {
   read -p "   Digite o nome do usuário para o proxy: " USUARIO
   read -p "   Digite a senha para o proxy: " SENHA
}

 

chris@kermit ~ $ experiment=supercall2345i7fragilisticexpi6a7lad22o3c5ious
chris@kermit ~ $ echo ${experiment//[0-9]/}
supercallifragilisticexpialadocious
chris@kermit ~ $ echo ${experiment//[^0-9]/}
23457672235

Comandos auxiliares

Fonte: http://pjtsalina.codigolivre.org.br/doc/linux/revistadolinux/016/comandos.html

 

Fora do shell podemos usar comandos muito poderosos como grep, sed, tr, mail, expr, bc e outros

 

Comandos auxiliares são comandos que não pertencem ao shell, mas são praticamente encontrados em quase todas as distribuições. Nesta edição vamos conhecer alguns comandos auxiliares que podem nos ajudar muito no dia-dia.

 

O grep pesquisa nos arquivos de entrada ou na entrada-padrão as linhas que contenham as expressões solicitadas. Exemplo:

 

  1. grep edison /etc/passwd

edison:x:500:500:Edison Figueira Junior:/home

/edison:/bin/bash

 

O comando acima leu o arquivo /etc/passwd linha por linha e quando a expressão edison foi encontrada, ela foi impressa no stdout (tela). Vamos supor que queremos listar todos os usuários do /etc/passwd que iniciam com o caractere g. Com o caractere ^ no começo da expressão isso é possível:

 

  1. grep ^g /etc/passwd

games:x:12:100:games:/usr/games:

gopher:x:13:30:gopher:/usr/lib/gopher-data:

 

Se quisermos listar todas as linhas que terminem com e temos de acrescentar o caractere $ no final da expressão.

 

  1. grep e$ /etc/passwd

named:x:16:234:Domain name server:/tmp:/bin/false

xfs:x:17:17:X Font Server:/etc/X11/fs:/bin/false

lili:x:501:231:Eliane Cristina:/home/lili:/bin/false

 

Podemos também obter a saída do resultado inverso da pesquisa. Exemplo: se você quiser todas as linhas que não terminem com bash, escreva assim:

 

  1. grep -v bash$ /etc/passwd

daemon:x:2:2:daemon:/sbin:

adm:x:3:4:adm:/var/adm:

lp:x:4:7:lp:/var/spool/lpd:

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:

news:x:9:13:news:/var/spool/news:

uucp:x:10:14:uucp:/var/spool/uucp:

 

E é claro que podemos utilizar um grep dentro de outro através de pipes.

 

  1. grep -v bash$ /etc/passwd | grep -v spool

daemon:x:2:2:daemon:/sbin:

adm:x:3:4:adm:/var/adm:

lp:x:4:7:lp:/var/spool/lpd:

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

 

O sed é um comando que serve para alterar uma stream de um arquivo ou de sua entrada-padrão (STDIN). Exemplo:

 

  1. echo "seja livre use linux" |sed -e s/linux/LINUX/ seja livre use LINUX

 

Esse comando procurou a expressão linux e a trocou para LINUX.

 

Agora vamos ver um exemplo bem mais útil, imagine que você precise enviar um e-mail personalizado para cada usuário agradecendo o seu empenho em um determinado projeto. Com o comando sed isso é bem fácil, precisamos editar o texto e no lugar do nome do usuário devemos colocar um marcador para cada substituição. Exemplo: edite um texto agradece.txt com o seguinte conteúdo:

 

Sr(a) USUARIO,

A Linux Corporation agradece o empenho oferecido ao projeto Software Livre.

Saiba que todos nós ganhamos com seu apoio...

Linus Torvalds

 

Depois que o texto estiver pronto, você poderá executar o seguinte comando:

 

# for usuario in ‘cat /etc/passwd |awk -F":" ‘{print $1}’‘; do sed -e s/USUARIO/$usuario/ agradece.txt| mail -s "Agradecimento" $usuario ;done

O marcador "USUARIO" será substituído pelo login de cada usuário e o resultado retornado pelo sed será conectado ao STDIN do mail. Esse exemplo funciona como uma mala-direta, mais adiante vamos utilizar o sed em scripts.

 

Para ver o resultado sem enviar o e-mail retire o comando mail e desvie a saída para um arquivo txt. Exemplo:

 

# for usuario in ‘cat /etc/passwd |awk -F":" ‘{print $1}’‘; do sed -e s/USUARIO/$usuario/ agradece.txt >$usuario.txt ;done

Vamos agora conhecer e praticar o uso do comando tr. Ele serve para alterar ou deletar caracteres de uma string. Exemplo:

 

  1. echo "seja livre use linux" | tr a-z A-Z SEJA LIVRE USE LINUX

 

Um bom exemplo do tr pode ser a conversão de nomes de arquivos de minúsculas para maiúsculas ou vice-versa.

 

[~/exemplo #]ls

aaa bbb ccc

  1. for arquivo in * ; do OLD=$arquivo ; NEW=‘echo $OLD |tr a-z A-Z‘; mv -f $OLD $NEW 2>/dev/null; done

[~/exemplo #]ls

AAA BBB CCC

 

Poderíamos ter substituído apenas um caractere, mas eu quis trocar todos para mostrar que podemos usar um range de caracteres, mas um range de dígitos também é aceito. Exemplo: 0-9.

 

O shell não possui internamente nenhuma função aritmética, para isso utilizamos os comandos auxiliares bc e expr. Se você precisa fazer cálculos de inteiros, pode utilizar o comando expr, mas se seu cálculo possui ponto flutuante, é necessário usar o bc. O awk também pode fazer cálculos, porém ele é um pouco pesado para ser utilizado somente nisso. Vamos ver alguns exemplos:

 

  1. expr 1 + 3

4

  1. expr 1+3

1+3

 

Note que para realizar cálculos com expr você precisa deixar um espaço em branco entre o operador e os algarismos.

 

  1. expr 5 * 2

expr:syntax error

  1. expr 5 \* 2

10

 

Observe que para realizar operações de multiplicação, temos de colocar uma barra invertida antes do operador *. Os operadores válidos para expr são:

 

  • multiplicação

/ divisão

% módulo

+ adição

- subtração

 

Para atribuir valores às variáveis utilize os caracteres de substituição de parâmetros.

 

  1. VALOR=‘expr 10 \* 2‘
  2. echo $VALOR

20

 

O bc calcula uma expressão através do STDIN. Exemplo:

 

  1. echo "13 / 2" |bc

6

 

Observe que o resultado foi inteiro (6). Para obter resultados com ponto flutuante, é preciso setar a escala de ponto decimal. Essa escala representa a quantidade de dígitos que queremos depois do ponto. Exemplo:

 

  1. echo "scale=2; 13 / 2" |bc

6.50

 

Também podemos atribuir os valores retornados para uma variável através de substituição de parâmetros.

 

  1. VALOR=‘echo "scale=2; 13 / 2" |bc‘

echo $VALOR

6.50

 

 

 

Até a próxima edição.

 

 

Veja também

 

Comments (0)

You don't have permission to comment on this page.