LS - Entre os comandos mais usados num terminal, certamente "ls" está entre eles, pela sua praticidade e flexibilidade. Vale à pena aprender a usá-lo bem.
$ ls
Lista os arquivos e diretórios.
$ ls *.txt
Lista apenas os arquivos que terminam com .txt.
$ ls *.{html,htm,dhtml,xhtml}
Lista todos os arquivos que terminam com .html .htm .dhtml .xhtml.
$ ls -a
Lista os arquivos ocultos (também).
$ ls -l
Lista o nome do arquivo numa coluna simples, o número de links para o
arquivo, o nome do dono, o nome do grupo, o tamanho do arquivo em bytes e
o dia em que foi criado.
$ ls -s
Lista os arquivos e seu tamanho em bytes.
$ ls -r
Lista os nomes na ordem inversa (Z -> A).
$ ls -o
O mesmo que "-l", só que sem mostrar o nome do grupo.
$ ls -m
Lista os arquivos horizontalmente, separados apenas por uma vírgula e
um espaço (vira uma bagunça se você tem muitos arquivos).
$ ls --full-time
Lista os arquivos mostrando hora, dia, mês e ano em que foi criado.
CD - Muda o diretório de trabalho, trabalha juntamente com o "ls", para
navegar entre diretórios.
$ cd nome-do-diretório
Vai para o diretório nome-do-diretório, desde que se tenha permissão
para isso. Exemplo: $ cd /home/lilo
$ cd ~
Vai para o seu diretório "home". Exemplo: Usuário com login "murilo":
$ cd ~
$ pwd
/home/murilo
OBS: "pwd", mostra em que diretório você esta.
$ cd ..
Sobe para o diretório anterior, note que há um espaço em "cd" e os dois pontos.
$ cd ../../../
Sobe três diretórios.
Algo bem legal de se usar o shell de sistemas UNIX, é complementação de
palavras. Para isto pressiona-se a tecla ""TAB":
1. Os arquivos do diretório atual, pressiona-se "TAB" duas vezes após
"cd", e depois "y":
$ cd "TAB" "TAB" "y"
Serão mostrados todos os arquivos do diretório.
2. Para ver todos os comandos disponíveis:
$ "TAB" "TAB" "y"
3. Para completar com o nome do arquivo/diretório:
$ cd /h "TAB" "ENTER"
Apresenta o diretório "/home", é o único que começa com "h" na minha caixa
GNU/Linux. Agora vejamos o seguinte exemplo:
$ cd /u"TAB"/lo"TAB"/s"TAB"
Nota-se que ele complementa a palavra e permite que digitemos menos
(bem menos). Mas no exemplo em questão ele vai parar porque não sabe se
queremos ir para "sbin", "share", "src". Digitamos a próxima letra "h"
(para o diretório share), e pronto é só pressionar "ENTER".
OBS: Pessoas acostumadas apenas com o prompt do Microsoft DOS podem ficar
aterrorizadas com a velocidade com a qual um usuário + ou - experiente no
Linux navega através do modo texto, acreditem, não há mágica nenhuma
nisso ;-).
CP - Copia arquivos ou diretórios. Apesar de sempre ser comparado ao
comando "COPY" do DOS, o "cp" é muito melhor e muito mais robusto
também.
$ cp arquivo diretório
Copia o arquivo para o diretório. Exemplo: $ cp penguin-sucks.jpg /home/lilo/pics/
$ cp diretório diretório
Copia o primeiro diretório para dentro do segundo. Exemplo: $ cp pics/ diversos/
OBS: E se dois diretórios tem o mesmo nome? "cp" age da mesma forma e coloca o primeiro dentro do segundo.
$ cp -a diretório diretório
Quando o primeiro diretório tem vários diretórios dentro, o "cp" precisa saber que você quer copiar tudo. Para isso adicione a opção "-a". E ele fará uma copia recursiva, isto é: copiara tudo o que encontrar dentro do primeiro diretório para o segundo, e preservara sua estrutura e atributos, mesmo que "-dpr".
$ cp -i arquivo diretório
Se já existir um arquivo de mesmo nome dentro do diretório, ele pergunta se você quer substituí-lo. Se a resposta à pergunta for "y", ele o fará.
$ cp -f arquivo diretório
Se já existir um arquivo de mesmo nome dentro do diretório, ele gravará em cima dele sem perguntar nada.
OBS: "cp" tem muitas outras opções interessantes. Para saber todas elas verificar a man page.
FIND - É um utilitário para procura de arquivos ou diretórios. Pode-se
procurar virtualmente tudo com ele.
$ find / -name arquivo
Procura a partir do diretório raiz (/) um arquivo qualquer. Note que
se você não esta logado como root ele retornara um monte de mensagens de erro sobre permissão negada em certos diretórios.
OBS: Isso vai te salvar por enquanto... :-), quando achar que chegou a
hora veja a man page.
GREP - Procura dentro dos arquivos por palavras.
$ grep -n LINUX *.txt
Isto fará com que ele procure em todos os arquivos de texto e mostre todas as linhas em que a palavra LINUX aparece.
$ grep -n Linux /home/*.txt -A 5 -B 5 -R | less
Agora isto fará ele procurar em todos os diretórios /home/, por causa
da recursividade (-R), e apresentará cinco linhas antes da expressão e
cinco depois para facilitar a pesquisa pelo contexto, depois ele joga
tudo isso no less que torna fácil a leitura. Use o less a menos que
consiga ler 300 palavras por segundo.
OBS: Como de costume... isso é só um antegosto. O grep tem muito para
oferecer.
CAT - Concatena arquivos e os mostra na saída padrão. Prático para ver
arquivos curtos:
$ cat textocurto.txt
Ele mostra na tela (a saída padrão) o textocurto.txt
$ cat textocurto.txt > outrotexto.txt
Ele insere o textocurto.txt em outrotexto.txt, o conteúdo deste último
será perdido.
$ cat textocurto.txt >> outrotexto.txt
Ele insere no fim do segundo arquivo o primeiro. O mesmo para binários:
$ cat *.mp3 > nomequalquer.mp3
Pega todos os mp3s do diretório e manda para um único arquivo. Agora
teremos uma música bem cumprida :-).
$ cat /proc/cpuinfo
Pode-se ver muitas informações no diretório /proc, use o cat para isso.
DF - Mostra o uso do espaço em todos os discos montados.
$ df
ou
$ df -m
Mostra o tamanho em megabytes (mais fácil para leitura).
DU - Mostra o tamanho dos arquivos.
$ du arquivo.pdf
Mostra o tamanho do arquivo.pdf.
$ du *
Mostra o tamanho de todos os arquivos no diretório.
$ du /*
Mostra o tamanho de todos os arquivos (aos quais você tem permissão) no computador.
FMT - Um simples e prático formatador de texto. Prático quando precisa-se
fazer uma formatação rápida em algum arquivo.
$ fmt arquivo.txt > arquivo-formatado.txt
Faz uma formatação básica no arquivo.txt e salva no arquivo-formatado.txt
$ fmt -s arquivo.txt > arquivo-formatado.txt
Faz a formatação básica e "quebra linhas compridas".
W - Mostra que esta logado e o que estão fazendo.
$ w
Bom para servidores shell remotos.
WHO - Mostra quem esta logado.
$ who
WHOAMI - Usado para saber com qual usuário você está logado.
$ whoami
OBS: Incrível que até para um comando tão simples há uma man page.
UPTIME - Mostra a quanto tempo o computador está ligado.
$ uptime
TOP - Mostra os maiores processos que a CPU executa, uso de memória física e virtual (paginação) e PIDs de processos.
$ top
Esse é um dos meus preferidos e sempre deixo ele rodando, excelente para ver o que mais consome picos de sua CPU e memória em tempo real (a cada 4 segundos). Menos que isso o próprio "top" vira ladrão de consumo. Veja a man page para saber o que significa tudo isso.
FREE - Mostra a quantidade de memória livre e usada no sistema.
$ free
PS - Mostra os status dos processos.
$ ps
Mostra os processos do terminal.
$ ps -ax
Mostra todos os processos (sempre uso este), mesmo o de outros usuários.
$ pstree
Mostra os processos mas em forma de raiz (de onde se originaram).
OBS: A man page é bem completa, vale à pena dar uma olhada. Use sempre o
ps -ax em conjunto com o "kill -9":
KILL - Manda um sinal para o processo. Os três mais comuns são: -9, -SIGKILL E KILL.
OBS: Veja o número do processo usando o comando listado acima:
## Passo 1
$ ps -ax
PID TTY STAT TIME COMAND
1269 tty1 S 0:00 xclock -bg black -fg green -digital -update 1
1270 tty1 S 0:14 xterm -sb -ls -geom 77x42+0+0 -bg black -fg
green
1271 tty1 S 0:01 kwikdisk --geometry +776+556
1273 tty1 S 0:01 blackbox
1280 pts/0 S 0:02 -bash
## Passo 2
$ kill -9 1273
Esse comando matará o blackbox, note que usei o "PID" (número que identifica o processo) que está na primeira coluna para saber qual o número do processo do blackbox.
OBS: Esse é o comando mais comum, às vezes um programa não responde a um
simples "kill". Usando o "-9", ele com certeza morrera ;-). Assim faca
logo "kill -9 PID". Só
GNU/Linux te dá poder para matar o servidor
gráfico, o interpretador de comandos ou o que você quiser.
KILLALL - Mata o processo pelo nome.
$ killall blackbox
Mata o blackbox. Note que muitas vezes isso não funciona e é preciso fazer "kill -9 PID", para matá-lo de verdade.
OBS: Sei que usei várias vezes a palavra matar e kill nesta seção. Por favor entendam que isso é fictício, os programas não morrem de verdade, apenas dormem até serem necessários novamente.
TREE - Mostra uma bela visualização de um diretório, similar ao TREE do
MS DOS.
$ tree
Mostra a raiz do diretório.
$ tree -s
Mostra a raiz do diretório, e o tamanho de cada arquivo.
$ tree --inodes
Mostra os inodes em que cada arquivo reside. O HD está dividido em
milhões de Inodes, e os arquivos ficam dentro deles. Ou seja é a
localização física do arquivo no HD.
# tree --inodes -s >> /home/lilo/tree.txt
Este comando foi dado como root no diretório raiz (/). O resultado?
Ele salva um arquivo em formato texto com todos os arquivos, diretórios
do computador juntamente com o seu tamanho e sua posição física no HD
(inode). Util caso delete algo sem querer e precisa saber em que posição
(inode) o arquivo estava.
OBS: Só por curiosidade, no meu HD de 2.1 GB, esse comando retornou um
arquivo de texto puro com 4576 Kb e ele mapeou 5161 diretórios, e 78602
arquivos. Típico de uma instalação
Slackware básica mais alguns add-ons... :-).
SPLITVT - Divide seu terminal em dois. Que tal rodar dois programas ao
mesmo tempo? Está bom, você já faz isso com o "&" ( "e comercial" )
colocando ele no fim dos comandos para rodá-lo em background, certo? Bem mas só com o
splitvt você pode ter seu terminal dividido em dois (ou mais).
$ splitvt -upper workbone -lower rexima
Isso fará rodar na tela de cima (-upper) o programa para tocar CDs de
áudio
Workbone e na tela de baixo o mixer
Rexima. Legal!!!
Use o C^w (Control+W) para mudar de janela.
OBS: Veja a man page para mais informações como configurações e pequenos
problemas de segurança. Eu avisei...
TAIL - Ele é ótimo para ver o fim dos arquivos.
$ tail -f /var/log/messages
Ele mostrará na tela todas as informações novas que aparecerem no
arquivo de log messages onde tanto informações como o problema de conexão
do modem como muitos outros (!) podem ser resolvidos olhando aí. Isso é
de grande utilidade, esta ai o outro programa para se usar com o
top e o
splitvt. Acostume-se a sempre ver o que está acontecendo em messages.
TAR - Utilitário de arquivamento. Usado para desempacotar pacotes, Trabalha junto com o
gzip e o
bunzip2 entre outros.
OBS: Em sistemas UNIX (
GNU/Linux), se encontra muito facilmente pacotes como "zgv-2.3.tar.gz". Esta terminação "tar.gz", significa que ele foi
empacotado com o gzip e o tar, ele poderia ser .tar.bz onde foi usado o
bunzip2 e o tar. Em poucas palavras é um arquivo comprimido.
Quando quiser descompactar um arquivo assim, faça:
*** se ele for .tar.gz (comprimido com gzip)
# tar -zxvf arquivo.tar.gz
Onde "z" significa que o arquivo está zipado e o tar o descompacta automaticamente,"x" indica que é para extrair do arquivo, "v" é o modo verbose, ou seja mostra cada nome de tudo que esta arquivado, "f" especifica um (filename) do arquivo.
*** se ele for .tar.bz
# tar -zjxf arquivo.tar.bz (comprimido com bunzip2)
Para fazer um backup do diretório /usr inteiro faria assim:
# tar -cvf usr-backup.tar /usr
Onde "c" é usado para criar um arquivo tar.
E para extraí-lo para o diretório corrente:
# tar -xvf usr-backup.tar
Para fazer um backup de 2 arquivos do diretório /usr/local:
# tar -cvf usr-backup.tar /usr/local/textos/taoup.pdf /usr/local/pics/laracroft.jpg
GZIP - Utilitário de compressão de arquivos cuja extensão é .gz.
Para comprimir um arquivo faça:
$ gzip taoup.pdf
Ele gerará um arquivo taoup.pdf.gz
Para descomprimir faça:
$ gunzip taoup.pdf.gz
Se o arquivo é um texto plano e você quer ver a saída sem descomprimir:
$ gunzip -c taoup.txt.gz | less
Uma outra maneira é utilizar
zcat, mas ele é idêntico a "gunzip -c". Algo interessante no gzip é que ele tem vários graus de compressão. O padrão é 6 mas as opções variam de -1 a -9. É óbvio que quanto maior o grau compressão, mais demorado ela vai ser. Arquivos com extensão .Z são comprimidos por um utilitário mais antigo que o gzip substitui, o
compress.
Não esqueça também que tar e gunzip podem ser mesclados para gerar um arquivo .tar.gz ou .tgz (tar ball) usado comumente no
Slackware.
Espero que esse texto tenha sido de ajuda pra você. Informações complementares podem encontradas nas man pages do Linux (man nome-do-programa), nos HOWTO (/usr/doc/HOWTO), em grupos de discussão e sites especializados pela web.