Você está na página 1de 25

29/09/2021 08:35 Comandos do Unix / Linux

Comandos do Unix / Linux

urs.bira@uol.com.br

Í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

Distruibuíções Linux e sites especiais Funções do tput


Índice de alguns comandos do UNIX/LINUX Comandos embutidos do Shell
Variáveis do Shell Manipulando variáveis
Operadores de Teste Comuns Comparações Numericas
Redirecionamento de Entrada e Saida Alguns comandos do editor VI
Configuração do VI Situações com o VIM
Edição múltiplas com o VI/VIM VI/VIM para examinar diferenças

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:
Iniciante, Intermediário, Inic 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

https://urs.bira.nom.br/informatica/comando.htm 1/25
29/09/2021 08:35 Comandos do Unix / Linux
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

https://urs.bira.nom.br/informatica/comando.htm 2/25
29/09/2021 08:35 Comandos do Unix / Linux
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)

https://urs.bira.nom.br/informatica/comando.htm 3/25
29/09/2021 08:35 Comandos do Unix / Linux
RSS A memória física usada por esse processo
SHARE A memória compartilhada usada por esse processo
O status desse processo, mostrado em código. Alguns códigos de status principais são:

STAT 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
Se este é um sistema de múltiplos processadores, esta coluna indica o ID da CPU em que esse processo está sendo
CPU
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".

https://urs.bira.nom.br/informatica/comando.htm 4/25
29/09/2021 08:35 Comandos do Unix / Linux
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

# usando a saída do ls pega o campo 9 que é o nome do arquivo e


ls -l | awk '{print "cp",$9,$9 ".bck"}' > backup.sh
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

https://urs.bira.nom.br/informatica/comando.htm 5/25
29/09/2021 08:35 Comandos do Unix / Linux
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.

https://urs.bira.nom.br/informatica/comando.htm 6/25
29/09/2021 08:35 Comandos do Unix / Linux
= apaga a linha que contá a palavra modelo e as 3 seguintes.

sed '/modelo/,+3d' texto.txt


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:

https://urs.bira.nom.br/informatica/comando.htm 7/25
29/09/2021 08:35 Comandos do Unix / Linux
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

https://urs.bira.nom.br/informatica/comando.htm 8/25
29/09/2021 08:35 Comandos do Unix / Linux

# 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 =

https://urs.bira.nom.br/informatica/comando.htm 9/25
29/09/2021 08:35 Comandos do Unix / Linux
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:

e o do arquivo2 era:

o arquivo resultante arquivo3 seria:

1a

2b

3c

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

https://urs.bira.nom.br/informatica/comando.htm 10/25
29/09/2021 08:35 Comandos do Unix / Linux
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)

https://urs.bira.nom.br/informatica/comando.htm 11/25
29/09/2021 08:35 Comandos do Unix / Linux
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

dialog - mostra caixas de dialogo Veja exemplos de script com este comando

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

https://urs.bira.nom.br/informatica/comando.htm 12/25
29/09/2021 08:35 Comandos do Unix / Linux
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:

https://urs.bira.nom.br/informatica/comando.htm 13/25
29/09/2021 08:35 Comandos do Unix / Linux

#!/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 "\033[4${cor};3${cor};1m

urs.biraurs.biraurs.biraurs.biraurs.biraurs.biraurs.biraurs.biraurs.biraurs.bira

\033[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:

https://urs.bira.nom.br/informatica/comando.htm 14/25
29/09/2021 08:35 Comandos do Unix / Linux
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

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

https://urs.bira.nom.br/informatica/comando.htm 15/25
29/09/2021 08:35 Comandos do Unix / Linux
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
- Congela sem encerrar a tarefa

Skill 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

https://urs.bira.nom.br/informatica/comando.htm 16/25
29/09/2021 08:35 Comandos do Unix / Linux
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="\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[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


VAR="minha_foto.jpeg"

1. Retirar a parte final da string minha_foto


echo ${VAR%.jpeg}
Como podemos ver, ".jpeg" será excluído. Indicamos o que será excluído depois do caracter '%'.
VAR="http://www.linux.com.br"

2. Retirar a parte inicial da string www.linux.com.br


echo ${VAR#http://}

https://urs.bira.nom.br/informatica/comando.htm 17/25
29/09/2021 08:35 Comandos do Unix / Linux
Indicamos o que será excluído depois do caracter '#'
VAR="http://www.g00gle.com"

3. Mostrar tudo após uma posição www.g00gle.com


echo ${VAR:7}
Depois do ':' indicamos o índice. Como é em C, o primeiro índice é 0, o
segundo é 1 ..., o oitavo é 7 ... etc.
VAR="123456789"

4. Mostrar entre alguns caracteres 34567


echo ${VAR:2:5}
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'.


VAR="dominio@linux"

5. Elimina o caracter e tudo a ESQ. linux


echo ${VAR#*@}
Bom, aqui indicamos o caracter a ser deletado e tudo a sua esquerda, depois da string "#*".
VAR="dominio@linux"

6. Elimina o caracter e a DIR. dominio


echo ${VAR%@*}
Já aqui, indicamos o caracter a ser deletado e tudo a sua direita, entre a string "%*".
EXC=":senha"

7. Excluir até um valor VAR="root:senha:/bin/bash"


root
echo ${VAR%%$EXC*}
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 '*'.


EXC="senha:"

8. Excluir de um valor até o fim VAR="root:senha:/bin/bash"


/bin/bash
echo ${VAR##*$EXC}
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 "##*".


VAR="c1:c2:c3"

9. Troca de strings c1xc2:c3


echo ${VAR/:/x}
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


VAR="tenho 19 caracteres"

10. Comprimento da variável 19


echo ${#VAR}
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

https://urs.bira.nom.br/informatica/comando.htm 18/25
29/09/2021 08:35 Comandos do Unix / Linux
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

adicionar texto em ln+1, ln é o número da linha, escrever o texto após o comando

\escrever o texto aqui

(ponto solitário na última linha indica fim de comando) Fonte: (vimcard.txt)


.
:ln insert

adicionar texto em ln, ln é o número da linha, escrever o texto após o comando

\escrever o texto aqui

(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
-move o cursor para o primeiro caracter da última linha do arquivo

(n)G
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
-Exibe linha, coluna, palavras em relação 'a posição autal do cursor.

gCTRL g
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

https://urs.bira.nom.br/informatica/comando.htm 19/25
29/09/2021 08:35 Comandos do Unix / Linux
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
-move o cursor para a linha n da base da janela, omitido n vai para o primeiro caracter da última linha da
(n)L
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
-recupera do buffer a linha salva com o comando yy depois da posição do cursor, deixando o cursor depois
gp
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
-recupera do buffer a linha salva com o comando yy antes da posição do cursor, deixando cursor depois
gP
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.

https://urs.bira.nom.br/informatica/comando.htm 20/25
29/09/2021 08:35 Comandos do Unix / Linux
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
-Substitui da linha 1 a 10 as palavras Essas por Aquelas e depois move as mesmas linhas para o fim do
:1,10s/Essas/Aquelas/|1,10m$
arquivo.
:let i=0|%g/animal/let i=i+1
-Conta as ocorrências da palavra animal e grava na variável i

:echo 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
Para remover linhas em branco que nao sejam vazias, mas que contenham espaços ou tabulacoes, emitir o
:g/^[ ^I]*$/d
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

https://urs.bira.nom.br/informatica/comando.htm 21/25
29/09/2021 08:35 Comandos do Unix / Linux
:% 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.

https://urs.bira.nom.br/informatica/comando.htm 22/25
29/09/2021 08:35 Comandos do Unix / Linux
:set softtabstop=4 - Tecla Backspace volta 4 espaços quando estiver numa identação.
- Tecla Backspace funciona sobre autoindents, quebra de linha,

:set backspace=indent,eol,start
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
- abri os dois arquivos, lado a lado, com as diferenças em texto
vimdiff arq1.txt arq2.txt
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
Será executado no arquivo arq.txt os comandos contidos

:%s/fusão/FUSÃO/g
em troca.vi e o arquivo arq.txt será salvo e fechado

:wq
com as alterações efetuadas
Execute vi -s troca.vi arq.txt
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
- Abre no vi um novo arquivo contendo os nomes dos arquivos que
fgrep -l animal *.txt | vi -
contenham a palavra animal em seu conteúdo.
- Diferentemente do anterior, este comando abre os arquivos que
vi `fgrep -l animal *.txt`
contém a palavra animal em seu conteúdo.
- Edita no vi um novo arquivo contendo o texto do man sobre o
man sed | col -b | vim -
comando sed
read !man dc|col -b

- Equivale ao anterior, só que neste você já esta com o vi aberto


ou read !dc --help
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
Executa o comando seq, que conta de 1 até 5 e guarda o valor

:let @a=".!seq 5"

no registro @a, depois executa o comando contido no registro

@a
:@a inclui estes valores no arquivo
Executa o comando sort nas linhas do arquivo e guarda o

:let @s=":%!sort -u"

resultado no registro @s, depois executa o comando contido

@s
no registro :@s para ordenar as linhas do arquivo
Insere string na linha especificada, neste caso insere data e

call setline(5,strftime("%d.%m.%Y %X"))


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 | Explicando: ls -l lista dos arquivos do diretório

sed 's/^/(/' | tr "\t" " " | tr -s " " | vi - 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

https://urs.bira.nom.br/informatica/comando.htm 23/25
29/09/2021 08:35 Comandos do Unix / Linux
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 O mesmo comando assima pouco modificado, execute e veja a
-s " " | tr "^ " "(" | vi - diferença nos arquivos gerados
Fonte: http://aurelio.net/doc/vim/vim-dicas-ivan.html
Autocompletar palavras / buscar no dicionário
Dicionario para procurar o auto-complemento de palavras, define um
set dictionary=~/.meudic.txt
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;
Exemplo do uso de map! para substituir palavras acentuadas pelo
map! 'i &iacute;
seu correspondente em code html
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;

Impressoras no Linux

vi /etc/printcap

l8) echo "\033\060\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

https://urs.bira.nom.br/informatica/comando.htm 24/25
29/09/2021 08:35 Comandos do Unix / Linux

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)

Fonte: Pesquisas Diversas


http://www.zago.eti.br/comandos.html
http://www.devin.com.br/eitch/comandos_linux/
http://www.onlinux.com.br/dicas/lnag/Linux_commands.htm
http://www.ss64.com/index.html
http://guiabozolinux.sourceforge.net/FSL:Comandos_do_Linux
http://www.onlinux.com.br/dicas/lnag/Linux_commands.htm
http://www.pixelbeat.org/cmdline.html
um superguia de comandos
outra lista de comandos
Comandos avançados
um guia de comandos completo
http://www.debian.org/doc/manuals/reference/ referência debian
sergioaraujo.pbwiki.com
Fonte: [1] - onlinux
Fonte: [2] - onlinux
Fonte: Guia Foca GNU/Linux

https://urs.bira.nom.br/informatica/comando.htm 25/25

Você também pode gostar