Escolar Documentos
Profissional Documentos
Cultura Documentos
TRABALHANDO NA CONSOLA
Estrutura de directórios
O Linux possui uma estrutura de directórios organizada por temas, onde cada directótio contém ficheiros rela-
cionados com uma área especı́fica. O seu directório raiz denomina-se, como o próprio nome sugere, root, e
é representado por /. A Alguns directórios só é possı́vel aceder sendo superutlilizador, de modo a proteger o
sistema operativo de possı́veis falhas acidentais. Os principais directórios do sistema são:
Directório Descrição
/home Local onde se encontram alojados os directórios dos utilizadores dos sistema
/usr Contém a maioria dos ficheiros instalados que não fazem parte do sistema
operativo, como jogos e programas instalados
Escola Secundária com 3o Ciclo do Ensino
Básico de Adolfo Portela, Águeda
Comandos e utilitários
Praticamente todas as tarefas que realizamos no dia-a-dia trabalhando com um sistema operativo podem ser
realizadas com uma simples conjugação de comandos. Acções como criar um directório ou copiar ficheiros, por
exemplo, não são só executadas em ambiente gráfico.
Para testar os comandos e utilitários vamos utilizar a consola.
mkdir <directório>
cd <directório>
pwd
ls <directório>
• ls -l - fornece várias informações acerca do conteúdo de cada ficheiro ou directório, como permissões, links,
dono, grupo, tamanho, data, hora, nome;
• ls -al - apresenta as várias informações acerca do conteúdo de ficheiros e directórios incluindo os escondidos;
rm <directório>
(remove directory) - apaga directórios se estes estiverem vazios. Para apagar directórios com conteúdo deve
escrever-se: rm -r <directório>
Atenção! A utilização do comando rm -r deve ser feita com especial cuidado, pois, pode apagar várias
directorias do utilizador. No caso do utilizador ser o root, o cuidado deverá ser redobrado, pois, uma utilização
indevida pode danificar todo o sistema em poucos segundos, tornando-o irrecuperável.
Escola Secundária com 3o Ciclo do Ensino
Básico de Adolfo Portela, Águeda
• Se pretendermos copiar um ficheiro e alterar o seu nome ao mesmo tempo deve fazer-se:
cp <directório origem/ficheiro a copiar> <directório destino/novo nome>
• Para copiar uma directoria o comando deverá ser: cp -R <directório a copiar> <directório destino>
Atenção! Não se esqueça da diferença entre caminho absoluto: /home/user/directório exemplo/sub dir
e caminho relativo: directório exemplo/sub dir
Se se pretender mudar o nome aos ficheiros ou directorias o comando deverá ser: mv <nome antigo>
<nome novo>
O comando: mv <nome antigo> <sub dir/nome novo> move os ficheiro ou directoria com o nome
nome antigo para a directoria sub dir ao mesmo tempo que troca o nome para nome novo
more
- o comando more mostra o resultado página a página. Por exemplo: ls -al /etc — more
cal <mês> <ano> - (<calendar>) - visualiza o calendário; se não inserirmos nenhum parâmetro, devolve o
mês actual, se inserirmos apenas o ano, devolve todo o calendário desse ano.
man <opção> - (<manual>) - funciona como ajuda sobre um determinado comando; usar a tecla q para
sair
EXERCÍCIOS
1. Depois de fazer login será automaticamente ”colocado”no seu directório. O seu directório é a parte do
sistema de ficheiros reservada para os seus ficheiros. Experimente o comando pwd para ver aonde está
neste momento.
3. Para obter ajuda sobre os comandos da linha de comandos utilize o comando man. Experimente o seguinte:
(a) man ls
(b) man cp
(c) man rm
(d) man man
(a) who
(b) whoami
(c) finger
(a) ls *
(b) ls *.c
(c) ls ?.c
(d) ls [a-c]*
(e) ls [a-z]*
(f) ls ??[c]*
(g) ls ?[e]
(h) ls [A-Za-z]*
(i) ls dir*/*.c
7. Crie um directório chamado ComplProg. Entre nesse directório e crie outro chamado exercicios. Mostre o
conteúdo do directório ComplProg. Remova o directório exercicios e crie um novo chamado exerc. Mude
o nome do directório exerc para exercicios.
8. Redireccione o ”output”do comando man para um ficheiro. Por exemplo, man ls > ls.man. Verifique o
resultado usando o comando cat ou o comando more.
11. O comando sort serve para ordenar linhas de ficheiros de texto. Crie um ficheiro com diversas palavras
separadas linha a linha. Experimente o seguinte:
12. Consulte a página do manual do comando grep. Supondo que tem um ficheiro com um programa em
linguagem C chamado ficheiro.c, explique o que faz cada uma das instruções seguintes:
13. Consulte a página do manual do comando find. O que faz cada uma das linhas seguintes?
14. Uma boa ferramenta para fazer cópia(s) de segurança do seu trabalho é o tar. Consulte a página de
manual do tar e diga o que faz cada uma das seguintes linhas:
15. Consulte a página do manual referente ao comando ps. Experimente visualizar os processos existentes no
seu sistema. Pode experimentar ps e ps aux.
17. Experimente iniciar um processo que não faça nada durante 5 minutos:
(a) sleep 5m
Se agora tentar introduzir algum comando o que acontece? Para acabar um processo que corre em
”foreground”faça CTRL-C. Acabe com o processo sleep 5m. O que acontece se introduzir comandos
agora?
Escola Secundária com 3o Ciclo do Ensino
Básico de Adolfo Portela, Águeda
22. Suspenda o processo com CTRL-Z. Experimente novamente o jobs. O que vê?
25. Use o comando ps para ver os processos que correm e acabe com os sleeps recorrendo ao seu PID. Execute
novamente o comando ps para verificar o que aconteceu.
Depois de criada a directoria cursos, devemos começar a trabalhar dentro dessa directoria. Desta forma,
todos os ficheiros que vierem a ser criados ficam armazenados no seu interior e não interferem com o resto do
sistema.
Para começar a trabalhar na nova directoria, vamos usar o comando cd:
cd cursos
ls -l
Desta vez o comando ls apresenta apenas uma resposta: total 0. Este resultado era de esperar, pois o
comando foi executado dentro da nova directoria que ainda está vazia. Para verificar melhor podemos usar o
comando:
ls -la
Desta vez já apresenta apenas duas ocorrências: a própria directoria, onde estamos a trabalhar (.) e a directoria
acima (..)
As directorias .
e .. podem ser utilizadas em conjunto com os comandos normais do sistema, tal como
Escola Secundária com 3o Ciclo do Ensino
Básico de Adolfo Portela, Águeda
Obviamente, neste exemplo o comando cd não faz absolutamente nada, uma vez que o ponto .
rep-
resenta a directoria actual e o comando limita-se a mudar para a directoria onde já estava...
Contudo, ao usar:
cd ..
pwd
O comando cd / muda a directoria actual de trabalho para a raiz da árvore de directorias. Esta directoria
contém todos os outros ficheiros e subdirectórios do sistema. Por essa razão, o comando ls vai apresentar a
lista com os directórios principais do sistema: /etc,/bin,/etc,/lib,/tmp, etc.
Depois de estar na directoria /, podemos visitar todas as suas subdirectorias que apareceram na listagem
ls anterior. Por exemplo:
cd etc
ls -al
Desta vez, ao executar o comando ls, vamos ver uma enorme lista de ficheiros e directorias. Esta direc-
toria é especial, pois guarda os ficheiros de configuração dos vários componentes do sistema operativo1 .
A seguir, vamos tentar criar uma nova directoria dentro de /etc:
mkdir novadir
Contudo, apenas vamos obter uma mensagem de erro do tipo: mkdir: cannot make directory ’novadir’: Per-
mission denied’ pois a directoria /etc está protegida contra escrita e apenas o superutilizador (root) tem
previlégios para criar novos ficheiros ou directorias no seu interior.
Para voltarmos à directoria de trabalho que criámos explicitamente para este tópico, podemos usar os seguintes
comando:
cd
cd curso
pwd
ls -al
ou
1 Por esse motivo, não devemos alterar nenhum ficheiro sem ter a certeza absoluta do que estamos a fazer.
Escola Secundária com 3o Ciclo do Ensino
Básico de Adolfo Portela, Águeda
cd ˜/curso
pwd
ls -al
Os dois exemplos são equivalentes. no primeiro, o comando cd sem argumentos, traz-nos para a nossa
directoria pessoal de trabalho (home).
No segundo exemplo, foi utilizado o sı́mbolo ˜ que representa a directoria (home). Contudo, ao adicionar-lhe
o nome da subdirectoria curso, vamos saltar directamente para a directoria desejada: ˜ /curso
Manipulação de ficheiros
Até ao momento, a directoria curso ainda está vazia. por esse motivo, vamos começar por copiar alguns
ficheiros para o seu interior:
cp /etc/passwd abcd
cp /etc/services xpto
cp /proc/cpuinfo qwer
cp /proc/uptime asdf
ls -la
Ao fazermos isto. acabámos de copiar quatro ficheiros para a directoria curso. Por esse motivo, o co-
mando ls que aparece no final já deve listar quatro ficheiros novos:
abcd, xpto,
qwer,
asdf.
O comando cp¿, que significa copy, copia um ficheiro de uma directoria para outra. Também pode ser
usado para copiar ficheiros dentro da mesma directoria, se forem usados nomes diferentes. Por esse motivo o
cp necessita sempre de dois nomes: o nome original e o nome novo.
Por outro lado, quando desejamos fazer uma cópia de um ficheiro localizado numa determinada directoria,
para outra, mantendo o nome original, basta usar o nome da diretoria destino. Por exemplo, para copiar um
ficheiro para a directoria actual, podemos usar o ponto - (.):
cp /usr/bin/cal .
ls -al
Neste exemplo, estamos a copiar o ficheiro cal, localizado na directoria /usr/bin, para a directoria
actual. Como resultado, é criado um novo ficheiro nesta directoria, com o mesmo nome do original: cal.
ls -l
Neste exemplo, o primeiro comando altera o nome do ficheiro cal para calendário e o segundo muda o
nome do ficheiro asdfg para
qwert.
Contudo, o terceiro comando (mv abcd ..) move o ficheiro abcd para a directoria acima. O comando
seguinte ls -l mostra a listagem da directoria acima, na qual já se encontra o ficheiro abcd que havia
sido movido no comando anterior.
O comando mv ../abcd aaa volta a mover o ficheiro abcd para a directoria actual, mas desta vez o seu
nome é alterado para aaa.
Finalmente, os comandos ls -l .. e ls -l, servem para consultar o estado em que ficaram as duas directorias
e verificar se o mv funcionou como previsto.
Para além de copiar e mover ficheiros, também necessitamos muitas vezes de eliminar ficheiros, para libertar
espaço em disco, e não só. O comando usado para remover ficheiros é o rm (remove).
Por exemplo, para eliminar o ficheiro calendário, basta executar:
rm calendario
Por norma, o comando rm só funciona sobre ficheiros. Para remover directorias, deve ser utilizada a opção
-r, que remove árvores de directorias recursivamente, ou então, o comando rmdir.
Exemplo:
rm -r subdir
A opção -r, que significa recursive, remove toda a estrutura de ficheiros e subdirectórios debaixo de subdir.
Este comando é bastante útil em situações onde existem estruturas de directórios complicadas que necessi-
tam de ser eliminadas. Contudo, é necessário ter bastante cuidado antes de o utilizar, uma vez que os seus
efeitos podem ser devastadores, especialmente quando acontecem erros de utilização.
No entanto, o comando rm tem a opção -i que quando chamado pede sempre a confirmação antes de
apagar cada ficheiro.
O comandocp, também, possui uma opção -r que permite copiar árvores inteiras de subdirectorias.
O comando mv não necessita desse tipo de opções, porque pode ser aplicado directamente sobre directórios.
Quando se move um directório, todos os ficheiros que estão no seu interior são automaticamente movidos.
Wild-cards
No trabalho do dia-a-dia, é muito frequente sermos confrontados com a necessidade de realizar a mesma tarefa
sobre múltiplos ficheiros.
Para evitar ter de repetir o mesmo comando mmuitas vezes, foram criados os wild-cards, que são caracteres
especiais, usados para referenciar listas de ficheiros com um único nome.
Caracter Significado
Exemplos:
Para obter a lista de todos os ficheiros na directoria /bin, cujos nomes começam pela letra s , usamos o
wild-card s*:
ls /bin/s*
Para listar todos os ficheiros da directoria /etc que terminam com a extensão .conf , basta usar o
wild-card *.conf :
ls /etc/*.conf
De igual forma, para obter a lista de todos os ficheiros da directoria /etc que possuem pelo menos um
x no seu nome usamos *x* :
ls /etc/*x*
Para listar todos os ficheiros da directoria /bin, cujo segundo caracter do nome é a letra
Finalmente, o comando ls /bin/??? apresenta todos os ficheiros da directoria /bin que possuem um
nome com exactamente três caracteres de comprimento.
Os wild-cards podem ser usados em conjugação com qualquer comando que utilize ficheiros e directorias. Por
exemplo, podem ser usados para copiar e para mover vários ficheiros entre directorias.
Para esse efeito, vamos criar uma nova subdirectoria e copiar todos os ficheiros na directoria actual, para
dentro da nova subdirectoria:
mkdir subdir
Escola Secundária com 3o Ciclo do Ensino
Básico de Adolfo Portela, Águeda
ls-l
cp * subdir
ls -l subdir
possı́vel e o cp apresenta uma mensagem de erro, no entanto, os outros ficheiros são todos copiados de forma
correcta.