Comandos do Unix / Linux

Índice de comandos do Linux / Unix

comandos apropos awk basename bc cat cd chmod cp cpio cron csplit
cu cut date du df dialog diff do echo ed el
eval exit export expr fgrep find fmt fold for foreach ftp grep
gzip head history if join less let ln login logout lp ls
mail makewhatis man mkdir more mounted mv m4 paste perl pr printf
prompt ps pwd random read repeat rev rgrep rlogin rm rmdir scale
scp sed send set setenv setterm shift shred sort split ssh stop
stty switch tac tail tar telnet test time tput top tr trap
ulimit umask unalias uniq unlimit unset unsetenv until uucp uupick uustat uuto
uux vi vim wait wc whatis which while xargs

Algumas distribuições Linux e sites especiais

www.linux.org www.redhat.com www.knoppix.org Roda direto do CD
www.mandrakelinux.com/pt-PT www.suse.com Versão que roda direto do CD http://www.suse.de www.slackware-brasil.com.br
http://www.debian.org.br www.guiadohardware.net/gdhpress/kurumin www.kalangolinux.org
www.cipsga.org.br br-linux.org www.vivaolinux.com.br
www.guiafoca.org Guias on-line: InicianteIntermediárioInic e Interm.Avançado
aurelio.net Tudo sobre shell, sed e vi; canivete

Lista de alguns comandos do UNIX / Linux

  • which – Mostra o caminho completo de um comando/script.
    Ex.: which cat
    Mostra /bin/cat
  • basename – Mostra o nome base do comando/script.
    Ex.: basename cat
    Mostra apenas cat
  • whatis – Mostra a definição do comando.
    Ex.: whatis cat
    Mostra: cat (1) – concatenate files and print on the standard output
  • apropos – Mostra todos os comandos que contenha a palavra informada
    Ex.: apropos whatis
    Mostra:
    apropos (1) – search the whatis database for strings
    makewhatis (8) – Create the whatis database
    whatis (1) – search the whatis database for complete words
  • cd – mudar de diretório
  • ls – listar o conteúdo do diretório
    O comando dircolors é o setup de cores do ls.
    Pode-se ter no home o arquivo .coloursrc com suas próprias definições
    Para criar o .coloursrc execute: cd ; dircolors -p > .coloursrc
    Para atualizar os valores deve-se regravar a variável LS_COLORS com: eval `dircolors .coloursrc` colocar este comando em .bashrc
    Pode-se ver o valor de LS_COLORS com: echo $LS_COLORS
    Leia aqui sobre configurações de cores do ls
    Letras identificadoras dos arquivos no ls
  • pwd – imprimir o diretório de trabalho
  • mkdir – criar um novo diretório
  • rmdir – remover um diretório existente (se estiver vazio)
  • cat – concatenar arquivo(s)
    cat -n arquivo.txt # Numera todas as linhas
    cat -b arquivo.txt # Numera todas as linhas, exceto as vazias

    Obsereve este tipo de substituicao[²]

    cp ~/.emacs{,.bak} #e equivalente a escrever:
    cp ~/.emacs ~/.emacs.bak
    O bash faz a substituicao do que esta antes da virgula pelo
    nome do arquivo e completa com o que esta depois.
    cat arq{1,2,3} > arq.final #Ou seja, o equivalente a
    cat arq1 arq2 arq3 > arq.final
    Agora o mesmo usando o less:
    less /usr/doc/{emacs-20.7/{NEWS,README},ed-0.2/NEWS,gnupg-1.0.1/{README,COPYING}}
    Que seria expandido para:
    less /usr/doc/emacs-20.7/NEWS /usr/doc/emacs-20.7/README (quebra de linha aqui)
    /usr/doc/ed-0.2/NEWS /usr/doc/gnupg-1.0.1/README /usr/doc/gnupg-1.0.1/COPYING

  • tac – Mostra o conteúdo de um arquivo binário ou texto (como o cat), só que em ordem inversa.
  • more – efetua paginação de dados
  • less – efetua paginação de um arquivo, mas permite efetuar buscas de strings
    utilizando a / como no editor vi
  • cp – copiar arquivo(s)
  • find – Localizar arquivos

    find . -exec chgrp literatura {} \;
    find . -ok chgrp literatura {} \; (pede confirmação antes de executar)
    find . -print | cpio -pdvucB /oracle/prg/objora
    find / -name '*.bak' -exec gzip {} \;
    find . -print -exec touch -t 0808250000 {} \; – troca a data de modificação para 25/08/2008 00:00 de todos os arquivos
    find . -name "*.htm" -print -exec touch -t 0808250000 {} \; idem ao anterior, só que para arquivos *.htm
    find . -name "file*"procura por arquivos iniciados por file minúsculo
    find . -iname "file*"procura por arquivos iniciados por file ou FILE
    find . -name "resumo*" -type f procura por arquivos normais (type f) as opções de -type são:
    f (arquivos normais), l (links simbólicos), d (diretórios), b (dispositivos de bloco), p (pipes nomeados), c (dispositivos de caractere), s (soquetes).

    gzip 'find / -name '*.bak' -exec -print'
    gzip $(find / -name '*.bak' -exec -print)

  • ln – ligar dois nomes a um arquivo (link)
  • mv – mover/renomear arquivo(s)
    Exemplo de script – usando mv para renomear de maiúsculo para minúsculo
    veja exemplos xargs para renomear vários arquivos de vez usando juntamente com o mv
  • m4 – Substitui strings contidas em um arquivo de entrada pelos parametros passados.

    Suponha o arquivo carta.txt a seguir:

    CIDADE, DATA

    Caro QUEM

    O numero do protocolo do arquivo enviado foi COD.
    Valor a ser pago : VLR
    Formato do arquivo: TIPO

    Cordialmente,

    bira

    Se executarmos o comando:

    m4 -DCIDADE=Salvador -DDATA=11/11/08 -DQUEM=IVAN -DCOD=7675 -DVLR=324,55 -DTIPO=ISAM carta.txt

    Resultará em:

    Salvador, 11/11/08

    Caro IVAN

    O numero do protocolo do arquivo enviado foi 7675.
    Valor a ser pago : 324,55
    Formato do arquivo: ISAM

    Cordialmente,

    bira

  • rm – remover arquivo(s)

    veja exemplos xargs para remover vários arquivos de vez usando juntamente com o rm

  • split – separar um arquivo em n pedaços de linha

    split 100 bira.txt #separa o arquivo bira.txt em arquivos com 100 linhas cada.
    split -b 1440Kb arquivo_grande.xyz #divide o arquivo em arquivos de 1.440byte (um disquete)
    split -b 20m videoclip.avi #divide o arquivo em pedaços de 20 Megabytes

  • csplit – separar um arquivo com base em argumentos
    O comando csplit diferente de split pode efetuar a separação sempre que encontrar
    uma combinação entre seus argumentos e o conteúdo do arquivo:
    Suponha o arquivo livro.txt com o seguinte conteúdo:
    A Introducao
    B Dedicatoria
    CAPITULO 1
    Linha 1A1
    Linha 2A1
    Linha 3A1
    CAPITULO 2
    Linha 1A2
    Linha 2A2
    CAPITULO 3
    Linha 1A3
    Linha 2A3
    Neste arquivo há 3 capítulos se desejar criar um arquivo para cada capítulo execute
    o comando:
    csplit -f capit livro.txt "/CAPITULO/" {2}
    O valor {2} representa a quantidade máxima de arquivos a ser criada, como são 3 capítulos
    informamos {2} pois a quantidade máxima de arquivo é computada somando-se o informado + 1
    Quando não souber a quantidade exata de capítulos utilize a opção -k e informe um número entre {} que você tenha certeza que seja maior que a quantidade de capítulos.
    csplit -k -f capit livro.txt "/CAPITULO/" {9}
    Estes dois exemplos criarão os arquivos capit00, capit01, capit02, capit03, sendo que o capit00
    refere-se a tudo que estava antes de CAPITULO 1
  • top – Mostra os processos em execução na CPU

    Coluna Descrição
    PID O ID do processo
    USER O usuário que executa o processo
    PRI A prioridade do processo
    NI O valor bom: quanto maior o valor, menor a prioridade da tarefa
    SIZE Memória usada por esse processo (código+dados+pilha)
    RSS A memória física usada por esse processo
    SHARE A memória compartilhada usada por esse processo
    STAT O status desse processo, mostrado em código. Alguns códigos de status principais são:
    R = Em execução S = Em hibernação Z = Zumbi T = Interrompido Também é possível ver o segundo e terceiro caracteres, que indicam: W – Processo permutado N – Valor bom positivo
    %CPU A porcentagem da CPU usada por esse processo
    %MEM A porcentagem de memória usada por esse processo
    TIME O tempo total de CPU usado por esse processo
    CPU Se este é um sistema de múltiplos processadores, esta coluna indica o ID da CPU em que esse processo está sendo executado.
    COMMAND O comando emitido por esse processo

    com top em execução as letras abaixo quando pressionadas ativam ou desativam dados apresentados:

    l = Ativa/Desativa a primeira linha do load average
    t = Ativa/Desativa as duas linhas seguintes sobre processos e a CPU
    m = Ativa/Desativa as últimas linhas sobre memória e SWAP
    M = Ordena os processos por quem estiver mais usando a memória

    Algumas opções importantes deste comando:

    top -d 1 Define o tempo de atualização em 1 segundo
    top -p1738 -p1739 Mostra apenas os processos 1738 e 1739

    Observação: o comando snice alterar a prioridade de um processo.

  • tr – tradutor, funciona como um filtro substiuindo as ocorrências de caracteres em um arquivo texto.
    cat manual.txt | tr aeiou 12345 # substitui a letra a por 1, e por 2, i por 3, o por 4 e u por 5
  • uptime – Mostra a quanto tempo o sistema esta ativo, a quantidade de usuários ativos e o load average veja mais no comando top.
  • fold [¹] –
    Por exemplo: fold -w 30 -s meuarquivotexto > novoarquivotexto
    Quebra as linhas do arquivo texto meuarquivotexto de forma que haja 30
    caracteres por linha. A linha é quebrada nos espaços.
    A saída vai para novoarquivotexto.
  • fmt [¹] –
    Por exemplo: fmt -w 75 meuarquivotexto > novoarquivotexto
    Formata as linhas no arquivo texto para a largura de de 75 caracteres.
    Quebra linhas compridas e junta linhas curtas de acordo com o requerido mas não
    remove linhas vazias.
  • nl [¹] –
    Por exemplo: nl meuarquivo > meuarquivocomlinhasnumeradas
    Numera as linhas no arquivo meuarquivo Coloca a saída no arquivo
    meuarquivocomlinhasnumeradas.
  • rev [¹] –
    Por exemplo: rev nomedoarquivo > nomedoarquivo1
    Mostra o arquivo nomedoarquivo, cada linha na ordem reversa.
    No exemplo acima, a saída é dirigida para nomedoarquivo1.
  • shred [¹] –
    Por exemplo: shred nomedearquivo
    Repetidamente regrava o conteúdo do arquivo nomedearquivo com lixo, de forma que
    ninguém será capaz de ler o seu conteúdo original novamente.
  • des [¹] –
    Por exemplo: des -e arquivo arquivo_criptografado
    (=”Padrão de criptografia de dados”) Criptografa arquivo.
    Será solicitada você uma chave que o programa usará para a criptografia.
    A saída vai para arquivo_criptografado. Para descriptografar use
    des -d arquivocriptografado arquivo_descriptografado.
  • awk – linguagem de processamento e procura de padroes
    Alguns exemplos para entender o poder do awk:

    cat nomedoarquivo | gawk '/vento/ {print}' #Para mostra as linhas que contenham o string “vento”.

    O que torna o awk mais poderoso que o sed são as operações sobre campos. $1 significa “o primeiro campo”, $2 significa o “segundo campo”, etc. $0 significa a “linha inteira”.
    A variável NF significa número de campos. Quando precedida por “$” indica o último campo.
    awk '{print $NF}' arquivo.exemplo # $NF imprime o último campo.
    awk '{print NF}' arquivo.exemplo # imprimi a contagem do numero de campos.
    awk -F: 'NF > 10 {print}' arquivo.exemplo # imprimi apenas as linhas que contenham mais de dez campos.
    awk -F: 'NF == 10 {print}' arquivo.exemplo # imprimi apenas as linhas que possuam exatamente 10 campos.
    awk 'END {print NR}' arquivo.txt # Contar quantas linhas um determinado arquivo tem. awk 'NR == 30' arquivo.txt # Para ler apenas 30a. linha

    O próximo exemplo extrai os campos 3 e 2 das linhas que contem “1024” e os mostra com os títulos “Nome” and “ID” :

    cat nomedoarquivo | gawk '/1024/ {print "Nome: " $3 "ID: " $2}' > novoarquivo

    Neste exemplo mudamos o delimitador para “:” com a opção -F
    awk -F":" '{ print "username: " $1 "\t\tuid:" $3 }' /etc/passwd

    cat /etc/passwd | awk -F":" '{print $1"\t->\t",$5}' | sort +2 >relatorio.txt

    ls -l | awk '{print "cp",$9,$9 ".bck"}' > backup.sh # usando a saída do ls pega o campo 9 que é o nome do arquivo e joga para o arquivo backup.sh linhas contendo: cp arquivo.etx arquivo.ext.bak

    O terceiro exemplo procura e mostra linhas com o terceiro campo igual a “peter” ou que contenham o string “marie”:
    cat nomedoarquivo | gawk '$3 == "peter" || $3 ~ /marie/ '
    cal | awk '/We/ || /17/ {print $0}' # filtra a saída do calendário do mês corrente, mostrando apenas a abreviação dos nomes dos dias da semana e abaixo a linha que contém o dia de número 17
    Para entender o ultimo comando, eis aqui uma lista dos testes lógicos em gawk:
    == igual, != diferente,
    < menor que, > maior que,
    <= menor ou igual a, >= maior ou igual a,
    ~ procurar por uma expressão regular,
    !~ que sejam diferente de uma expressão regular,
    || OU lógico,
    && E lógico,
    ! negação lógica.

    Veja o awk com cara de linguagem de programação

    awk '{ if (length($0) > max) max = length($0) } END { print max }' arq.txt #Mostra o tamanho da maior linha do arquivo
    awk 'NF > 0' arq.txt # mostra as linhas do arquivo, exceto as vazias ou as somente com espaços em branco.
    awk 'BEGIN { for (i = 1; i <= 7; i++) print int(101 * rand()) }' # mostra 7 números aleatóriamente entre 0 e 100
    ls -l FILES | awk '{ x += $5 } ; END { print "total bytes: " x }' # mostra o total de bytes dos arquivos listados por ls -l somando o quinto campo
    awk -F: '{ print $1 }' /etc/passwd | sort # mostra em ordem alfabetica o nomes do usuários do /etc/passwd
    awk 'END { print NR }' arq.txt #mostra a quantidade de linhas de arq.txt
    awk 'NR % 2 == 0' arq.txt #mostra as linhas alternadamente, não mostra a linha 1, mostra a 2 , não mostra a 3, …
    awk 'NR % 2 == 1' arq.txt #mostra as linhas alternadamente, mostra a linha 1 , não mostra a 2, mostra a 3 , …
    awk '{ print $3 }' < lista.txt # mostra a coluna 3
    awk '($1=="Ivan") { print }' < lista.txt # Se o valor da coluna 1 for Ivan mostra as linha todas
    awk '($2=="Diana") { print $3,$4 }' < lista.txt # Se o valor da coluna 2 for Diana mostra a coluna 3 e 4
    Suponha um diretório contedo alguns arquivos cuja lista esta representada abaixo por uma saída do comando ls -l:

     -rwxrwxrwx 1 bira literatura 11537 Jan 9 11:41 GRGR0405 -rwxr-xr-x 1 bira literatura 1086 Jan 15 11:42 RECIBO.REL -rw-r--r-- 1 bira literatura 2279 Jan 13 11:56 content.xml -rwxr-xr-x 1 bira literatura 3301 Jan 15 10:24 manual.txt -rw-r--r-- 1 bira literatura 922 Jan 9 14:32 meta.xml -rw-r--r-- 1 bira literatura 119 Jan 16 11:31 texto.txt 

    Executando o comando:
    ls -l | awk '{print "Dono: " $3 "\tTamanho: "$5 "\tNome: " $9}' gera a seguinte saída:

     Dono: Tamanho: Nome: Dono: bira Tamanho: 11537 Nome: GRGR0405 Dono: bira Tamanho: 1086 Nome: RECIBO.REL Dono: bira Tamanho: 2279 Nome: content.xml Dono: bira Tamanho: 3301 Nome: manual.txt Dono: bira Tamanho: 922 Nome: meta.xml Dono: bira Tamanho: 119 Nome: texto.txt 
  • cut – seleciona colunas

    cut -c 10-10 arq.txt # mostra da 10 a trigésima coluna do arquivo
    cut -c 5,7,10-15 arq.txt # mostra a quinta, a sétima e décima a décima-quinta coluna
    #Funcao : Exemplo de utilizacao do comando tr, cut e sed
    # tr deixa apenas um espaco em branco, eliminando os
    # demais que normalmente sao gerados pelo ls
    # cut utiliza o espaco em branco como delimitador de
    # campo e seleciona os campos de 3 a 9
    # sed substitui os espacos em branco por tab
    #-----------------------------------------------------------
    tput clear
    echo " `date` Em: `pwd`"
    echo "Dono Grupo Bytes Mes Dia Ano/H Nome do arquivo"
    echo "---------------------------------------------------------------"
    ls -lSr | tr -s " " | cut -d " " -f3-9 | sed -e 's/ /\t/g'
    echo "---------------------------------------------------------------"
    # Fim do script

  • diff – compara e seleciona diferenças em dois arquivos
  • fgrep – seleciona linhas que correspondam a um padrão
    fgrep -l animal *.txt | vi - – Abre no vi um novo arquivo contendo os nomes dos arquivos que contenham a palavra animal em seu conteúdo.
    vi `fgrep -l animal *.txt` – Diferentemente do anterior, este comando abre os arquivos que contém a palavra animal em seu conteúdo.
  • grep – seleciona linhas
    grep -v int (se não tiver)
    grep -w casa (expressão exata)
    grep usuario /etc/passwd || echo "usuário inexistente"
    rgrep -r my_word . | more # este é a opção recursiva de grep
  • head – seleciona linhas de cabeçalho
  • line – le a primeira linha
  • perl – perl -i -p -e 's/caixas/malas/g;' grave.txt # substitui todas as ocorrências de caixas por malas.
    perl -i.bak -p -e 's/caixas/malas/g;' grave.txt # Igual ao anterior só que a opção -i.bak cria um backup de grave.txt como grave.txt.bak
    Para confirmar que os scripts awk podem ser reescritos em perl, veja o exemplo:

    awk '($2=="1957") { print $3 }' | arquivo.txt

    é equivalente a qualquer uma das seguintes linhas:

    perl -ne '@f=split; if ($f[1] eq "1957") { print "$f[2]\n"}' | arquivo.txt
    perl -ne 'if ((@f=split)[1] eq "1957") { print "$f[2]\n"}' | arquivo.txt
    perl -ne '@f=split; print $f[2] if ( $f[1]==1957 )' | arquivo.txt
    perl -lane 'print $F[2] if $F[1] eq "1957"' | arquivo.txt
    perl -lane 'print$F[2]if$F[1]eq"1957"' | arquivo.txt # Esta linha é igual à de cima, como no perl pode-se remover todos os espaços dos argumentos

  • sed – editor de fluxos de textos (Stream EDitor)

    Entenda este proderoso comando vendo os exemplos abaixo:

    cat texto.txt | sed p
    recebe de cat o conteúdo de texto.txt e aplica a opção p que duplica cada linha do texto. Isso ocorre porque o sed já tem por padrão imprimir os dados na saída padrão, como usamos a opção p, ele imprime duas vezes.

    sed -n p texto.txt
    A opção -n faz com que o sed não imprima sa saída padrão e a opção p imprime cada linha fazendo com que cada linha seja impressa apenas uma vez.

    sed -n 5p texto.txt
    imprime apenas a linha 5 de texto.txt. Nesta opção o número da linha é um endereço que diz ao sed onde aplicar o comando, este endereço também pode ser passado como parte do conteúdo da linha entre /barras/

    sed '5d' texto.txt = passando o endereço como sendo o número da linha, apagará a linha 5 com a opção d.
    sed '/modelo/d' texto.txt = passando o endereço com um conteúdo da linha, apagará todas as linhas que tenham a palavra modelo.
    Este último comando seria como se você tivesse usado o grep grep -v modelo texto.txt
    sed '5,10d' texto.txt = aparará das linhas 5 até a 10
    sed '5,/modelo/d' texto.txt = apagrá da linha 5 até a linha que tiver a palavra modelo.
    sed '/modelo/,+3d' texto.txt = apaga a linha que contá a palavra modelo e as 3 seguintes.
    sed 'd' texto.txt = se não informar nenhum endereço aplica o comando no arquivo todos, neste caso apagará todas as linhas do arquivo.

    Exemplos do sed com o comando cut e com o cat

    Veja exemplo de script com sed no comando cut
    Veja o uso do sed em um exemplo junto com o cat
    cat nomedoarquivo | sed '/.*o$/d' > novoarquivo
    Neste exemplo, as linhas terminado com um “o” serão deletadas. Foi utilizada uma expressão regular para casar com qualquer string seguido por um “o” e o fim da linha. A saída (isto é, todas as linhas exceto aquelas terminadas com “o”) é direcionada para novoarquivo.

    Exemplos do sed com o comando df

    Suponha que em certo servidor o resultado do comando df -h seja:

    Filesystem Size Used Avail Use% Mounted on
    /dev/sda1 2.9G 2.4G 351M 88% /
    none 499M 0 498M 0% /dev/shm
    /dev/sda2 63G 48G 12G 80% /literatura

    E você deseja pegar apenas o valor 80 da coluna Use% da partição /literatura
    Então execute o comando:
    df -h | tail + 2 | tr -s " " | cut -d " " -f5 | grep literatura | sed -e 's/%//'
    Explicando: o tail elimina o cabeçalho
    o tr deixa apenas um espaço em branco eliminando os excedente
    o cut usa como delimitador o espaço em branco ” ” e pega o campo 5
    o grep pega somente a linha onde haja o nome literatura
    e o sed troca o sinal de % por nada, deleta ele.

    Fonte: aurelio.net/sed/sed-HOWTO

    Interrompendo o processamento

    sed '10q' texto.txt = mostra o arquivo até a linha 10 depois para.
    sed '/^$/q' texto.txt = mostra o arquivo parando na primeira linha em branco que achar.

    Invertendo a lógica

    sed -n '1,10p' = imprima apenas da linha 1 até a 10
    sed '11,$d' = apague da linha 11 até o final
    Usa-se o caracter ! com o significado de não execute o comando:
    sed '1,10!d' = NãO apague da linha 1 até a 10 (ou seja, apague as outras)
    sed -n '11,$!p' = NãO imprima da linha 11 até o final (ou seja, imprima as outras)

    Vários comandos de uma vez

    Para utilizar vários comandos utiliza-se o ponto e vrigula:
    sed '5d;10d;/modelo/d' texto.txt = apaga da linha 5 a 10 e as que contém a palavra modelo
    sed -e '1i começo de tudo' -e '5d' texto.txt = insere a frase começo de tudo antes da primeira linha e apaga a quinta linha do arquivo texto.txt, sendo separados por -e.

    Aspas simples ou aspas duplas

    É sempre bom colocar os parametros do sed entre aspas simples, para evitar que o shell os interprete erroneamente:
    sed 'p' texto.txt
    sed 's/isso/aquilo/' texto.txt
    Exceto quando existir algo que deva ser interpretado, uma variável por exemplo:
    sed "s/$HOME/aquilo/" texto.txt

    Delimitadores

    O delimitador padrão é a /, mas se o que tiver que ser substituído também contém uma barra ela deve ser escapada com a barra invertida \
    sed 's/\/usr\/local\/bin/\/usr\/bin/' texto.txt
    sed '/\/usr\/local\/bin/d' texto.txt
    Para evitar ficar escapando as barras podemos definir outro delimitados, no exemplo abaixo foi os mesmos comandos acima foram escritos usando a virgula:
    sed 's,/usr/local/bin,/usr/bin,' texto.txt
    sed '\,/usr/local/bin,d' texto.txt

    Ignorar maiúsculas e minúsculas

    sed '/root/Id' texto.txt #a opção I ignorar maiúsculas e minúscualas
    sed 's/root/administrador/Ig' texto.txt #substitui a palavra root por administrador ignorando maiúsculas e minúscualas

    Lendo e gravando em arquivos externos

    sed -e '1r cabecalho.txt' -e '$r rodape.txt' texto.txt # a opção r inclui cabecalho.txt depois da linha 1 e rodape.txt após a última linha.

    Gravando arquivos

    grep 'modelo' texto.txt > modelo.txt # este comando pode ser substituido pelo sed se utilizarmos a opção w:
    sed '/modelo/w modelo.txt' texto.txt # grava no arquivo modelo.txt as linhas que contém a palavra modelo.

    Substituição Simples

    sed 's/<table bgcolor="#EEFFFF">/<table>/g' z.htm
    Este recurso de substituir pelo conteúdo de um arquivo é necessário quando o texto a ser incluído é longo ou será executado diversas vezes, caso cotrário o comando acima poderia ser efetuado utilizando apenas a opção s do sed

    Substituindo um trecho de texto por outro

    sed '/<pre>/,/<\/pre>/c aqui tinha texto pré-formatado' texto.html
    Com a opção c o sed trocará todo texto que estiver entre <pre> e </pre> inclusive eles pela frase aqui tinha texto pré-formatado.
    Suponha agora que tenhamos um arquivo chamado novo.txt com um texto de várias linhas nele, se executarmos o comando abaixo:
    sed -e '/<\/pre>/r novo.txt' -e '/<pre>/,/<\/pre>/d' texto.html
    o sed deletará o trecho entre <pre> e </pre> inclusive eles e colocará logo após o </pre> o texto contido em novo.txt
    Veja mais em aurelio.net

    Substituindo por quebra de linha ou comentário

    sed 's/ /\n/g' texto.txt #substitui todo espaço em branco por uma quebra de linha representada por \n.
    sed 's/^/# /' lista.txt #torna cada linha um comentário

    Tomando isto como base, suponha que voce tenha um texto e deseja criar uma lista de todas as palavras usadas nele em ordem alfabetica, uma solução seria:

    sed 's/ /\n/g' recibo.txt | sort -f | uniq -i > recibo1.txt
    Explicando:
    o sed troca os espaços em branco por quebra de linha, colocando cada palavra em uma linha
    o sort coloca em ordem alfabetica, a opção -f é para ele ignorar maiúsculas e minúscualas
    o uniq retira as palavras duplicadas, a opção -i também é para ignorar maiúsculas e minúscualas
    e por último redirecionamos a saída para um novo arquivo.

    Incluindo texto de um arquivo após determinada linha de outro

    Suponha que um arquivo z.htm que contenha em alguma parte a seguinte linha:
    <table align="right" bgcolor="#EEFFFF">
    e pretende-se acrescentar abaixo dela o conteúdo de um arquivo texto chamado novalinha.txt, o comando seria:
    sed '/<table align="right" bgcolor="#EEFFFF">/r novalinha.txt' z.htm
    Caso deseje-se apagar a linha do table após a inclusão seria ssim:
    sed -e '/<table bgcolor="#EEFFFF">/r novalinha.txt' -e '/<table bgcolor="#EEFFFF">/d' z.htm

    Colocando comandos sed em um arquivo:

    Cria-se um arquivo com um nome qualquer com os comandos dentro inclusive pode-se usar o caracter # para colocar comentários:
    # programa.sed: apaga algumas linhas

    # apaga a 5ª linha
    5d

    # apaga a 10ª linha
    10d

    # apaga as linhas que contêm a palavra ‘comando’
    /comando/d

    Depois do arquivo programa.sed criado pode-se usá-lo aplicando o comando sed com a opção -f :
    sed -f programa.sed texto.txt

    Outro exemplo substituindo um trecho de um arquivo pelo texto contido em outro:

    Suponha que o conteúdo do arquivo texto.html seja:
    <html>
    <body>
    <center>
    Texto no centro
    </center>
    <pre>
    Texto fica na
    tela do jeito
    que
    foi digitado.
    </pre>
    </body>
    </html>
    E deseja-se substituir o conteúdo entre <pre> e </pre> pela frase aqui tinha texto pré-formatado
    Para isso criá-se um arquivo chamado comando.sed com o seguinte conteúdo:
    /<pre>/,/<\/pre>/c \
    aqui tinha texto pré-formatado
    Em seguida só executar o comando:
    sed -f comandos.sed texto.html
    E será gerado o código:
    <html>
    <body>
    <center>
    Texto no centro
    </center>
    aqui tinha texto pré-formatado
    </body>
    </html>

    Tornando arquivos sed executáveis

    Ainda lembrando o exemplo citando anteriormente no Colocando comandos sed em um arquivo podemos usar a instrução #! que colocamos no início de um script para transformar nosso arquivo sed executável.
    Isso é possível porque da mesma forma que se colocar-mos #!/bin/sh em um script estamos dizendo ao bash para executar o script com o comando /bin/sh, podemos colocar na primeira linha do arquivo programa.sed
    a linha #!/bin/sed -f, isso fará com que o arquivo seja automaticamente processado com este comando. Claro que deve-se dar permissão com o chmod +x programa.sed antes.
    Depois é só executar:
    ./programa.sed texto.txt
    cat texto.txt | ./programa.sed

    Conhecendo os registradores internos

    Um exemplo só para não deixar em branco, melhor e ver em aurelio.net 8
    sed '/root/H;$g' /etc/passwd
    A opção H adiciona as linhas que cotenha a palavra root no espaço reserva e recupera-as com a opção g na última linha $.

    Emulando outros comandos
     comando | emulação -------------+---------------------------------------- cat | sed : head | sed 10q grep | sed /padrão/!d grep -v | sed /padrão/d tac | sed 1!G;h;$!d tail -1 | sed $!d tr A-Z a-z | sed y/ABCDEF...UVWXYZ/abcdef...uvwxyz/ wc -l | sed -n $= Fonte: aurelio.net 
    Comados do sed por categoria
     informações = marcadores : comentários # comandos de edição s i c a y comandos de registradores g G h H x comandos de impressão p P l comandos de arquivo r w modificadores g i ! separadores ; -e \n controle de fluxo b t d D n N q endereço // , limitadores {} \(\) registradores dinâmicos \1 \2 ... \9 Fonte: aurelio.net 
  • tail – seleciona a parte final de um arquivo
  • uniq [¹] -seleciona linhas únicas
    (=único) Elimina linhas duplicadas em uma entrada classificada.
    Por exemplo: sort meuarquivo | uniq
  • wc – conta caracteres, palavras ou linhas em um arquivo
    exemplo: ls -l | wc -l #conta a quantidade de arquivos listados por ls
  • join [¹] – junta dois arquivos combinando linha por linha
    Por exemplo: join arquivo1 arquivo2 > arquivo3
    Junta linhas de dois arquivos em um campo comum.
    join é um paralelo com a operação de “join tables” de banco de dados,
    mas funciona em arquivos textos. O padrão é juntar no primeiro campo
    da primeira tabela, e o delimitador default é o caracter espaço.
    Para ajustar os padrões, eu uso as opções que são descritas em man join.

    Exemplo: Se o conteúdo de arquivo1 era
    1 Barbara
    2 Peter
    3 Stan
    4 Marie
    e o do arquivo2 era:
    2 Dog
    4 Car
    7 Cat
    o arquivo resultante arquivo3 seria:
    2 Peter Dog
    4 Marie Car

  • paste [¹] – anexa múltiplos arquivos coluna por coluna
    Por exemplo: paste arquivo1 arquivo2 > arquivo3
    Combina dois ou mais arquivos textos em linhas usando o Tab como delimitador
    use a opção “d=” para especificar seu próprio delimitador.
    Exemplo. Se o conteúdo do arquivo1 era:
    1
    2
    3
    e o do arquivo2 era:
    a
    b
    c
    d
    o arquivo resultante arquivo3 seria:
    1 a
    2 b
    3 c
    d

    Com paste -s arquivo1 arquivo2 a saída será
    1 2 3
    a b c d

    Com paste -s -d";" arquivo1 arquivo2 a saída será:
    1;2;3
    a;b;c;d

  • sort – ordena e combina múltiplos arquivos
  • pr – formata e imprime arquivos
    relat="arquivo.txt" ; numero=132 ; impres="contab"
    pr -t +$número $relat | lp -oc -d$impres -opr
    Inicia a impressão do arquivo.txt após a página 132 na impressora contab.
  • lp – imprime na impressora do sistema
  • chmod – altera o modo de segurança em um arquivo ou diretório
  • umask – define o modo de segurança default
    umask 002 – define como o usuário ira criar os arquivos (por no profile)
  • bc –
    Calculadora binária (é uma linguagem para cálculos)

    Comandos definidos em bc:

    Adição, subtração, multiplicação, divisão.
    % (resto da divisão)
    ^ (potenciação)
    sqrt(x) (raiz quadrada de x)

    Se entrar com bc -l há também os comandos:

    s(x): o seno de x (x em radianos)
    c(x): o cosseno de x (x em radianos)
    a(x): o inverso da tangente de x (retorna radianos). (Veja um exemplo com o valor de pi)
    Se y = tangente de x (tg x), a(y) = x
    l(x): o logaritmo natural de x. (ln x)
    e(x): a função exponencial ( e^x ) (exp x)

    last (último resultado) pode-se usar o caracter “.” (ponto) também

    se você entrar com bc e digitar 2/3 aparecerá o resultado como 0
    se você entrar com bc -l e digitar 2/3 aparecerá o resultado como .66666666666666666666
    se você entrar com bc ou bc -l e digitar scale=3 e em seguida 2/3 aparecera .666

    Pode-se usar obase e ibase para mudar a base numérica:
    echo "obase=2 ; 11" | bc # resultará em 1011 pois convertemos o numero 11 em base decimal para binário
    echo "ibase=2 ; 11" | bc # resultará em 3 pois convertemos o número 11 em binário para decimal
    podemos usar todas as bases: 2 (binário) 8(octal) 10(decimal) 16(hexadecimal)… etc

    Podemos usar: z=$(echo "100 * 2" | bc ) ; echo $z # para atribuirmos um valor a z
    Poderia ser : z=`echo "100 * 2" | bc` ; echo $z # para atribuirmos um valor a z
    Podemos usar: echo "100 * 2" | bc # para ver o valor diretamente
    Um exemplo bem interessante que consta no manul e bc (man bc) é esse de calcular pi
    pi=$(echo "scale=10; 4*a(1)" | bc -l)
    Um exemplo meu é o de calcular a proporção áurea, razão áurea ou número de ouro
    numero_de_ouro=$(echo "scale=10 ; (1 + sqrt(5)) / 2" | bc -l)
    Em ambos os casos basta variar o valor de scale para conseguir os números com mais casas decimais

    Veja mais sobre bc…

    Para mais calculos veja a linguagem de programação lua

  • scale – Determinar o número de casas decimais.
    echo "scale=1; (25 / 3) + 20" | bc
    Resultado: 28.3
  • ssh – Para efetuar login via ssh
    ssh root@200.223.79.179
  • telnet – Para efetuar login via telnet
    telnet 192.168.0.10 (servidor de dados)
    telnet 192.168.0.1 (servidor de e-mail)
  • scp Copiar arquivo de seu micro para outro remoto via scp
    scp resofc.zip root@192.168.5.1:/literatura/dat0/temp
  • cron – Agenda tarefas
    atributos do cron (crontab)
    minuto (0-59) hora (0-23) dia do mes (0-31) mes (1-12) dia da semana (0-6)
    1 2 3 4 5
    -l usuário — lista as tarefas agendadas para o usuário
    -e usuário — edita o agendador
    -d usuário — apaga o arquivo do usuário
    -c diretório — especifica um diretório para o Crontab
    Exemplo: 30 14 * * Fri /bin/mail -s "TGIF" bira@teste.ok%RECEBIDO%%ok.
    Exemplos de Wikipedia
    00 * * * * /bin/script Todo dia de hora em hora (hora cheia)
    00-59/5 * * * * /bin/script De cinco em cinco minutos todos os dias (note a divisão por 5 do intervalo 00-59)
    15 10,12,16,18,22 * * * /bin/script Nas seguintes horas: 10, 12, 16, 18, 22 aos 15 minutos da hora
    25 19 01-05 * * /bin/script Nos primeiros cinco dias do mês às 19:25
    00 00,12 * * 1-5 /bin/script De segunda a sexta ao meio-dia e a meia-noite
    00 2 * * mon,wed,fri /bin/script Script rodar Segunda,Quarta,Sexta às 2 horas
    00 3 * * tue,thu /bin/script Script para rodar Terça,Quinta às 3 horas
  • cpio copia entrada/saída

    Find . -print | cpio -ovcB > /dev/rmt/qbkpt Levanta

    cpio -itv < /dev/rmt/qbkpt Ler

    cpio -icvumdB < /dev/rmt/qbkpt Baixar

    cpio -icvumdB < "*TRS*"/dev/rmt/qbkpt Baixar

    cpio -itvB < /dev/rmt/0b Ler fita Dat

    cpio -icvB < /dev/rmt/0b Baixar fita Dat

  • tar – empacotador de arquivos
    tar -zcvf arqdestino.tar.gz arqorigem # Comando para empacotar compactando com gzip
    tar -zxvf arquivo.tar.gz -C /tmp # Comando para desempacotar o -C /tmp informa o destino dos arquivos extraídos, se for omitido salva a partir do diretório corrente
    Saiba mais sobre o tar em tar.html ou tar.txt
  • cu chama outro sistema UNIX
  • ftp programa de transferência de arquivo (rede)
  • mail correio eletrônico
  • rjestatstatus da entrada remota de job (RJE)
  • send – submissão de job em RJE
  • rlogin conexão remota a um sistema na rede
  • uucp – programa de comunicação UNIX-a-UNIX
  • uustat – status de uucp
  • uuto – copia de arquivo uucp
  • uupick – Seleção de arquivo uucp
  • uux – execução de comando UNIX-a-UNIX
  • setterm – muda atributos do terminal
    Exemplo: setterm -foreground white -background blue -store
  • stty – define o modo de operacao do terminal.

-a exibe toda a configuracao atual
stty -a | grep intr

Veja um exemplo de script que simula um login Linux:

#!/bin/bash
# Simula um login inclusive ocultando a digitacao da senha
# Autor urs.Bira (urs.bira@uol.com.br)
# Este script deve ser utilizado de forma etica
tput clear
old=`stty -g` # Salva a configuracao atual do terminal
# Frases para simular texto de entrada do login Linux Red Hat
printf "Red Hat Linux release 9 (Shrike)\n"
printf "Kernel 2.4.20-8 on an i686\n"
# Funcao login que solicitara usuario e senha
login ()
{
printf "login: " ; read v_usu
stty -echo intr '^a' # Inibi a exibicao de caracteres no monitor
printf "Password: " ; read v_sen
stty $old # Retorna as configuracoes do terminal que foram salvas
}
login # Chama a funcao login
printf "\nLogin incorrect\n\n" # Simula que errou a senha
login # Chama a funcao login
# Pega o ip de who am i , no sexto campo e eliminando os parenteses e brancos
ip=`who am i | tr -s " " | cut -d " " -f6 | tr "(" " " | tr ")" " "`
# Mostra a mensagem de ultimo login pegando o dia e mes atuais
printf "\nLast login: `date "+%a"` `date "+%b"` `date "+%e"` 10:16:23 from ${ip}\n"

  • tput – altera o modo de exibicao de dados do monitor , tipo de cursor

bel gera o caracter “bel” do terminal
blink mostra piscante
bold mostra negrito
clear apaga a tela
cols ecoa numeor de colunas na tela
cup l c move cursor para linha l coluna c
dim escurece a tela
ed apaga ate o fim da tela
el apaga ate o final da linha
lines ecoa numero de linhas na tela
smso inicia modo de destaque
rmso termina modo de destaque
smul inicia modo sublinhado
rmul termina modo sublinhado
rev reverte o video (preto sobre branco)

tput smacs 
tput bold 
tput blink ou rev
tput sgr0 (normal)

tput smso (negrito)
tput rmso (normal)

tput 10 8 (posiciona o cursor na linha 10 coluna 8

Podemos utilizar :

fonte_negrito=`tput smso`
fonte_normal=`tput rmso`
echo "${fonte_negrito}texto em negrito${fonte_normal}"

Pode-se usar também o comando setterm para mudar atributos de cor:
setterm -foreground white -background blue -store
No manual do tput há o seguinte exemplo que pode ser digitado na linha de comando do shell:

bira> tput -S <<!
bira> clear
bira> cup 10 10
bira> bold
bira> !

Veja um exemplo de scripr utilizando os recursos do tput:

#!/bin/bash
# Cria o efeito de que esta limpando a tela de baixo para cima
# Autor: urs.bira (urs.bira@uol.com.br)
lintel=`tput lines` #Pega o valor da ultima linha do terminal
# Um loop que vai da ultima linha da tela ate a linha 0
for((linhas=${lintel}; linhas >= 0; linhas--));
do # Inicio do loop
# Cria um efeito de uma linha colorida diferente a cada vez que executa
segundo=`date "+%S"` # Pega o valor dos segundos
cor=${segundo:1:2} # Pega o segundo digito do segundo
tput cup ${linhas} 0 ; printf "33[4${cor};3${cor};1m
urs.biraurs.biraurs.biraurs.biraurs.biraurs.biraurs.biraurs.biraurs.biraurs.bira
33[0m"
tput cup ${linhas} 0 # posiciona na ultima linha e coluna 0
tput ed # limpa ate o final da linha
done # Fim do loop
tput cup 0 0 # posiciona o cursor na linha 0 coluna 0
tput rev # Mostra em video reverso
printf "\t\t`date "+%D %R"`\t`pwd`\n" # Mostra data, hora e pasta atual
tput rmso # Mostra normal
tput el # Limpa ate o fim da linha caso a linha acima ultrapasse.

  • xargs – recebe da entrada padrão ou de um comando transformando cada entrada recebida em argumento para outro comando. Na prática ele permite que se execute um comando com o resultado do comando anterior.

    Veja abaixo exemplos práticos da utilização do poderoso xargs:

    file -Lz * | grep ASCII | cut -d":" -f1 | xargs ls -ltr

    Explicando: o comando file verifica o tipo de cada arquivo o grep seleciona apenas aqueles que sejam “ASCII”, o cut pega o primeiro campo que são delimitados por “:” o xargs passa para o ls -ltr estes nomes como se escrevessemos ls -ltr nome1.txt nome2.txt nome3.txt..

    file * | grep ASCII | cut -d":" -f1 | xargs wc -l ou dessa outra forma
    wc -l ‘file * | grep ASCII | cut -d":" -f1‘

    Conta quantas linhas tem cada arquivo ASCII que estiver na pasta, gera uma lista assim:

    111 capa_manual_linux.txt
    757 capitulo_III_manual.txt
    390 capitulo_II_manual.txt
    214 capitulo_I_manual.txt
    1472 total

    ls | xargs -t -i mv {} {}.bak

    Renomeia todos os arquivos da pasta acrescentando a extensão .bak ao final do nome. [ Retorna para lista de comandos ]

    Mostrará e executrá as linhas abaixo:
    mv capa_manual_linux.txt capa_manual_linux.txt.bak
    mv capitulo_III_manual.txt capitulo_III_manual.txt.bak
    mv capitulo_II_manual.txt capitulo_II_manual.txt.bak
    mv capitulo_I_manual.txt capitulo_I_manual.txt.bak

    -i determina a substituição de {} pelo nome de cada arquivo.
    -t mostra o comando antes de executá-lo.

    file * | grep ASCII | cut -d":" -f1 | xargs vi

    Edita os arquivos um a um com o vi

    file * | grep ASCII | cut -d":" -f1 | xargs -p vi

    É como o anterior só que acrescetando a opção -p ele pergunta antes de executar o vi (responde y ou n)
    Um caso particular é quando o resultado passado para xargs não gera nenhum valor, nestes casos podemos tratar usando
    -r que encerra o comando sem executar nada. Exemplo:
    file * | grep XGVGXGVG | cut -d":" -f1 | xargs -t -r wc -l
    Este comando não executará nada. mas se colocar como abaixo sem o -r:
    file * | grep XGVGXGVG | cut -d":" -f1 | xargs -t wc -l
    mesmo não havendo arquivos tipo XGVGXGVG ele mostrará como resultado as linhas:
    wc -l
    0

    file * | grep ASCII | cut -d":" -f1 | xargs -t -n2 ls -ltr

    -n limita a quantidade de argumentos por linha, neste exemplo serão passados de 2 em 2 como mostrado abaixo:

    ls -ltr c_manual_linux.txt cap_III_manual.txt

    -rw-r–r– 1 bira literatura 25738 Jan 2 08:53 cap_III_manual.txt
    -rw-r–r– 1 bira literatura 999 Jan 2 09:44 c_manual_linux.txt

    ls -ltr cap_II_manual.txt cap_I_manual.txt

    -rw-r–r– 1 bira literatura 7276 Jan 2 08:52 cap_I_manual.txt
    -rw-r–r– 1 bira literatura 13260 Jan 2 08:53 cap_II_manual.txt

Comandos embutidos do Shell
Shell Bourne/Korn Shel C Descrição
: : – comando nulo
alias
– cria um apelido de nome de comando
(alias dir `ls -l`)
bg – roda o comando corrente no segundo plano
break
break
– sai do laço for ou while
breaksw
– sai de um switch
cd – muda de diretório
continue
– continua interação do laço for ou while
default
– caso default em switch
dirs
– imprime pilha de diretório
echo
– escreve argumentos em stdout
-n não gera avanço de linha
E podemos utilizar as seguintes sequências
de escape
\\b retrocesso ( equivale a CTRL H )
\\f alimentação de pagina ( equivale a CTRL L )
\\n avanco de linha ( equivale a CTRL J )
\\r carriae return ( equivale a CTRL R )
\\t tab ( equivale a CTRL I )
\\\ barra invertida ( equivale a \ )
\\xxx valor octal -> ascii
\\c não termina com o alimentador de linha
\\N Null Character +
\\d Delay 2 seconds |Estes não são do Shell C
\\s space Character +
eval
– avalia e executa argumentos
#Para forçar a execução de uma variável utiliza-se
eval
set v_ler = “cat bira.txt”
eval v_ler (O shell retornara o resultado de cat bira.txt)
Se o conteúdo de bira.txt for:
#-----------------------------------------
# Observe que as linhas terminam com ponto e vírgula
date ;
echo -n "Digite valor: " ;
read u ;
echo "Valor digitado foi $u"
#-----------------------------------------
eval "cat bira.txt" mostrará o conteúdo do arquivo
v_ler="cat bira.txt" ; eval $v_ler mostrará o conteúdo do arquivo
v_ler="cat bira.txt" ; $v_ler também mostrará o conteúdo do arquivo
eval `cat bira.txt` executará os comandos contidos no arquivo (no final de cada linha deve haver um😉
v_ler=`cat bira.txt` ; eval $v_ler também executará os comandos (mesma observação do anterior)
v_ler=`cat bira.txt` ; $v_ler Ocorrerá mensagem de erro
exec – executa os argumentos
exit
exit – sai do programa de shell
export
– cria uma variável global
fg – traz um comando para o primeiro plano
for foreach – executa laço foreach
glob – realiza expansão de nome de arquivo
goto – vai ate um rótulo dentro do programa do shell
history
– mostra lista de comandos executados gravados no historico
if
if – decisão if-then-else
jobs – lista tarefas ativas
kill
– elimina uma tarefa – Exemplo de script matar_processo
Skill
– Congela sem encerrar a tarefa
skill -STOP 19573 = Congela o processo
skill -CONT 19573 = Descongela o processo
– Para ver o número do processo corrente é , echo $$.
– Se o processo for o último colocado em segundo plano(background), echo $! mostra o número dele.
limit
– limita o uso de recurso de uma tarefa
login
– termina o shel e ativa login
logout
– termina a conexão de um shell
newgrp
– passa para um novo grupo de usuário
nice
– muda a prioridade de um comando
nohup
– ignora hung ups
notify
– notifica ao usuário quando o status de uma tarefa mudar
onintr
– controla o processamento do shell na interrupção
popd
– retira da pilha de diretório
pushd
– coloca um diretório na pilha
read
– le um linha de stdin
readonly
– muda uma variável para somente leitura
repeat
– repete um comando n vezes
select
– Cria um menu Veja exemplo de script Exemplo 2
set – define variáveis de ambiente do shell
– Clique aqui para entender o set
set
– define uma variável local no shell C
setenv
– define uma variável global no shell C
shift
shift
– desloca os parametros do Shell $* ou $argv
source
– le e executa um arquivo
stop
– para um processo em segundo plano
suspend
– para o Shell
switch
– decisa case
test
– avalia expressões condições Veja exemplificação e comentário
times
time
– mostra tempos de execução
trap
– gerencia signals de execução
# Se digitar Ctrl C apresenta mensagem. So sai com Ctrl \
echo "teste de captura do sinal intr"
trap "echo recebido interrupt" 02
while :
do
:
done
trap 02
Tabela de sinais do trap
0 Termino normal 7 Instrução EMT 14 Alarme do relogio
2 Interrupção (break) 9 Corte não apanhado 16 Definido pelo usuário
3 Termino (quit) 10 Erro de barramento 17 Definido pelo usuário
4 Instrução ilegal 11 Violação de segmentação 18 Morte processo-filho
5 Armadilha de trace 12 Erro de chamada do sistema 19 Falta de energia
6 Instrução IOT 13 Conduto não terminado
Ex.: trap (rm *.tmp;exit 1) 1 2 3 14 15
Shell Bourne/Korn Shel C Descrição
ulimit
– limita tamanhos de arquivo gravados por processo-filho
umask
– define segurança default para arquivos e diretórios
unalias
– descarta apelidos
unlimit
– remove limitações sobre os recursos
unset
– desativa uma variável local
unsetenv
– desativa uma variável global
until
– laço UNTIL
wait
– espera um processo em segundo plano ser completado

while

while – laço WHILE
%job – traz uma tarefa em segundo plano para o primeiro
expr
@ – mostra ou define variáveis do Shell
if expr $a = $b
if expr “${nome}” = “Bira”
a=`expr $a + 1`
a=`expr “$a” + 1`
count=`expr “$count” + 1`
expr index abcdef c #posição de c na lista
Para executar operações matematicas utilize expr
foo=`expr $foo + 1` #soma um à variável foo
expr 2 + 5 \* 1 ( O shell retornara 7)
expr length “Casa”
Saída: 4
Os operadores sao: + adição – subtração / divisão \* multiplicação % resto
Para mais calculos veja a calculadora binária bc
Variáveis do Shell
Shell Bourne/Korn Shel C Descrição
CDPATH cdpath – procura caminho para cd
cwd – nome do caminho completo do diretório corrente
HOME home – nome do caminho do diretório de conexão do usuário
PATH path – o caminho de pesquisa do Shell para os comandos
PS1 prompt – a cadeia de prompt primaria “$” para sistemas Shell
Bourne/Korn “hostname%” para sistemas Shell C
“#” para superusuário
\w current working directory
\W last element of current working directory
\u user name
\h host name
\d current date
\t current time
Exemplo:
export PS1=”\[33[01;32m\]\u@\h\[33[01;34m\] \w \$\[33[00m\]”
PS2 – a cadeia de prompt secundaria
IFS – separadores de campo internos
(espacos, tab, nova linha)
history – número de comandos guardados pela historia
ignoreeof – ignora fim de arquivo
noclobber – não grava sobre arquivos existentes
noglob – inibe a expansão do nome de arquivo
$# $#argv – número de argumentos posicionais
$0 $0 – nome do comando
$1,$2… $1,$2… – argumentos posicionais
$argv[n] – argumentos posicionais
$* $*,$argv[*] – $1,$2…
$@ – $1,$2…
$- – opções de Shell do comando set
$? $status – codigo de retorno do último comando
$$ $$ – número de processo do comando corrente Ver comando kill
> temp$$ cria um arquivo com o nome temp+número do
processo
$! $! – número de processo do último comando em segundo plano Ver comando kill
RANDOM – Gera números randômicos: echo $RANDOM mostrará um número gerado aleatóriamente
Manipulando variáveis

As variáveis do sistema servem para armazenar algum valor (como toda variável),
mas existem alguns recursos interessantes e úteis no modo de usar tais variáveis.
O que aprendemos em alguns tutoriais, é que para declarar uma variável do sistema, fazemos:

NOME="VALOR" # Aqui podemos usar valores de outras variáveis
NOME='VALOR' # NOME terá o valor igual a VALOR
NOME=`COMANDO` # NOME terá o valor da saída de comando

Isto é o básico, agora teremos algumas coisas mais interessantes:

Exemplo de definicioes de outras variáveis:

mes_atual=`date '+%m'` grava o mes (%m) atual (01-12) na variável
agora=`date +"%H:%M:%S"` ; echo $agora resulta em 15:48:55
para ler use echo ${mes_atual} as chaves sao para evitar erros
Os caracteres (‘) delimitando o comando date e o acento grave ou aspas duplas, com eles
o Shell executa o comando em subshell e substitui o valor resultante no lugar do comando
A variável PS1="logname>" o prompt fica o nome do login do usuário
se colocada assim: PS1=`(#$PWD)-->` funciona como prompt $p$g

Ação Comando Saída
1. Retirar a parte final da string VAR="minha_foto.jpeg"
echo ${VAR%.jpeg}
minha_foto
Como podemos ver, “.jpeg” será excluído. Indicamos o que será excluído depois do caracter ‘%’.
2. Retirar a parte inicial da string VAR="http://www.linux.com.br"
echo ${VAR#http://}
http://www.linux.com.br
Indicamos o que será excluído depois do caracter ‘#’
3. Mostrar tudo após uma posição VAR="http://www.g00gle.com
echo ${VAR:7}
http://www.g00gle.com
Depois do ‘:’ indicamos o índice. Como é em C, o primeiro índice é 0, o
segundo é 1 …, o oitavo é 7 … etc.
4. Mostrar entre alguns caracteres VAR="123456789"
echo ${VAR:2:5}
34567
Primeiro, faz-se o índice 2, que começa no caracter ‘3’. No índice 5, a contagem já começa
no índice 2 (5 caracteres a partir do índice 2), aí morre no caracter ‘7’.
5. Elimina o caracter e tudo a ESQ. VAR="dominio@linux"
echo ${VAR#*@}
linux
Bom, aqui indicamos o caracter a ser deletado e tudo a sua esquerda, depois da string “#*”.
6. Elimina o caracter e a DIR. VAR="dominio@linux"
echo ${VAR%@*}
dominio
Já aqui, indicamos o caracter a ser deletado e tudo a sua direita, entre a string “%*”.
7. Excluir até um valor EXC=":senha"
VAR="root:senha:/bin/bash"
echo ${VAR%%$EXC*}
root
Como o exemplo 6 , só que podemos indicar strings ao invés de somente um caracter.
O que será excluído tem que ficar entre “%%” e ‘*’.
8. Excluir de um valor até o fim EXC="senha:"
VAR="root:senha:/bin/bash"
echo ${VAR##*$EXC}
/bin/bash
Como o exemplo 5, só que podemos indicar strings ao invés de somente um caracter.
O que será excluído deve ficar depois do “##*”.
9. Troca de strings VAR="c1:c2:c3"
echo ${VAR/:/x}
c1xc2:c3
Funciona como o comando sed. Troca a primeira ocorrência de ‘:’ por ‘x’,
para trocar tudo: echo ${VAR//:/x} Usa-se duas barras.
Nada impede de trocar por strings: echo ${VAR//:/-CC-} Saída: c1-CC-c2-CC-c3
10. Comprimento da variável VAR="tenho 19 caracteres"
echo ${#VAR}
19
Funciona como o comando expr lenght
11. Listar nomes de variáveis echo ${!va*} listar todas as variáveis que começam com “va”
12. Listar nomes de variáveis echo ${VAR:-"eu não existo"} eu não existo
Se VAR for nula, mostra “eu não existo”, se não for nula, mostra o conteúdo dela.
Fonte: http://www.vivaolinux.com.br/dicas/verDica.php?codigo=7336
Operadores de Teste Comuns
Shell Bourne/Korn Shel C E verdadeira se…
-r arquivo -r arquivo existir arquivo legivel
-w arquivo -w arquivo existir arquivo gravavel
-x arquivo -x arquivo existir arquivo executavel
-b -b existir arquivo especial de bloco
-c -c existir arquivo especial de caracter
-d dir -d dir existir o diretório
-e verdadeiro se o arquivo existir
-f verdadeiro se o arquivo contem texto
-o verdadeiro se o usuário for o dono
-s arquivo ! -z arquivo arquivo existir e tiver dados
-z arquivo existir e não tiver dados
-z cadeia tamanho da cadeia = 0 arquivo vazio
-n cadeia tamanho da cadeia > 0
cad1 = cad2 == cadeia 1 igual a cadeia 2
cad1 != cad2 != cadeia 1 diferente a cadeia 2
“cadeia” cadeia não nula
Comparações Numericas
Shell Bourne/Korn Shel C Significa
-eq == igual (equal)
-ne != diferente (not equal)
-gt > maior que (greather than)
-ge >= maior ou igual a (greater or equal)
-lt < menor que (less than)
-le <= menor ou igual a (less or equal)
! ! não
-a && e
-o || ou
(…) (…) agrupamento para precedencia
Com variáveis internas
% modulo
++ soma 1
decrementa 1
Redirecionamento de Entrada e Saida
Shell Bourne/Korn Shel C Ação
< arquivo < arquivo toma stdin de um arquivo
> arquivo > arquivo coloca stdout em um novo arquivo
>> arquivo >> arquivo anexa a um arquivo existente (ou o cria)
<< delimitador << delimitador toma stdin do Shell ate o delimitador
4< arquivo abre arquivo como descritor de arquivo 4
<&4 le do descritor de arquivo 4
2> arquivo coloca o stderr em um novo arquivo
>&3 escreve no descritor de arquivo 3
0<&4 usa descritor de arquivo como stdin
2>&1 >& reune stdout com stderr
2>>&1 >>& anexa stdout a stderr
>!arquivo grava sobre noclobber e cria novo arquivo
>>!arquivo grava sobre noclobber e anexa a um novo arquivo
<&- <&- fecha descritor de arquivo 0 (stdin)
2>&- fecha descritor de arquivo 2 (stderr)
2| canaliza stderr para o próximo comando
2>&1| |& reune stderr e stdin e canaliza os resultados
Alguns comandos do editor vi do unix / linux
Comando Ação
a -incluir apos a posição do cursor
A -incluir apos o último caracter da linha atual
:ln append
\escrever o texto aqui
.
adicionar texto em ln+1, ln é o número da linha, escrever o texto após o comando
(ponto solitário na última linha indica fim de comando) Fonte: (vimcard.txt)
:ln insert
\escrever o texto aqui
.
adicionar texto em ln, ln é o número da linha, escrever o texto após o comando
(ponto solitário na última linha indica fim de comando) Fonte: (vimcard.txt)
b -move o cursor para o início da próxima palavra a esquerda
B -idem ( b )
C -substitui os caracteres da posição do cursor ao fim da linha atual, entra no modo de inserção
cc -apaga todos os caracteres da linha atual e entra no modo de inserção
cw -apagar até o fim da palavra e entrar no modo de inserção
c$ -apagar até o fim da linha e entrar no modo de inserção
c^ -apagar até o começo da linha e entrar no modo de inserção
d$ -apaga da posição do cursor ao fim da linha
d^ -apaga da posição do cursor ao início da linha
(n)dl deleta um caracter sobre o cursor
diB deleta interior de {}
daB deleta interior de {} e {}
dib deleta interior de ()
dab deleta interior de () e ()
(n)d) -deleta a próxima frase adjacente
(n)d} -deleta o próximo parágrafo adjacente
(n)d( -deleta a frase anterior adjacente
(n)d{ -deleta o parágrafo anterior adjacente
dfc ou d(n)fc -deleta o texto até encontrar o primeiro caracter c após a posição inicial do cursor, incluindo o caracter
dFc ou d(n)Fc -deleta o texto até encontrar o primeiro caracter c anterior a posição inicial do cursor, incluindo o caracter
dtc ou d(n)tc -deleta o texto até encontrar o primeiro caracter c após a posição inicial do cursor, excluindo o caracter
dTc ou d(n)Tc -deleta o texto até encontrar o primeiro caracter c anterior a posição inicial do cursor, excluindo o caracter
(n)dd -deleta linha atual
D -deleta os caracteres da posição do cursor ate o final da linha
e -avanca o cursor para o final da próxima palavra
ge -avanca o cursor para o final da palavra anterior
E -avanca o cursor para o final da próxima palavra
(n)f -procura pelo primeiro caracter digitado após (ver uso com d)
ex.: ft -> procura pela próxima letra t
3ft -> procura pela terceira ocorrência da letra t
(n)F -procura pelo primeiro caracter digitado antes (ver uso com d)
g -move o cursor para o primeiro caracter da primeira linha do arquivo
(n)G -move o cursor para o primeiro caracter da última linha do arquivo
ou até o número da linha informado.
ga -mostra valor ASCII do caracter sob cursor
gf -abre arquivo cujo nome está sob cursor
guu -Estando sobre qualquer parte da palavra converte-a para minúsculo
gUU -Converte-a para maiúsculo
CTRL g -exibir informações sobre o arquivo atual
gCTRL g -Exibe linha, coluna, palavras em relação ‘a posição autal do cursor.
Col 1 of 216; Line 1 of 317; Word 1 of 8531; Byte 1 of 52612
(n)h -move o cursor para o caracter a esquerda do cursor
(n)H -move o cursor para a linha n do topo da janela, omitido n vai para o primeiro caracter da primeira linha da tela
i -entra no modo de inserção a partir da posição do cursor
I -entra no modo de inserção no início da linha atual
(n)j -move o cursor uma linha para baixo
J -move a linha abaixo do cursor para o final da linha atual
gJ -move a linha abaixo do cursor para o final da linha atual sem espaços entre elas
(n)K -move o cursor uma linha para cima
(n)l -move o cursor para o caracter a direita do cursor
(n)L -move o cursor para a linha n da base da janela, omitido n vai para o primeiro caracter da última linha da tela
gm -move o cursor para o meio da linha atual
M -move o cursor para a linha do meio da janela
n -repete a última pesquisa da posição do cursor ao fim do arquivo
N -repete a última pesquisa da posição do cursor ao início do arquivo
vai para o próximo arquivo editado (edição multipla)
(n)o -inseri linha abaixo da linha atual
(n)O -inseri linha acima da linha atual
p -recupera do buffer a linha salva com o comando yy depois da posição do cursor
]p -recupera do buffer a linha salva com o comando yy depois da posição do cursor com o recuo ajustado
gp -recupera do buffer a linha salva com o comando yy depois da posição do cursor, deixando o cursor depois do texto novo
P -recupera do buffer a linha salva com o comando yy antes da posição do cursor
[p -recupera do buffer a linha salva com o comando yy antes da posição do cursor com recuo ajustado
gP -recupera do buffer a linha salva com o comando yy antes da posição do cursor, deixando cursor depois texto novo
q: -edita o histórico da linha de comandos
q? -edita o histórico de pesquisa
q/ -edita o histórico de pesquisa
Q -sai do modo visual entra no modo linha a linha para retornar digite vi
(n)r -substitui o caracter atual pelo próximo digitado
(n)R -substitui todos os caracteres da posição do cursor ao final da linha
s -substitui o caracter atual pelo próximo digito e entra modo inserção
S -idem cc
(n)t -procura pelo primeiro caracter digitado após, posicionando-se antes dele (ver uso com d)
ex.: tx -> procura pela próxima letra x
3tx -> procura pela terceira ocorrência da letra t
(n)T -procura pelo primeiro caracter digitado antes, posicionando-se antes dele (ver uso com d)
u -desfaz a última alteração efetuada na linha atual ( ver em modo visual tem outra função)
U -desfaz todas as aterações efetuadas na linha atual ( ver em modo visual tem outra função)
Ctrl R -refazaz uma ação desfeita
w -move o cursor para o início da próxima palavra a direita do cursor
W -idem w
(n)x -deleta o caracter a direita do cursor (delete)
(n)xp -iverte posicionamento de caracteres
(n)X -deleta o caracter a esquerda do cursor (backspace)
(n)yy -salva no buffer a linha atual
ex.: 3yy salva no buffer a linhaa do cursor e duas abaixo
para copia-las em outro local, va ate o loval e digite p
O -move o cursor para o primeiro caracter da linha atual
$ -move o cursor para o último caracter da linha atual
/xxx -efetua pesquisa da posição do cursor ao fim do arquivo (xxx =texto)
?xxx -efetua pesquisa da posição do cursor ao início do arquivo (xxx =texto)
. -repete o último comando executado
:$ -idem G
(n)| -Vai para a coluna n da linha
{ -começo parágrafo anterior (ver uso com d)
} -começo parágrafo posterior (ver uso com d)
( -começo sentença anterior (ver uso com d)
) -começo sentença posterior (ver uso com d)
(n)<< -Desloca n linhas a esquerda
(n)>> -Desloca n linhas a direita
v -Entra no modo visual
o -Estando em modo visual, alterna posição do cursor com início e fim do destaque
gv -Estando em modo visual, inicia destaque na area visual anterior
aw -Estando em modo visual, seleciona uma palavra
as -Estando em modo visual, seleciona uma sentença
ap -Estando em modo visual, seleciona um parágrafo
ab -Estando em modo visual, seleciona um bloco ( )
aB -Estando em modo visual, seleciona um bloco { }
u -Estando em modo visual, alterna texto selecionado para minúsculo.
U -Estando em modo visual, alterna texto selecionado para miúsculo.
V -Seleciona linha a linha, é só movimentar o cursor
CTRL D CTRL U -rola meia página acima, abaixo
CTRL F CTRL B -rola página acima, abaixo
zt ou z[Enter] -põe linha atual topo da janela
zz ou z -põe linha atual centro da janela
zb ou z- -põe linha atual base da janela
zh zl -rola um caracter a direita, esquerda
zH zL -rola meia tela a direita, esquerda
CTRL Ws ou :split[Enter] -divide janela em duas
CTRL Wv ou :vsplit[Enter] -divide janela em duas
CTRL Wn ou :new[Enter] -cria nova janela vazia
CTRL Wo ou :on[Enter] -coloca janela atua em uma tela
CTRL Wj CTRL Wk -move para janela abaixo, acima
CTRL Ww CTRL W CTRL W -move para janela abaixo, acima (troca)
CTRL A -Estando no modo de Inserção insere o texto inserido anteriormente.
CTRL e -Estando no modo de Inserção copia a linha abaixo na linha atual caracter a caracter.
CTRL E -Rola todo o texto para cima.
CTRL Y -Rola todo o texto para baixo.
CTRL XE -Estando no modo de Inserção rola todo o texto para cima.
CTRL XY -Estando no modo de Inserção rola todo o texto para baixo.
CTRL N -Estando no modo de Inserção completa o texto com palavra (pesquisa anterior).
CTRL P -Estando no modo de Inserção completa o texto com palavra (pesquisa posterior).
CTRL U -Estando no modo de Inserção apaga todos caracteres inseridos linha atual.
CTRL W -Estando no modo de Inserção apaga palavra antes do cursor.
CTRL T -Estando no modo de Inserção desloca à direita a largura 1 desloc.
CTRL L -redesenha tela
CTRL v -Seleciona bloco é só movimentar o cursor
ggVG -Seleciona todo o arquivo
:w -grava o arquivo atual
ex.: :w -> grava o arquivo atual
:w teste -> grava o arquivo atual com o nome teste
:e arq.txt -abre o arquivo arq.txt
:sp -abre o mesmo arquivo já aberto em outra janela
:sp outroarq.txt -abre o arquivo outroarq.txt em outra janela
:enew -abre o um novo arquivo
:sp novoarq.txt -abre novoarq.txt em outra janela
:w! -força a gravação do arquivo atual
:q -sai do vi sem gravar
:q! -força a saída da edição atual
:wq -grava e sai da edição atual
:wq! -força a gravação e a saída da edição atual
ZZ -Salva e sai sem precisar digitar os :
/palavra -Procura palavra da posição do cursor para frente
?palavra -Procura palavra da posição do cursor para trás
/primeira\|segunda -Procura simultâneamente a palavra primeira e segunda
% -Digitado sobre um parentese, colchete ou cheve procura o seu correspondente.
:%!xxd -Converte o arquivo para hexadecimal.
:%!xxd -r -Converte o arquivo para decimal.
:center -Centraliza texto
:left -Alinha a esquerda
:right -Alinha a direita
:1,4 c 13 -copia as linhas de 1 a 4 abaixo da linha 13
:1,4 m 13 -move as linhas de 1 a 4 para a linha 13
:1,4 w teste -move as linhas de 1 a 4 no arquivo de nome teste
1,10m$|g/Essas/ p -move as linhas de 1 a 10 para o final do arquivo e localiza as palavras Essas
:1,10s/Essas/Aquelas/|1,10m$ -Substitui da linha 1 a 10 as palavras Essas por Aquelas e depois move as mesmas linhas para o fim do arquivo.
:let i=0|%g/animal/let i=i+1
:echo i
-Conta as ocorrências da palavra animal e grava na variável i
echo i mostra o valor acumulado
:g/azul/s//verde/g -substitui todas as ocorrências da palavra azul por verde
:g/azul/s//verde/ -substitui a primeira ocorrência em cada linha da palavra
azul por verde
:1,$s,^,rm Acrescenta rm no início de cada linha
:1,$s,$,rm Acrescenta rm no final de cada linha
:v/./.,/./-1join Para remover linhas em branco consecutivas de um arquivo
:v/./d E para remover todas as linhas em branco de um arquivo
:g/^$/d Idem ao anterior
:g/^[ ^I]*$/d Para remover linhas em branco que nao sejam vazias, mas que contenham espaços ou tabulacoes, emitir o comando
:s/velho/novo substitua a 1a ocorrência de velho por novo na linha corrente
:% s/velho/novo/ substitua em todo o arquivo (%) a 1a ocorrência de velho por novo em cada linha
:% s/velho/novo/g substitua em todo o arquivo (%), todas (g) as ocorrências de velho por novo
:% s/velho/novo/gc igual ao anterior, mas pedindo confirmação para cada substituição
:5,7s/velho/novo substitui a palavra velho por novo que esteja entre a linha 5 e 7 inclusive
:% s/^String[0-9]//gc expressões regulares também funcionam, igual ao sed
:% s/./\u&/gc converta para maiúsculas (\u) o 1o caracter (.) de cada linha (exclusiva vi/perl, no sed não funciona)
~ inverte minúscula para maiúscula e vice versa
5~ inverte 5 próximos
g~$ inverte até o fim da linha
Configuração do VI
Comando Ação
:set – mostra a configuração atual do vi
:set all – mostra todas as opções de configuração do vi
:set number – mostra os números das linhas
:set nonumber – não mostra os números das linhas
:set magic – Liga e desliga a interpretacao de caracteres magicos como [a-z] vai
procurar pelo intervalo de a ate z com nomagic vai procurar pela string “[a-z]”
E o meso que escapar com contrabarra \[a-z\]
:ab xxx texto Toda vez que digitar xxx substitui por texto, veja exemplos:
ab hr <HR>
ab pp <P>
ab ht <HTML>
ab=abreviaçoes e coloca no .exrc
:unab xxx Retira a abreviação
:map ,d :r!date<cr> Ao digitar ,d insere a data ao final do arquivo
:map <c-a> iOla Mundo <esc> Mapeia o CTRL A para incluir o texto Ola Mundo, saindo do modo de inserção com ESC
:map <F12> ggVGg Seleciona todo o arquivo
:imap <c-l> <esc><right>a pular fora dos parênteses, colchetes e chaves
:imap <c-h> <esc><left>a pular fora dos parênteses, colchetes e chaves
:nmap <c-b> A<CR><Esc>j Cria uma linha em branco abaixo da linha atual e vai para a próxima linha
:nmap <c-b> o<Esc>j Equivale ao anterior
:map <c-b> <esc>mz:%s/\s\+$//g<cr>`z Elimina os espaços em branco no final da linha
.vimrc .vimrc do voyeg3r
.vimrc .vimrc do Ivan Carlos da Silva Lopes
http://aurelio.net/doc/vim Aurelio sobre o vim
Configuração do VI (continuação)
Explicações sobre .exrc e editar direto em uma linha
o redirecionamento em linha de comando o vim tem a opção de abrir o que for redirecionado como se fosse um arquivo, basta acrescentar -, veja o exemplo:ps aux | vim -
A variável exinit=”set number redraw” é utilizada para configuração do vi
Pode-se também configurar o vi pelo arquivo .exrc, por exemplo que programa em C
no linux poderia ter um .exrc com as seguintes linhas:
set autoindent
set shiftwidth=4
set backspace=2 (do linux)
set ruler (do linux)
Pode-se ir direto para uma linha quando se edita um arquivo ex.:
vi +10 relat.rel (vai direto para a linha 10)
Situações com o VIM do Linux
Comando Ação
Como o editor vi tem o .exrc o VIM tem o .vimrc para configurações
chamado .vimrc localizado no diretório home do usuário.
:set nocp – Modo “No compatible” . Valores padrão para algumas opções são adequados ao Vim, não Vi.
:set nowrap – Desliga quebra de linhas. As linhas vao ficar longas, ultrapassando a margem direita.
:set ruler – Mostra no rodape da tela a posição horizontal e vertical do cursor.
:set ve=all – Permite mover com as setas para areas onde não tem texto.
:set vb – Desliga o som de beep (no gvim a tela pisca quando houver erros).
:set ignorecase (ic) – Busca não diferencia maiusculas e minusculas.
:set ai – Ao criar nova linha, usa indentação da linha anterior.
:set visualbell – pisca a tela ao inves de bipar
:set sw=1 – ShiftWidth: número de colunas para o comando >
:set autowrite (aw) – salva a cada alteração
:set hlsearch (hls) – ilumina a última procura
:set ignorecase (ic) – case insensitive na busca
:set incsearch (is) – ilumina procura enquanto digita
:set showmatch (sm) – mostra o casamento de {},[],()
:set tabstop=4 – Tabs são do tamanho de 4 espaços
:set expandtab (et) – Tabs são convertidos para espaços
:retab – converter os TABs ja existentes para espaços
:set shiftwidth=4 – Quando o “autoindent” faz um tab, ele é do tamanho de 4 espaços.
:set softtabstop=4 – Tecla Backspace volta 4 espaços quando estiver numa identação.
:set backspace=indent,eol,start – Tecla Backspace funciona sobre autoindents, quebra de linha,
e inicio de inserção.
:set title – Mostra nome do arquivo no rodape da tela.
:set ttyfast – Envia mais caracteres ao terminal, melhorando o redraw de janelas.
:set background=dark – Usa cores que ficam melhor com fundo preto, quando usando cores em edição de codigo fonte.
:syntax on – Ativa as cores para edição de codigo fonte (syntax highlighting)
Fonte: http://www.onlinux.com.br/dicas/dicasinformatica/maisdicasvi.txt
Leia mais em http://www.zago.eti.br/script/vi.txt
Edição múltiplas de arquivos o VI/VIM do Linux
Comando Ação
vim -o arq1.txt arq2.txt – Editar os arquivos na mesma janela dividida na horizontal
vim -O arq1.txt arq2.txt – Editar os arquivos na mesma janela dividida na vertical
vi -d arq1.txt arq2.txt – Ver diferenças entre arquivos
CTRL Wn Nova Janela
CTRL Wn Dividir a Janela
CTRL Wv Dividir verticalmente
CTRL Wc Fechar
CTRL Wo Fechar outra(s)
CTRL WR Girar para cima
CTRL Wr Girar para baixo
CTRL W= Mesmo Tamanho
CTRL W_ Altura Maxima
CTRL W1_ Altura Minima
CTRL W| Largura Maxima
CTRL W1| Largura Minima
CTRL WK Mover para cima
CTRL WJ Mover para Baixo
CTRL WH Mover para esquerda
CTRL WL Mover para Direita
CTRL WW Mover para próxima janela
Usando o vi para examinar diferenças entre arquivos
vimdiff arq1.txt arq2.txt – abri os dois arquivos, lado a lado, com as diferenças em texto destacado.
vi -d arq1.txt arq2.txt – Ver diferenças entre arquivos
vimtutor – Guia básico do iniciante no vi
Fonte: http://www.onlinux.com.br/dicas/dicasinformatica/vi.htm
Substituição com arquivo externo
Conteúdo de troca.vi:
:%s/reação/REAÇÃO/g
:%s/fusão/FUSÃO/g
:wq
Execute vi -s troca.vi arq.txt
Será executado no arquivo arq.txt os comandos contidos
em troca.vi e o arquivo arq.txt será salvo e fechado
com as alterações efetuadas
Encriptado arquivo
vi -x arq.txt – Será solicitada uma senha e o arquivo ficará encriptado.
Fonte: http://geraldo-ribeiro.sites.uol.com.br/vim.htm
Recursos diversos do vi
fgrep -l animal *.txt | vi - – Abre no vi um novo arquivo contendo os nomes dos arquivos que contenham a palavra animal em seu conteúdo.
vi `fgrep -l animal *.txt` – Diferentemente do anterior, este comando abre os arquivos que contém a palavra animal em seu conteúdo.
man sed | col -b | vim - – Edita no vi um novo arquivo contendo o texto do man sobre o comando sed
read !man dc|col -b
ou read !dc --help
– Equivale ao anterior, só que neste você já esta com o vi aberto
3,10!cat -n|tr '^I' '-' Numera dentro do texto da linha 3 até a 10 usando o cat -n
1,$!cat -n|tr '^I' '-' Numera dentro do texto todas as linhas do arquivo usando o cat -n
let i=0|2,20g/^/let i=i+1|s//\=i/g Numera dentro do texto da linha 2 até a 20, usando variáveis
let @s=0|2,20g/^/let @s=@s+1|s//\=@s/g Numera dentro do texto da linha 2 até a 20, usando registro
:let @a=".!seq 5"
@a
Executa o comando seq, que conta de 1 até 5 e guarda o valor
no registro @a, depois executa o comando contido no registro
:@a inclui estes valores no arquivo
:let @s=":%!sort -u"
@s
Executa o comando sort nas linhas do arquivo e guarda o
resultado no registro @s, depois executa o comando contido
no registro :@s para ordenar as linhas do arquivo
call setline(5,strftime("%d.%m.%Y %X")) Insere string na linha especificada, neste caso insere data e
hora na linha 5, mas apaga o que estava nela.
Dois exemplos para demonstrar que a ordem em que os filtros são passados o efeito pode ser diferente:
ls -l | tail +2 | awk '{print $9}' | sed 's/^/)/' | cat -n | sed 's/^/(/' | tr "\t" " " | tr -s " " | vi - Explicando: ls -l lista dos arquivos do diretório
tail +2 tira linha de cabeçalho
awk pega o campo 9 que é o nome do arquivo
O primeiro sed coloca o parentese fechando antes do nome do arquivo
cat -n coloca os números
O segundo sed coloca o parentese abrindo, antes dos números
O primeiro tr troca um tab por um espaço em branco
O segundo tr elimina espaços em brancos repetidos
e o vi – abre o resultado no edit vi
ls -l | tail +2 | awk '{print $9}' | cat -n | tr "\t" ") " | tr -s " " | tr "^ " "(" | vi - O mesmo comando assima pouco modificado, execute e veja a diferença nos arquivos gerados
Fonte: http://aurelio.net/doc/vim/vim-dicas-ivan.html
Autocompletar palavras / buscar no dicionário
set dictionary=~/.meudic.txt Dicionario para procurar o auto-complemento de palavras, define um dicionário padrão, pode ser colocado no .exrc
imap <F7> <c-n> A tecla F7 Completa uma palavra
imap <F8> <c-x><c-n> a tecla F8 Da a sequencia a essa palavra
imap <c-d> <c-x><c-k> Ctrl + D Procura no dicionario
Fechamento automático de (, { e [
imap ( ()i Fecha automaticamente o parentesi quando abre um
inoremap ( ()i Fecha automaticamente o parentesi quando abre um
inoremap [ []i Fecha automaticamente o colchete quando abre um
inoremap { {}i Fecha automaticamente uma chave na linha abaixo à que foi aberta
map! 'a &aacute;
map! 'A &Aacute;
map! ~a &atilde;
map! ~A &Atilde;
map! `a &agrave;
map! `A &Agrave;
map! 'e &eacute;
map! 'E &Eacute;
map! ^e &ecirc;
map! ^E &Ecirc;
map! 'i &iacute;
map! 'I &Iacute;
map! 'o &oacute;
map! 'O &Oacute;
map! ~o &otilde;
map! ~O &Otilde;
map! "u &uuml;
map! "U &Uuml;
map! ,c &ccedil;
map! ,C &Ccedil;
Exemplo do uso de map! para substituir palavras acentuadas pelo seu correspondente em code html

Impressoras no Linux

vi /etc/printcap

l8) echo "3360\c" configura a impressora para 1/8
;;
o arquivo das impressoras fica /usr/spool/lp/admis/lp/interfaces

Instalação/Configuração via linha de comando:

1 – cria diretório lp2 dentro de /var/spool/lpd
2 – doa ao grupo lp
3 – copia o .config de outra impressora
4 – /etc/rc.d/init.d/lpd restart (pode tmb executar stop depois start)

Configuração do Samba

vi /etc/smb.conf
[teste]
path= /oracle/dat0/teste
read only = No
Guest = Yes

[dataflex]
comment = diretório dataflex
available = yes
browseable = yes
public = yes
guest only = no
writable = yes
only user = no
path = /users/dataflex
force create mode = 0777
force directory mode = 0777
force group = dataflex
force user = dataflex
allow hosts = 192.168.212.1, 192.168.212.2, 192.168.212.13

Para montar a unidade c: de uma maquina como partição do Linux
smbmount //ubiratan/c /mnt/rede

Restarta da seguinte forma:

/etc/rc.d/init.d/smb reload
/etc/rc.d/init.d/smb restart

Para completar este assunto ver depois dicas sobre o Samba em:
http://www.onlinux.com.br/dicas/dicasinformatica/samba30.txt

Servidor de e-mail / squid

Para definir sites proibidos e usuários librados edita os arquivos:

/etc/squid/data/sites-proibidos.txt
/etc/squid/data/users-liberados.txt

depois executa /etc/init.d/squid reload (stop start restart)

Sobre Alexandre Pires

ORACLE OCS Goldengate Specialist, OCE RAC 10g R2, OCP 12C, 11g, 10g , 9i e 8i - Mais de 25 anos de experiência na área de TI. Participei de projetos na G&P alocado na TOK STOK, EDINFOR alocado na TV CIDADE "NET", 3CON Alocado no PÃO DE AÇUCAR, DISCOVER alocado na VIVO, BANCO IBI e TIVIT, SPC BRASIL, UOLDIVEO alocado no CARREFOUR e atualmente na ORACLE ACS atendendo os seguintes projetos: VIVO, CLARO, TIM, CIELO, CAIXA SEGUROS, MAPFRE, PORTO SEGURO, SULAMERICA, BRADESCO SEGUROS, BANCO BRADESCO, BASA, SANTANDER, CNJ, TSE, ELETROPAULO, EDP, SKY, NATURA, ODEBRESHT, NISSEI, SICREDI, CELEPAR, TAM, TIVIT, IBM, SMILES, CELEPAR, SERPRO,OKI,BANCO PAN, etc
Esse post foi publicado em LINUX, UNIX e marcado . Guardar link permanente.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s