Comandos Unix/Linux
SUGESTÃO: a melhor maneira de aprender é testar cada um no terminal de comandos.
A esquerda de <- o comando, a direita de <- o que ele faz. Entre aspas indicamos o argumento (são comandos que precisam dele), mas as aspas devem ser omitidas na prática.
Os primeiros
date <- dá data e hora who <- responde quem está logado finger "nome" <- dá informações do usuário "nome" ping "máquina" <- informa se "máquina" está acessível na rede clear <- limpa a tela locate "file" <- mostra todos os arquivos do disco que tem "file" como parte do nome which "comando" <- responde onde (em que diretório) se encontra "comando" du -h "dir" <- lista o espaço ocupado pelos diretórios abaixo do "dir". O -h é uma opção para mostrar o resultado em unidades humanas(bytes)
Exemplos com argumentos (alguns argumentos só funcionam no lief):
finger | alex |
ping | pequim |
locate | firefox |
which | gnuplot |
du -h | /home |
Básicos
ls <- listagem do diretório ls -l <- idem com mais informação ls --color <- idem com esquema de cores ls -a <- mostra arquivos ocultos do sistema (os .*)
A seguir se o comando precisa de argumento colocamos um nome genérico (ex: dir, file, etc) e sem aspas
mkdir dir <- cria o diretório dir cd dir <- troca para o diretório dir pwd <- responde onde você está (qual diretório) cd .. <- volta ao diretório que está em cima cd ~ <- vai para o nosso diretório de partida: /home/eu rmdir dir <- apaga o diretório (se ele estiver vazio) dir cp file1 file2 <- copia o arquivo file1 no file2 rm file <- apaga o file rm * <- PERIGO! Apaga tudo o que está no diretório, rm *.dat <- que apaga só os .dat rm -i * <- apaga tudo no diretório atual, mas perguntando antes cp file1 dir/file2 <- copia file1 no file2 no diretório dir mv file1 file2 <- troca o nome de file1 para file2 mv file dir/ <- coloca o file no subdiretório dir cat file <- mostra o conteúdo de file more file <- também, mas página por página
O more pode ser usado para mostrar qualquer coisa na tela, uma página por vez.
Exemplo: se ls -l dá muita informação, pode-se usar more. Aí aparece a
primeira página e espera por mais (dar <space> para continuar, <enter>
avança uma linha, para sair ou <ctrl>+<c> para interromper).
ls -l | more <- dá o diretório atual página x página
Sobre arquivos
sort file <- ordena alfabeticamente o arquivo file wc file <- conta as linhas, palavras e bytes do arquivo file tail file <- mostra as últimas 10 linhas de file head file <- mostra as primeiras 10 linhas de file diff file file1 <- compara e mostra as diferenças entre file1 e file2 split file <- separa file em pedaços iguais lpr file <- imprime file
Editores
O emacs fornece um ambiente especializado por tarefa (manual mínimo em html ou nos formatos pdf e ps em ftp://lief.if.ufrgs.br/ftp/pub/emacs/).
Existem editores mais simples como jed, versão reduzida do emacs Outro edito gráfico é o kate que vem junto com o konqueror
O vi pode resultar pouco amigável, porém é o único que não falta em nenhum sistema que rode Unix
vi <- chama o vi e depois ... a <- para inserir texto <esc> <- para desativar a função No vi você não pode começar a digitar sem antes digitar "a" /palavra <enter> <- para procurar palavra x <- para apagar por letra dd <- apaga uma linha :w <- para salvar :q <- para sair :q! <- para sair sem salvar :wq <- para sair salvando
Um dos principais problemas encontrados por usuários do vi é descobrir como se faz para substituir palavras no texto. Isto é feito com as mesmas expressões regulares válidas no editor sed. Assim para substituir a palavra word1 por word2 se faz
:s/word1/word2/g <- substitui word1 por word2 (uma por vez) :%s/word1/word2/g <- substitui todas as ocorrencias de word1 por word2
Mais comandos
write colega <- estabelece comunicação on-line com o colega, se estiver logado na mesma máquina man comando <- dá informação a respeito do comando import nome_arq1.jpg <- importa da tela uma imagem selecionada (com o mouse) e gera um arquivo com nome "nome_arq1" e extensão jpg import nome_arq2.ps <- importa da tela uma imagem selecionada (com o mouse) e gera um arquivo com nome "nome_arq2" e extensão ps
Comandos especiais
grep
grep kk file
verifica se a palvra kk está no arquivo file
Muito útil quando se procura um arquivo perdido com um determinado assunto.
Exemplo: você não sabe qual o arquivo com o relatório sobre "decaimento".
Então digita:
grep decai *
e vai mostrar os arquivos (se tiver algum), contendo a palavra decai.
Se você procura duas palavras juntas deve usar aspas. Por exemplo:
grep "pi =" *.tex
mostra os arquivos tex contendo pi =
sed
sed 's/word1/word2/g' file
troca word1 por word2 no arquivo file. O resultado vai para a tela
sed 's/word1/word2/g' file > file2
faz o mesmo salvando o resultado no arquivo file2camante
awk
awk é um processador de linhas de arquivo com muita funcionalidade. Ele opera assim: lei uma a uma as linhas de um arquivo (pp por exemplo) e dessas linhas podemos decidir o que imprimir e quando imprimir ouate imprimir as linhas modificadas (por uma opração matemática ou por substituição de palavras) A melhor forma de entender como funciona como sempre é através de exemplos:
awk '{print $1, $4}' notas
neste exemplo o awk imprime a primeira ($1) e quarta($4) colunas de cada linha do arquivo notas Se o conteúdo desse arquivo são as notas de uma turma:
juan 4 8 6 pedro 7 4 10 mateus 7 8 5 felipe 8 3 7
depois de executar a linha da awk acima teremos
juan 6 pedro 10 mateus 5 felipe 7
Aparece aqui um conceito importante da linguagem de comandos: as variáveis, neste caso $1, $2 indicam a primeira, segunda, etc palavras (podem ser números ou combinações dos dois). Como sabe o awk onde termina uma e começa a outra? Pelo espaço em branco (pode ser um ou mais espaços) que definem o fim de uma e começo da seguinte.
Outro detalhe, compare as duas linhas quase idênticas:
awk '{print $1, $3, $4}' notas awk '{print $1, $3 $4}' notas
A vírgula (,) entre as variáveis ($3 e $4) faz toda a diferença!
Mas este, se bem é muito prático é apenas uma amostra do que awk pode fazer Ele pode filtrar de acordo a critérios. Por exemplo para imprimir as notas dos alunos que tiraram mais de 7 na primeira:
awk '{ if ($2 >= 7) print $1, $2, $3, $4}' notas
Vários
echo alo, alo <- é um eco mesmo, devolve o que se manda para ele cal <- mostra um calendário, teste agora e verá cal 2000 <- aqui terá o ano inteiro
Sessões remotas e transferência de arquivos
ssh usuario@maquina.dominio <- programa para entrar em máquina e fazer sessão remota scp usuario@máquina.dominio:arquivo-remoto arquivo-local <- comunicação para troca de arquivos
Monitoramento de processos
ps x <- mostra seus processos, incluindo ssh, etc ps aux <- o mesmo do sistema todo top <- o mesmo com mais informação kill -9 <- mata o processo que não está dando certo
Compactado e armazenado de arquivos
gzip file <- comprime os arquivos tar cvf todos_meus_dados.tar *.dat <- arquiva um conjunto de arquivos (no exemplo todos os .dat) tar cvfz todos_meus_dados.tgz *.dat <- faz o mesmo criando um arquivo ja comprimido tar xvf todos_meus_dados.tar <- desarquiva (explode) o conjunto de dados tar xvfz todos_meus_dados.tgz <- faz o mesmo de um arquivo comprimido
Mais
chmod +x file <- dá a file permissão para ser executado ln -s file dir/ <- cria um atalho (link) de file no diretório dir/ alias <- mostra os alias que estão definidos alias dir='ls -l --color' <- define um alias
Caracteres de significado especial no UNIX
> | redirecionando a saída padrão (tela) |
< | redirecionando a entrada padrão (teclado) |
>> | adicionando a saída padrão à um arquivo existente |
| |
pipe (duto) passa a saída padrão de um comando para o próximo |
& | coloca o programa em "background" devolvendo controle do terminal |
$ | para referir-se a variáveis |
* | é o curinga para referência de nomes de arquivos |
Programas de uso corrente
(requerem de sessão gráfica)
xterm <- abre um terminal de comandos rxvt <- o mesmo com outra aparência gv exemplo.ps <- visualiza um arquivo postscript (ex: exemplo.ps) xv <- visualizador de arquivos gráficos: tif, gif, jpg, etc xfig <- programa para fazer desenhos simples (tipo paintbrush do win) gimp <- programa para tratamento de imagens konqueror <- gerenciador de arquivos e navegador (do kde) kdehelp <- interface tipo netscape para help firefox ou mozilla <- navegadorores de página da web