A linha de comando é a maneira mais direta de enviar comandos à sua máquina. Ao utilizar a linha de comando no GNU/Linux, você perceberá rapidamente que ela é muito mais poderosa e funcional que outros prompts de comando que pode ter encontrado anteriormente. Essa superioridade é devido ao fato de ter acesso não somente a todos os programas do ambiente X, mas também a milhares de outros utilitários no modo texto (em contrapartida ao modo gráfico) que não tem equivalentes gráficos, com suas várias opções e possíveis combinações, que seriam sobremaneira difíceis de serem acessadas na forma de botões ou menus.
Reconhecidamente a grande maioria das pessoas precisa de um pouco de ajuda para começar. Se você ainda não estiver trabalhando no console e estiver utilizando uma interface gráfica, a primeira coisa a fazer é iniciar um emulador de terminal. Acesse o menu principal do GNOME, KDE ou qualquer outro gerenciador de janelas que estiver utilizando e irá encontrar um número de emuladores no menu + . Escolha um, por exemplo ou . Dependendo da sua interface de usuário, haverá um ícone que identifica claramente o terminal no painel (Figura 1.2, “O Ícone do Terminal no Painel do KDE ”).
Quando você iniciar esse emulador de
terminais, estará na realidade utilizando um shell
, este é o nome do programa com o qual estará interagindo. Após
iniciar o shell, você se encontrará diante do prompt de comando:
[usuario1@localhost usuario1]$
Assumimos que o nome do seu usuário é
usuario1 e o nome de sua máquina é localhost
(que é o caso
quando sua máquina não faz parte de nenhuma rede). Após o prompt existe o
espaço para que você digite seus comandos. Note que quando você entrou no
sistema como usuário root
, o caracter do prompt
$
passa a ser um #
(isso é verdade
somente quando utilizar a configuraçào padrão, uma vez que pode configurar
todos esses detalhes no GNU/Linux). Para se tornar o usuário root
,
execute o comando su após iniciar um shell
.
[usuario1@localhost usuario1]$ su # Enter the root password; (a senha não será mostrada na tela) Password: # exit (or Ctrl-D) volta à conta de usuário comum [root@localhost usuario1]# exit [usuario1@localhost usuario1]$
Quando você executa
um shell
pela primeira vez, normalmente estará no seu diretório
home/
. Para mostrar o nome do diretório corrente,
execute o comando pwd (que quer
dizer Print Working Directory - Mostre o Diretório
Corrente):
$ pwd /home/usuario1
A seguir veremos alguns comandos básicos que são muito úteis.
O comando cd
é semelhante ao utilizado no DOS, só que com mais
funcionalidades. Ele faz exatamente o que seu acrônimo indica, muda o
diretório corrente. Você pode utilizar o .
e ..
,
para indicar o diretório corrente e o diretório pai
respectivamente. Digitando o comando cd sozinho você voltará ao
seu diretório home. Executando cd - voltará ao
último diretório visitado. E finalmente, pode especificar o diretório
home do usuário usuario2 digitando cd ~usuario2 (o
~
sozinho indica seu próprio diretório
home/
). Observe que, como usuário comum, você não
pode entrar no diretório home/
de outro usuário
(a não ser que ele autorize explicitamente ou esta seja a configuração
padrão do sistema), até que se torne o usuário
root
. Sendo assim, mude para o usuário root
e pratique:
$ su - Password: # pwd /root # cd /usr/share/doc/HOWTO # pwd /usr/share/doc/HOWTO # cd ../FAQ-Linux # pwd /usr/share/doc/FAQ-Linux # cd ../../../lib # pwd /usr/lib # cd ~usuario2 # pwd /home/usuario2 # cd # pwd /root
Agora, volte ao usuário normal executando o comando exit e pressionando a tecla Enter (ou simplesmente pressionando Ctrl-D).
Todos os processos tem
suas variáveis de ambiente
e o shell
permite que você visualize-as
diretamente utilizando o comando echo. Algumas variáveis de ambiente interessantes:
HOME
:
essa variável de ambiente contém uma string que representa o caminho
para o seu diretório home.
PATH
: ela contém a
lista de todos os diretórios nos quais o shell
irá procurar por
executáveis quando você digitar um comando. Note que, diferentemente
do DOS, por padrão, o shell
não irá
procurar por comandos no diretório corrente, a não ser que ele esteja
listado nessa variável!
PS1
:
determina como o seu prompt irá ser mostrado, é freqüentemente uma
combinação de seqüências especiais de caracteres. Para mais
informações você pode ler a página de manual bash(1) página de manual digitando o
comando man bash em um terminal.
Para que o shell
mostre o valor de
uma variável, você deve colocar um $
na frente do nome
da variável. Vejamos um exemplo com o comando echo:
$ echo Hello Hello $ echo $HOME /home/usuario1 $ echo $USERNAME usuario1 $ echo Hello $USERNAME Hello usuario1 $ cd /usr $ pwd /usr $ cd $HOME $ pwd /home/usuario1
Como pode ver, o
shell
substitui o valor da variável antes que execute o comando. De
outra maneira, o comando cd
$HOME do exemplo não teria funcionado. De fato, o
shell substitui primeiro a variável $HOME
com o seu valor
(/home/usuario1
), então a linha se torna
cd /home/usuario1, que é o que queríamos. A mesma coisa
acontece com o exemplo do comando echo $USERNAME.
Sem muito mais para explicar, esse comando simplesmente faz o seguinte: ele mostra o conteúdo de um ou mais arquivos para a saída padrão, normalmente a tela:
$ cat /etc/fstab # This file is edited by fstab-sync - see 'man fstab-sync' for details /dev/hda2 / ext3 defaults 1 1 /dev/hdc /mnt/cdrom auto umask=0022,user,iocharset=utf8,noauto,ro,exec,users 0 0 none /mnt/floppy supermount dev=/dev/fd0,fs=ext2:vfat,--,umask=0022,iocharset=utf8,sync 0 0 none /proc proc defaults 0 0 /dev/hda3 swap swap defaults 0 0 $ cd /etc $ cat modprobe.preload # /etc/modprobe.preload: kernel modules to load at boot time. # # This file should contain the names of kernel modules that are # to be loaded at boot time, one per line. Comments begin with # a `#', and everything on the line after them are ignored. # this file is for module-init-tools (kernel 2.5 and above) ONLY # for old kernel use /etc/modules nvidia-agp $ cat shells /bin/bash /bin/csh /bin/sh /bin/tcsh
O nome é uma brincadeira com a palavra relacionada ao primeiro paginador utilizado no UNIX® chamado more. Um paginador é um programa que permite ao usuário visualizar arquivos longos página por página (mais precisamente, tela por tela). O motivo de examinarmos o comando less ao invés do comando more é que less é mais intuitivo. Você pode utilizar o comando less para visualizar aquivos grandes que não caibam em uma única tela. Por exemplo:
less /etc/termcap
Para navegar no arquivo, utilize as teclas cima e baixo. Pressione a tecla Q para terminar a execução. O comando less pode fazer mais coisas que isso: pressione H para uma tela de ajuda ser mostrada com as possíveis opções.
O comando ls (LiSt) é equivalente ao comando dir do DOS, porém com muito mais funcionalidades. De fato, ele pode fazer mais porque os arquivos também podem. A sintaxe do comando ls é:
ls [opções] [arquivo|diretorio][arquivo|diretorio...]
Se nenhum arquivo ou diretório for especificado na linha de comando, o ls irá listar os arquivos no diretório corrente. Existe um grande número de suas opções, iremos descrever apenas algumas delas:
-a
: lista todos os
arquivos, incluindo arquivos ocultos. Lembre-se
que no UNIX®, os arquivos ocultos são aqueles que começam com um
.
; a opção
-A
lista “quase” todos os arquivos, ou
seja, lista todos os arquivos que a opção -a
listar,
com exceção do “.” e “..”
-R
: lista
recursivamente, i.e todos os arquivos e subdiretórios de diretórios
digitados na linha de comando.
-h
: se o
tamanho do arquivo for mostrado, será mostrado em um formato legível,
perto de cada arquivo. Isso quer dizer que você irá ver os tamanhos
dos arquivos utilizando sufixos para os tamanhos, como
“K”, “M” and “G”, por exemplo,
“234K” e “132M”. Note que esses tamanhos se
referem a potência de 2 e não potência de 10. Sendo assim 1K é
realmente 1024 bytes ao invés de 1000 bytes.
-l
:
mostra informações adicionais sobre os arquivos, como as permissões
associadas a ele, o dono e grupo do dono, o tamanho do arquivo e a
data da última modificação.
-i
:
mostra o número do inode (o número único do arquivo no sistema de
arquivos, veja mais em Capítulo 4, O Sistema de Arquivo do Linux) perto de cada
arquivo.
-d
: trata diretórios
na linha de comando como se fossem arquivos normais ao invés de listar
seu conteúdo.
ls -R: lista recursivamente o conteúdo do diretório corrente.
ls -ih imagens/
..: lista o número do inode e o tamanho em um formato
legível para cada arquivo no diretório
imagens/
, no diretório pai e no diretório
corrente.
ls -l
imagens/*.png: lista todos os arquivos no diretório
imagens/
cujos nomes terminem em
.png
, incluindo o arquivo
.png
, se ele existir.
Existe um grande número de
atalhos disponíveis, a sua principal vantagem é que eles economizam
bastante tempo de digitação. Essa seção assume que você está utilizando o
shell
fornecido com o Mandriva Linux, bash,
embora essas teclas de atalho também funcionem em outros terminais.
Primeiro: as setas. O bash mantém
um histórico dos comandos anteriores, que podem ser vistos utilizando-se
das teclas para cima e para baixo. Você pode voltar um número máximo de
linhas definido na variável de ambiente HISTSIZE
. Além
disso, o histórico é perene entre uma e outra sessão, sendo assim, não irá
perder os comandos digitados nas sessões anteriores.
As setas para esquerda e direita movimentam o cursor para a esquerda e direita na linha corrente, permitindo editar os comandos. Porém, existe mais a ser editado do que simplemente mover um caracter por vez: Ctrl-A e Ctrl-E, por exemplo, movem o cursor para o início e fim da linha corrente. As teclas Backspace e Del agem como esperado. Ctrl-K irá apagar da posição corrente até o final da linha, e Ctrl-W irá apagar a palavra imediatamente antes do cursor (assim como Alt-Backspace).
Digitando Ctrl-D em uma linha em branco irá fechar a sessão corrente, o que é bem menor que ter que digitar exit. Ctrl-C irá interromper o comando em execução, exceto se você estiver editando a linha de comando, caso no qual o processo de edição será cancelado e você retornará ao prompt. Ctrl-L limpa a tela. Ctrl-Z interrompe temporariamente uma tarefa, suspendendo-a. Esse atalho é muito útil quando esquecemos de digitar o caracter “&” após o comando. Por exemplo:
$ xpdf MyDocument.pdf
Conseqüentemente você não poderá utilizar mais seu shell, uma vez que a tarefa de interface foi alocada para o processo do xpdf. Para colocar a tarefa em segundo plano e recuperar seu shell, simplesmente digite Ctrl-Z e, a seguir, o comando bg.
Finalmente, as teclas
Ctrl-S
e Ctrl-Q, que são utilizadas para suspender e restaurar a saída para a
tela. Elas não são utilizadas freqüentemente, porém você pode digitar por
engano Ctrl-S
(além do mais, S e D estão perto uma da
outra no teclado). Então, se você se encontrar em uma situação onde digita
e não consegue ver nenhum caracter aparecendo no Terminal
, tente pressionar Ctrl-Q. Note que todos os
caracteres que foram digitados entre o Ctrl-S não desejado e o
Ctrl-Q
serão mostrados de uma vez só.