Mesmo que este livro tenha como alvo principalmente administradores de sistemas e "usuários experientes", nós não gostaríamos de excluir os iniciantes motivados. Este apêndice será, portanto, um curso intensivo que descreve os conceitos fundamentais envolvidos na operação de um computador com Unix.
B.1. Shell e Comandos Básicos
No mundo Unix, todo administrador de sistemas terá que usar linha de comandos mais cedo ou mais tarde; por exemplo, quando o sistema falha em iniciar corretamente e provê somente o modo de recuperação via linha de comando. Ser capaz de trabalhar com esta interface, portanto, é uma habilidade de sobrevivência básica para estas circunstâncias.
Esta seção só dá uma olhada rápida nos comandos. Todos eles têm muitas opções não descritas aqui. Então, por favor, visite a vasta documentação das suas respectivas páginas de manual.
B.1.1. Navegando na Árvore de Diretórios e Gerenciando Arquivos
Uma vez que uma sessão é aberta, o comando pwd
(que significa print working directory - imprimir o diretório de trabalho) mostra a localização atual no sistema de arquivos. O diretório atual é alterado com o comando cd diretório
(cd
serve para alterar o diretório - change directory). O diretório pai é sempre chamado ..
(dois pontos), enquanto o diretório atual também é conhecido como .
(ponto). O ls
permite listar o conteúdo de um diretório. Se nenhum parâmetro é dado, ele opera no diretório atual.
$
pwd
/home/rhertzog
$
cd Desktop
$
pwd
/home/rhertzog/Desktop
$
cd .
$
pwd
/home/rhertzog/Desktop
$
cd ..
$
pwd
/home/rhertzog
$
ls
Desktop Downloads Pictures Templates
Documents Music Public Videos
Um novo diretório pode ser criado com mkdir diretório
, e um diretório (vazio) existente pode ser removido com rmdir diretório
. O comando mv
permite mover e/ou renomear arquivos e diretórios; para remover um arquivo use rm arquivo
.
$
mkdir teste
$
ls
Desktop Downloads Pictures Templates Videos
Documents Music Public teste
$
mv teste novo
$
ls
Desktop Downloads novo Public Videos
Documents Music Pictures Templates
$
rmdir novo
$
ls
Desktop Downloads Pictures Templates Videos
Documents Music Public
B.1.2. Mostrando e Modificando Arquivos Texto
O comando cat arquivo
(destinado a concatenar arquivos para o dispositivo de saída padrão) lê um arquivo e exibe seu conteúdo no terminal. Se o arquivo é muito grande para caber na tela, use um paginador como o less
(ou more
) para exibir o conteúdo página a página.
O comando editor
inicia um editor de texto (como o vi
ou o nano
) e permite criar, modificar e ler arquivos de texto. Os arquivos mais simples às vezes podem ser criados diretamente a partir do interpretador de comandos graças ao redirecionamento: echo "texto">arquivo
cria um arquivo chamado arquivo com "texto" como o seu conteúdo. Também é possível adicionar uma linha no final deste arquivo com um comando como echo "maistexto">>arquivo
. Note o >>
deste exemplo.
B.1.3. Procurando por e nos Arquivos
O comando find diretório critérios
procura por arquivos na hierarquia sob o diretório de acordo com vários critérios. O critério mais comum é -name name
: que permite procurar um arquivo pelo nome.
O comando
grep expressão arquivos
procura o conteúdo nos arquivos e extrai as linhas correspondentes na expressão regular (veja na barra lateral
DE VOLTA AO BASICO Expressão regular). Adicionando a opção
-r
habilita a procura recursiva em todos os arquivos contidos no diretório passado como um parâmetro. Isto permite procurar por um arquivo quando somente uma parte do conteúdo é conhecido.
B.1.4. Gerenciamento de Processos
O comando ps aux
lista os processos rodando atualmente e ajuda a identificá-los exibindo seus pid (identificador do processo). Uma vez que o pid de um processo é conhecido, o comando kill -signal pid
permite enviar um sinal para ele (se o processo pertence ao usuário atual). Existem muitos sinais; os mais usados comumente são TERM
(uma requisição para terminar suavemente) e KILL
(matar o processo à força).
O interpretador de comando também pode rodar programas em segundo plano se o comando é seguido de um “&”. Ao utilizar o "e comercial", o usuário retorna o controle para o shell imediatamente mesmo que o comando ainda esteja rodando (oculto para o usuário; como um processo em segundo plano). O comando jobs
lista os processos rodando em segundo plano; executar fg %número-do-processo
(para foreground - primeiro plano) restaura o trabalho para o primeiro plano. Quando um comando está rodando em primeiro plano (ou porque ele foi iniciado normalmente, ou trazido de volta para o primeiro plano com fg
), a combinação de teclas Control+Z pausa os processos e retorna o controle para a linha de comando. O processo pode então ser reiniciado em segundo plano com o comando bg %número-do-processo
(para background - segundo plano).
B.1.5. Informações do Sistema: Memória, Espaço em Disco, Identidade
O comando free
exibe informações sobre a memória; o df
(disk free) exibe relatórios sobre o espaço disponível no disco em cada um dos discos montados no sistema de arquivo. A opção -h
(para legível por humanos converte os tamanhos para uma unidade mais legível (normalmente gigabytes ou megabytes). De um modo semelhante, o comando free
suporta as opções -m
e -g
, e mostra estes dados tanto em megabytes ou em gigabytes, respectivamente.
$
free
total used free shared buffers cached
Mem: 1028420 1009624 18796 0 47404 391804
-/+ buffers/cache: 570416 458004
Swap: 2771172 404588 2366584
$
df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 9614084 4737916 4387796 52% /
tmpfs 514208 0 514208 0% /lib/init/rw
udev 10240 100 10140 1% /dev
tmpfs 514208 269136 245072 53% /dev/shm
/dev/sda5 44552904 36315896 7784380 83% /home
O comando id
exibe a identidade do usuário em execução na seção, juntamente com a lista de grupos a que pertence. Uma vez que o acesso a alguns arquivos ou dispositivos pode ser limitado aos membros de algum grupo, verificar a que grupos pertence pode ser útil.
$
id
uid=1000(rhertzog) gid=1000(rhertzog) groups=1000(rhertzog),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev),109(bluetooth),115(scanner)