Você está na página 1de 11

Escola Secundária com 3o Ciclo do Ensino

Básico de Adolfo Portela, Águeda

Curso: Ano lectivo 2010/2011

Nome: No Turma: 11o I Data: / /

Disciplina: Automação e Cmputadores Módulo: 11 - Sistemas Operativos

Classificação: Ass. Professor:

Observações: Ass. Enc.Edu.:

Ficha de trabalho sobre linha de comandos em Linux

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

/bin Conjunto de programas ou comandos utilizados durante o arranque do sistema

/boot Conjunto de ficheiros indispensáveis para o arranque do sistema - é aqui que


está alojada uma imagem (ficheiro) do Kernel, núcleo do sistema operativo

/dev Conjunto de ficheiros de gestão de dispositivos do sistema

/etc Conjunto de ficheiros de configuração de sistema

/home Local onde se encontram alojados os directórios dos utilizadores dos sistema

/lib Conjunto de bibliotecas necessárias para o bom funcionamento do sistema;


contém, por exemplo, no sub-directório /lib/modules, ficheiros de configuração
de dispositivos

/media Directório que contém os vários directórios que representam as unidades de


armazenamento dos sistema, como discos rı́gidos, leitores ópticos e disquetes

/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.

Comandos para directórios e/ou ficheiros


passwd

(password) - Permite alterar a password do utilizador

mkdir <directório>

(make directory) - Permite criar directórios

cd <directório>

(change directory) - muda de directório

• cd - Vai para a área pessoal do utilizador;

• cd / - Vai para a raiz, root, do sistema;

• cd .. - Vai para o directório anterior, ou seja, sobe um nı́vel;

pwd

(print working directory) - Indica o directório corrente

ls <directório>

(list) - mostra o conteúdo do 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 -a - apresenta todos os ficheiros mesmo os escondidos;

• 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

cp <directório origem/ficheiro a copiar> <directório destino>

(copy) - Copia ficheiros

• 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

mv <directório origem/ficheiro a mover> <directório destino>

(move) - Move ficheiros ou directorias

mv <directório origem/ficheiro a copiar> <directório destino>

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

touch <novo ficheiro>

- permite criar um ficheiro (sem qualquer conteúdo)

more

- o comando more mostra o resultado página a página. Por exemplo: ls -al /etc — more

Comandos de uso geral


date - apresenta a data e hora do sistema

who - <opção> - mostra-nos os utilizadores ligados ao sistema

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.

time <comando> - informa quanto tempo demora a executar um determinado comando

man <opção> - (<manual>) - funciona como ajuda sobre um determinado comando; usar a tecla q para
sair

exit - termina a sessão na consola

clear - limpa o conterúdo da consola


Escola Secundária com 3o Ciclo do Ensino
Básico de Adolfo Portela, Águeda

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.

2. Poderá modificar a sua palavra passe inicial recorrendo ao comando passwd.

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

4. Experimente os seguintes comandos para saber mais sobre os utilizadores do sistema:

(a) who
(b) whoami
(c) finger

5. O que faz cada um dos seguintes comandos?

(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

6. Qual a diferença entre utilizar o comando ls -l e ls -la?

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.

9. Experimente os seguintes comandos:

(a) echo ’um’ > ficheiro.tmp


(b) echo ’dois’ > ficheiro.tmp
Escola Secundária com 3o Ciclo do Ensino
Básico de Adolfo Portela, Águeda

Qual é o conteúdo de ficheiro.tmp?

10. Se usar alternativamente os seguintes comandos:

(a) echo ’um’ > ficheiro.tmp


(b) echo ’dois’ >> ficheiro.tmp

Qual é o conteúdo de ficheiro.tmp? Porquê?

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:

(a) sort < ficheiro > ficheiro.ordenado

Qual é o resultado? Porquê?

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:

(a) grep -n main ficheiro.c


(b) grep main *
(c) grep -v main ficheiro.c
(d) grep -c main ficheiro.c
(e) grep -cv main ficheiro.c

13. Consulte a página do manual do comando find. O que faz cada uma das linhas seguintes?

(a) find /home -name ’trabalho.c’


(b) find . -name ’*.c’ -ls
(c) find -name ’core’ -exec rm

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:

(a) tar cvf backup.tar .


(b) tar tvf backup.tar

Como é que pode compactar um ficheiro tar?

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.

16. Consulte a página de manual para o comando kill.

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

18. Inicie outro processo, desta vez em ”background”:

(a) sleep 5m &

Tente introduzir outros comandos. O que acontece?

19. Utilize o comando jobs. O que vê?

20. Inicie mais dois processos em background:

(a) sleep 10m &


(b) sleep 15m &

Utilize novamente o comando jobs e analise o resultado.

21. Traga o segundo processo para ”foreground”com fg %2. O que aconteceu?

22. Suspenda o processo com CTRL-Z. Experimente novamente o jobs. O que vê?

23. Coloque o processo novamente em ”background”com bg %2.

24. Use o comando kill %2 e em seguida 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.

Ainda a manipulação de directorias


Nos ficheiros que se seguem, serão criados vários ficheiros e subdirectorias. Para evitar que esses ficheiros se
misturem com os restantes ficheiros do sistema, iremos começar por criar uma subdirectoria onde os ficheiros
serão guardados:
cd
mkdir cursos
ls -l

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

usarı́amos o nome de qualquer outra directoria.


Por exemplo:
cd .
pwd

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

já vamos passar para a directoria acima.


Por exemplo, se estivéssemos a trabalhar na directoria /home/user/curso passarı́amos para /home/user/.
O sı́mbolo / representa a directoria principal do sistema (root). Para aceder a essa directoria, podemos usar o
seguinte comando:
cd / ls -l

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.

O comando cp mantém o


  modo e todas as permissões dos ficheiros originais.
Contudo, os ficheiros copiados deixam de pertencer ao dono original e passam a pertencer ao utilizador que
mandou executar a cópia.
mv cal calendario
mv asdfg qwert
mv abcd ..
ls -l
mv ../abcd aaa
ls -l ..
Escola Secundária com 3o Ciclo do Ensino
Básico de Adolfo Portela, Águeda

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.

O comando ls também possui uma opção


  -R que serve para listar, recursivamente, toda a árvore de
subdirectorias. Contudo, o comando  tree oferece uma listagem em formato de árvore que é mais fácil de
entender.
Exemplos:
ls -lR /usr/local
tree /usr/local
Escola Secundária com 3o Ciclo do Ensino
Básico de Adolfo Portela, Águeda

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.

Os caracteres que funcionam como wild-cards são os seguintes:

Caracter Significado

* Qualquer sequência de 1 ou mais caracteres

? Um único caracter indiferenciado

[] Uma sequência de um ou mais caracteres pertencentes ao conjunto dentro de parêntesis rectos

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 

textbfa , usamos o comando


 ls /bin/?a* . Este comando lista todos os ficheiros que possuem um caracter


indeterminado no inicio, seguido de uma letra  a e de qualquer sequência de caracteres indiferenciados:

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

A lista de ficheiros abrangida pelo * também inclui a própria directoria de destino


  subdir. Por essa
razão, o comando cp vai tentar copiar a directoria para dentro de si própria. Por razões óbvias, isso não é


possı́vel e o cp apresenta uma mensagem de erro, no entanto, os outros ficheiros são todos copiados de forma
correcta.