Linux - Comandos Básicos · O Linux foi desenvolvido por Linus Torvarlds conjuntamente com uma...

26
Linux - Comandos Básicos Índice Um pouco de história .....................................................................................................................................1 Visão do sistema operativo Linux em “três camadas” ..................................................................................1 Conceitos básicos...........................................................................................................................................2 Contas ............................................................................................................................................................3 Shell ...............................................................................................................................................................4 Consolas virtuais............................................................................................................................................5 Convenções para nomes dos arquivos ...........................................................................................................5 Nomes relativos e absolutos ..........................................................................................................................6 Padrões ...........................................................................................................................................................6 Permissões de Acesso ....................................................................................................................................7 Outras particularidades do SO Linux ............................................................................................................8 Acesso aos dispositivos .............................................................................................................................8 Particularidades dos arquivos ....................................................................................................................9 Redirecionamento ......................................................................................................................................9 Segundo Plano .........................................................................................................................................10 Manipulação de arquivos .............................................................................................................................11 ls ...............................................................................................................................................................11 cat .............................................................................................................................................................12 rm .............................................................................................................................................................13 Comandos de administração de contas: passwd, adduser, userdel, su.....................................................13 Manipulação de Processos ...........................................................................................................................15 Manipulação de suportes de memória de massa (média) ............................................................................16 Comandos/utilitários (df, du, grep, find, updatedb, locate, tar, date) ..........................................................17 Alteração de permissões ..............................................................................................................................19 Exemplos (exercícios) de comandos no Linux ............................................................................................21 REFERÊNCIAS DESTE TEXTO: ..............................................................................................................25

Transcript of Linux - Comandos Básicos · O Linux foi desenvolvido por Linus Torvarlds conjuntamente com uma...

Linux - Comandos Básicos

Índice Um pouco de história.....................................................................................................................................1 Visão do sistema operativo Linux em “três camadas” ..................................................................................1 Conceitos básicos...........................................................................................................................................2 Contas ............................................................................................................................................................3 Shell ...............................................................................................................................................................4 Consolas virtuais............................................................................................................................................5 Convenções para nomes dos arquivos ...........................................................................................................5 Nomes relativos e absolutos ..........................................................................................................................6 Padrões...........................................................................................................................................................6 Permissões de Acesso ....................................................................................................................................7 Outras particularidades do SO Linux ............................................................................................................8

Acesso aos dispositivos .............................................................................................................................8 Particularidades dos arquivos ....................................................................................................................9 Redirecionamento ......................................................................................................................................9 Segundo Plano .........................................................................................................................................10

Manipulação de arquivos.............................................................................................................................11 ls...............................................................................................................................................................11 cat.............................................................................................................................................................12 rm.............................................................................................................................................................13 Comandos de administração de contas: passwd, adduser, userdel, su.....................................................13

Manipulação de Processos...........................................................................................................................15 Manipulação de suportes de memória de massa (média) ............................................................................16 Comandos/utilitários (df, du, grep, find, updatedb, locate, tar, date) ..........................................................17 Alteração de permissões ..............................................................................................................................19 Exemplos (exercícios) de comandos no Linux............................................................................................21 REFERÊNCIAS DESTE TEXTO:..............................................................................................................25

1 / 25

Um pouco de história O Linux foi desenvolvido por Linus Torvarlds conjuntamente com uma grande comunidade na Internet. Por isso o nome Linux: Linus + Unix. Algumas pessoas costumam fazer confusão entre UNIX e Linux pelo fato de ambos seguirem o padrão POSIX (Portable Operating System Interface / Interface Portável para Sistemas Operativos). O fato é que Linux e UNIX não são da mesma "família", são apenas primos distantes, como podemos observar em sua Árvore Genealógica. O UNIX é uma marca registrada que diz respeito ao famoso sistema operativo desenvolvido em 1969 pela AT&T (posteriormente com implementações da Universidade de Berkeley). Devido a sua qualidade, o UNIX é usado até hoje. São UNIX os BSD's como FreeBSD, OpenBSD e outros. O Linux derivou de um micro-sistema operativo muito primitivo chamado MINIX em 1991, e vem evoluindo muito desde então, sendo considerado por muitos estudiosos como um dos sistemas mais desenvolvidos.

Versão 0.02 lançada em 1991; Versão 1.00 lançada em 1994; A mais utilizada actualmente é a versão 2.6.x (a do Fedora 9 é 2.6.25)

Visão do sistema operativo Linux em “três camadas” Camada externa (Aplicações):

Nesta camada encontram-se as aplicações que realizam as tarefas que o utilizador pede. Estão nesta camada, aplicações simples como o editor vi ou aplicações mais pesadas como o StarOffice.

Camada intermédia (Shell):

A camada intermédia, também chamada de Shell, é a camada que faz a ligação entre as aplicações e o núcleo. É nela que chamamos os comandos ou as aplicações. São exemplos de Shell: Borne-Again Shell (bash), Korn Shell (ksh), C Shell (csh).

Camada interna (Kernel ou Núcleo):

É sem duvida a camada mais importante, podendo até mesmo dizer que só esta camada já é o sistema operativo. A ela cabe gerir o computador, manter os processos funcionando e alocar recursos para as aplicações.

2 / 25

O Linux faz tudo o que se poderia esperar de um SO moderno e completo: Tem suporte a multitarefa real, memória virtual, bibliotecas dinâmicas, suporte ao protocolo TCP/IP, nomes de arquivos com até 255 caracteres, protecção entre processos (crash protection), além de outras funcionalidades muito interessantes.

Essas características permitem que o Linux trabalhe com vários utilizadores simultaneamente. Assim, um utilizador pode estar enviando um e-mail, outro imprimindo um arquivo, outro digitando um texto, tudo sendo gerido e executado ao mesmo tempo, permitindo um melhor aproveitamento da máquina. Mas para que possamos desfrutar desse aumento de performance, estamos obrigados a compreender melhor como o Linux funciona.

Conceitos de mono/multi utilizador Existem alguns conceitos que devem ser entendidos antes de se começar a utilizar o Linux. Isso acontece pelo fato desse sistema ser diferente dos sistemas monoutilizador aos quais a maioria de nós está acostumada. Vamos então à introdução destes conceitos. Imagine um microcomputador que fosse de uso comum, isto é, qualquer pessoa pudesse utilizá-lo. Se o sistema operativo instalado nesse computador não for multiutilizador, simplesmente não haverá segurança. Qualquer pessoa que utilizar esse computador pode visualizar, alterar ou mesmo apagar todos os arquivos, não só os criados por ele, mas os pertencentes a qualquer pessoa. Ele pode inclusive apagar todos os dados no disco do equipamento. Um sistema monoutilizador não consegue diferenciar os seus clientes; assim, todos têm privilégios máximos. Claro que esse sistema pode ser suficiente para um equipamento reservado a apenas uma pessoa, mas não pode ser utilizado em locais onde o recurso será partilhado. Isso é feito usando o conceito de contas e de permissões de acesso.

3 / 25

Contas Uma conta é a maneira de alguém se identificar no sistema. É como se fosse a nossa conta bancária, que tem número e senha. Só que no Linux, em vez de utilizar uma conta numerada, possuímos um nome de entrada no sistema ou login, que pode ser alfanumérico. No lugar da senha exclusivamente numérica, podemos combinar todas as teclas do teclado. Esse sistema de contas e utilizadores já vem junto com o Linux desde a sua concepção. Vem do facto de ele ser um sistema operativo voltado para ambientes em rede, com vários utilizadores. Além do factor segurança, que garante que cada um faça somente aquilo que tem permissão de fazer (e não danifique o sistema), temos o factor de identificação que garante que só você alterará os seus documentos/arquivos. Existe apenas um utilizador mais poderoso que todos, que é o administrador. A este utilizador chamamos de superutilizador e seu login é root. A senha do superutilizador foi definida no processo de instalação. É importante não esquecer esta senha, pois ela é necessária para fazer ajustes na instalação. Uma vez que o instalador ajusta o ambiente inicial, é necessária a intervenção do superutilizador na configuração de detalhes que o instalador não prevê ou que necessitam ser modificados no decorrer do tempo. É de fundamental importância que não utilize esse utilizador de maneira indiscriminada no seu dia-a-dia. Para a maior parte das coisas que se precisa fazer, o utilizador tem permissão para isso. O superutilizador deve ser utilizado somente para a configuração do sistema e assuntos relativos à administração do mesmo. Utilizar um sistema como superutilizador diariamente pode ser catastrófico. O processo de login é dado da seguinte forma: informa-se o utilizador e a senha, e o sistema vai conferir com os utilizadores e senhas já cadastrados. Só utilizadores cadastrados que insiram a senha correcta, poderão aceder ao Sistema. Exemplo: login: Aqui informamos o nome de nossa conta. Logo após esse passo, o sistema pedirá a confirmação da nossa identidade, pedindo uma senha: password: Depois de fornecer a senha correcta, estaremos dentro do sistema, sob os cuidados da shell.

4 / 25

O que é a Shell? A shell ("concha"), constitui uma zona intermédia do sistema Linux, que protege o utilizador do sistema e o sistema do utilizador. A "concha" da shell não irá permitir que o utilizador execute alguma coisa que ele não tem permissão e não permite que outro utilizador invada a intimidade de outro utilizador. Em termos técnicos, a shell é um interpretador de comandos que analisa o texto digitado na linha de comandos e executa esses comandos produzindo algum resultado. A shell tem como referência um (sub)directório onde o utilizador tem total controlo, conhecido como directório "home". Aí, o utilizador tem privilégios para criar, alterar, apagar e modificar arquivos e directórios. Teoricamente, tudo o que o utilizador produzir será mantido no home, separado pela "casca" da shell dos outros utilizadores. Existem várias shells, cada uma com suas configurações e funcionalidades específicas, diferenciadas pela facilidade de operação e tipos de configuração. No Linux normalmente utiliza-se a BASH (ou Bourne Again Shell), derivada da CSH, e possui várias características interessantes. Antes de expor as suas características, ver-se-á a organização dos arquivos no Linux e suas permissões. Todos os sistemas operativos têm sistemas de arquivos. O Windows por exemplo, tem o drive "C:\", e nele temos o (sub)directório Windows, que contém o sistema operativo; o (sub)directório Arquivos de Programas, que contém a maioria dos produtos instalados, e assim por diante. Os arquivos ficam divididos em (sub)directórios diferentes por uma questão de afinidade e organização. Pela mesma razão, existe uma organização análoga no Linux. O sistema de arquivos no Linux é semelhante a uma árvore de cabeça para baixo. Inicialmente tem-se o directório raiz, e a partir dele as ramificações.

/ Directório raiz do sistema de arquivos. Abaixo ficam todos os outros. /bin Arquivos executáveis de comandos essenciais. /boot Arquivos estáticos necessários a iniciação do sistema. /etc Arquivos de configuração do sistema. /home Lugar onde ficam os directórios locais dos utilizadores. /lib Arquivos de bibliotecas essenciais ao sistema, utilizadas pelos programas em /bin. /mnt Usualmente é o ponto de montagem de dispositivos na máquina. /proc Informações do kernel e dos processos. /root Directório local do superutilizador. /sbin Arquivos essenciais ao sistema. Normalmente só o superutilizador tem acesso a

estes arquivos. /tmp Directório de arquivos temporários. /usr Arquivos pertencentes aos utilizadores. (é a segunda maior hierarquia de directórios

presente no Linux. Só o directório raiz é maior). /var Directório onde são guardadas informações das variáveis sobre o sistema.

5 / 25

Consolas virtuais Além de multi-utilizador, o sistema operativo Linux é um sistema multi-tarefa; No Linux, mesmo sendo utilizado por apenas um utilizador, tem-se à disposição seis consolas virtuais (que podem ser alteradas); Para alternar entre elas, basta pressionar:

Alt + Fn (1 ≤ n ≤ 6);

Alt + F7 (reservado para o modo gráfico); Estando em modo gráfico (X11), para alternar para uma das consolas de texto, pressionar:

Ctrl + Alt + Fn;

Alt + F7 regressa ao modo gráfico;

Convenções para nomes dos arquivos Muitos dos comandos operam sobre ficheiros e/ou directorias, cujos nomes são indicados escrevendo-os a seguir ao nome do comando. Sintaxe Este nomes podem conter praticamente todos os símbolos que se podem obter através do teclado. No entanto, e porque alguns destes símbolos têm um significado particular para o interpretador de comandos, só é seguro usar, nos nomes de ficheiros e de directorias:

• as letras maiúsculas e minúsculas; • os algarismos; • o símbolo _ (underscore); e • os símbolos - (sinal menos) e + (sinal mais), que não devem ser o primeiro

símbolo do nome.

Embora o símbolo . (ponto) não seja um dos que tem um significado particular, é prática corrente usá-lo para estruturar o nome dos ficheiros em duas partes: parte-principal.extensão, onde a parte-principal dá alguma indicação sobre o conteúdo do ficheiro e a extensão diz qual é o tipo, ou formato, do conteúdo do ficheiro.

6 / 25

É de notar que o Linux não considera as minúsculas equivalentes às maiúsculas, i.e., os nomes aula1.hs e Aula1.hs correspondem a dois ficheiros distintos.

Nomes relativos e absolutos Quando, num comando, é mencionado o ficheiro aula1.txt, este nome deve ser entendido como relativo à directoria corrente, ou seja, refere-se ao ficheiro chamado aula1.hs dentro da directoria corrente. Se a directoria corrente mudar, o mesmo nome referir-se-á a outro ficheiro.

Cada ficheiro e directoria tem, também, um nome absoluto, obtido concatenando os nomes de todas as directorias que é necessário percorrer, desde a raiz do sistema (a directoria /) até à directoria onde está o ficheiro ou directoria, e o nome do ficheiro ou directoria. Por exemplo, o nome absoluto da directoria l00000, existente dentro da directoria aluno que, por sua vez, está contida na directoria home, que se encontra na directoria / é /home/aluno/l00. O nome absoluto do ficheiro aula1.txt dentro desta directoria é /home/aluno/l00/aula1.txt.

Existem dois nomes com significado especial que são . (ponto) e .. (ponto-ponto). O primeiro refere-se sempre à directoria corrente e o segundo à directoria que contém a directoria corrente. Se a directoria corrente for /home/aluno/l00, .. refere-se à directoria /home/aluno, mas se a directoria corrente for /home/aluno, .. refere-se à directoria /home.

O nome .. é útil para construir nomes relativos: se a directoria corrente for /home/aluno/l00 e for necessário referir o ficheiro /home/aluno/l01/aula1.txt, é possível fazê-lo através do nome (relativo) ../l01/aula1.txt. A leitura deste nome é a seguinte: para, a partir da directoria corrente, chegar ao ficheiro /home/aluno/l01/aula1.txt, começa-se por subir (..) para a directoria que contém a directoria corrente, entra-se na directoria l01 aí contida, e é aí que está o ficheiro aula1.txt.

Padrões Através de nomes especiais, chamados padrões, pode-se referir vários ficheiros ou directorias de uma forma compacta. Os padrões distinguem-se dos outros nomes por poderem incluir os símbolos * e ?. Num padrão, o símbolo * representa uma sequência qualquer, possivelmente vazia, de símbolos (excepto o símbolo /), e ? representa uma ocorrência de um símbolo qualquer (mais uma

7 / 25

vez, exceptuando /). Ao acto de determinar os nomes que um padrão representa chama-se expansão do padrão.

A expansão de um padrão só inclui nomes começados por ponto se o padrão também começa por ponto (ou tem um ponto a seguir a uma ocorrência de /). (Nos exemplos abaixo, o pronome todos exclui os nomes começados por ponto, excepto quando mencionados explicitamente.)

Exemplos de padrões Padrão Significado *.txt todos os ficheiros com extensão txt na directoria corrente

aula?.txt todos os ficheiros, na directoria corrente, cujo nome começa por aula e a seguir tem um símbolo qualquer (eg., 2, x, .) seguido de .txt

* todos os ficheiros e directorias na directoria corrente l00/* todos os ficheiros e directorias na directoria l00

../??? todos os ficheiros e directorias, na directoria que contém a corrente, cujo nome tem comprimento três

/??*n todos os ficheiros e directorias, na directoria /, cujo nome tem comprimento pelo menos três e acaba em n

/bin/*f* todos os ficheiros e directorias, na directoria /bin, cujo nome inclui um f

.?* todos os ficheiros e directorias, na directoria corrente, cujo nome começa por . e tem pelo menos mais um símbolo

Permissões de acesso para os arquivos Como o sistema é voltado para um ambiente multiutilizador, a permissão é necessária para garantir que os utilizadores tenham acesso somente aos recursos para os quais eles podem utilizar. O recurso pode ser desde um simples arquivo até uma impressora ou um gravador de CD. Assim foram criadas três "entidades" no sistema. O utilizador que é o "dono" do recurso, o grupo de utilizadores ao qual ele pertence (por exemplo, os utilizadores do departamento de informática) e os outros utilizadores. As permissões são divididas em três níveis. Permissões de utilizador, de grupo e para todos. Dentro de cada nível temos três tipos de acesso: leitura (r), escrita (w) e execução (x). Veremos que essa divisão cobre praticamente todas as necessidades em termos de segurança.

8 / 25

Todos os recursos (representados por arquivos e directórios) têm suas permissões relacionadas. Podemos visualizar as permissões com instruções específicas, e elas são sempre representadas por combinações de 9 caracteres, como vemos abaixo:

r w x r w x r w x User Group Others

As três primeiras posições representam as permissões para o utilizador. As três outras representam as permissões relativas a um grupo (pode ser que o utilizador pertença ao grupo ou não) e aos outros (que não são o utilizador ou pertençam ao grupo). Caso o símbolo mostrado seja apenas o (r), o respectivo indicado tem acesso apenas de leitura. Se existir o (w), apenas de escrita, e caso apareça o (x), apenas de execução. Combinações rw-, r-x, -wx são possíveis. O uso deste comando será feito mais à frente.

Outras particularidades do SO Linux

Acesso aos dispositivos Alguns dispositivos não estão sempre acessíveis. Um disquete ou um CD, por exemplo, só poderão ser acedidos quando estiverem nos drives (óbvio :). Não basta simplesmente inserir a disquete ou CD na unidade: é preciso executar um comando que permita o acesso. Isso acontece pois nem todos os utilizadores têm permissão de utilizar os recursos. O comando que permite o acesso se chama mount, por isso dizemos que o dispositivo necessita ser "montado". Ao montar um dispositivo (disquete, CD-ROM ou outro periférico), é estabelecida uma "ligação" entre um arquivo e o periférico especificado. Se a ligação tiver sucesso, o conteúdo é disponibilizado para acesso, normalmente em /mnt. O dispositivo é considerado em uso até que o utilizador que o montou (ou o superutilizador) o desmonte, usando o comando umount. A necessidade de desmontar existe para que nenhum utilizador possa tornar um dispositivo inacessível. O uso destes comandos será feito mais à frente.

9 / 25

Particularidades dos arquivos Detalhe importante, é que os nomes de arquivos no Linux são case-sensitive (distinção entre maiúsculas e minúsculas). Por exemplo, um arquivo Teste é diferente de teste e também de TESTE, assim como as possíveis variações de maiúsculas e minúsculas da palavra teste. Não é necessária a utilização da extensão do arquivo, como noutros sistemas operativos. Como as permissões de arquivo no Linux indicam se um arquivo é executável ou não, não se necessita do ".exe". Só por questões organizativas, se recomenda a adopção de algumas extensões para identificar o tipo do arquivo em questão (texto, documento, folha de cálculo, imagem, etc.). Algumas aplicações utilizam as extensões para melhor manipular os arquivos, ou seja, as extensões estão presentes, como parte do nome do arquivo sem ser um item obrigatório.

Redirecionamento A última característica particular do Linux é a habilidade de redirecionamento. Como o Linux foi criado por um programador e a sua intenção era que o sistema fosse utilizado por programadores, as shell's têm grande facilidade em tratar as entradas e saídas de dados. Como exemplo de entrada de dados podemos citar o teclado, o rato, uma disquete. Todos eles alimentam o computador com informações. Como exemplo de saída de dados temos o monitor, a impressora, a disquete. Todos eles recebem informações do computador. Como o conceito de entrada e saída é muito utilizado no Linux e como existem situações onde um processo pode não saber qual é sua entrada ou saída de dados, definimos duas, chamadas de padrão. A entrada padrão (também chamada stdin) é o teclado, a saída padrão (chamada stdout) é o monitor. Como esses padrões podem ser alterados, pode-se facilmente direccionar um resultado de uma saída para outra, utilizando um sinal de maior (>). Pode-se redireccionar uma entrada para outra, usando um sinal de menor (<). E pode-se redireccionar uma saída para uma entrada usando uma barra vertical (o sinal em inglês chama-se "pipe" ( | )). Desta maneira, para listar os arquivos de um dado (sub)directório, mas que o resultado seja armazenado num arquivo, é só executar: $ ls > saída ou $ ls /home/testes > saída

10 / 25

O resultado será gravado num arquivo chamado saída. O redireccionamento é utilizando principalmente em programas ou quando o resultado de um processamento não será observado directamente pelo utilizador.

Segundo Plano O Linux permite a execução de várias tarefas simultaneamente, sendo esta capacidade chamada de multitarefa. Um processo demorado pode ser posto a executar em segundo plano e continuar o trabalho sem ter que ficar à espera que o processo mais lento termine. Um processo nada mais é do que um programa. Qualquer comando que executa no prompt é um processo. Existem processos que terminam muito rápido (por exemplo, o ls), e existem processos que podem demorar muito. Todos os processos, ao serem criados, recebem um número de identificação que os permite localizar/identificar, caso seja necessário. Se um processo é muito demorado e não se quer esperar pelos resultados, o mesmo pode ser colocado em segundo plano. Isso é feito, acrescentando um sinal de & (E comercial) no final de um comando. O prompt retornará a identificação do processo iniciado, e ele ficará em execução em segundo plano. Comandos sobre gestão de processos serão vistos mais à frente.

11 / 25

Manipulação de arquivos

ls Como sair do directório actual, ou mover para outro directório? O comando cd <nome_do_directório> é o comando que se encarrega disto. A tradução de cd é change directory/mudar directório. Com este comando pode-se mudar de directório. Exemplo: cd / este comando fará com que seu directório actual seja modificado para o directório raiz. Para voltar ao home, digitar apenas cd, sem parâmetro. Para saber em que directório se está, o comando pwd mostra essa informação: Por exemplo: [root@fedora9 curso1]$ pwd /home/curso1 Explicação: A primeira linha é composta por [root@fedora9 curso1]$ $, que é chamada de prompt. O nome de utilizador é root; a máquina chama-se fedora9 e o directório corrente chama-se curso1. Esse é o padrão de prompt do Linux. Para movimentar entre os directórios, usa-se o comando cd, para listar o conteúdo dos directórios, usa-se o comando ls. ls [opções] [arquivo] O comando ls mostra os arquivos do directório utilizando as opções fornecidas. Veja-se algumas das opções mais comuns do comando ls:

Opção Finalidade -a Mostra todos os arquivos, mesmo os arquivos ocultos. --color Lista os arquivos com padrões de extensão/tipo reconhecidos com

cores diferentes. -d Lista o nome do directório em vez de seu conteúdo. -h Combinada com a opção -l imprime os tamanhos de arquivo em

formato mais fácil de ser lido. Ex: 1K, 20M, 5G. -l Imprime a listagem de arquivos detalhada. -r Imprime a listagem dos arquivos ordenados em ordem reversa. -1 Imprime os nomes de arquivos um por linha.

Com o comando ls -l têm-se uma visão das permissões dos arquivos. Nota: os arquivos iniciados com . (ponto) são ocultos. Servem para guardar configurações, e apenas aparecem caso o ls seja executado com a opção -a.

12 / 25

cat Veja-se como criar um arquivo qualquer com apenas algumas linhas de texto. O comando utilizado para isso é o cat; e serve para criar/mostrar o conteúdo de um arquivo. Para criar um arquivo com o comando cat digite o seguinte: cat > teste.txt Digitar algum texto …, qualquer texto; ao terminar, pressiona-se Ctrl-d, numa linha vazia para finalizar a entrada. Fazer assim: [root@fedora9 curso1]$ cat > teste.txt isto é um simples teste de criação de arquivo <Ctrl-d> [root@fedora9 curso1]$ Digitando cat teste.txt; o comando cat irá mostrar o conteúdo do arquivo. [root@ fedora9 curso1]$ cat teste.txt isto é um simples teste de criação de arquivo [root @ fedora9 curso1]$ O cat serve para mostrar pequenos arquivos. Existem comandos mais apropriados para apresentar conteúdos quando o arquivo tem muitas linhas. Um desses comandos, é o more. Utiliza-se da mesma maneira que o cat. Para organização do directório home, recomenda-se criar (sub)directórios onde os arquivos fiquem organizados por assunto ou afinidade. O comando para a criação de (sub)directórios é o mkdir. Caso o (sub)directório não seja mais necessário, utilizar o rmdir para eliminá-lo. Para criar um directório chamado teste, e a seguir enviar o arquivo teste.txt para dentro desse novo directório. Para isto, usar o comando cp, que copia arquivos. mkdir teste cp teste.txt teste Digitando ls teste vê-se que o arquivo teste.txt foi copiado para o directório teste. Têm-se agora duas cópias do mesmo arquivo, coisa que agora não interessa, pelo que a seguir ir-se-á ver como se eliminam arquivos.

13 / 25

rm Para eliminar a cópia do directório local, utiliza-se o comando rm, cuja função é a eliminação de arquivos. A sintaxe é a seguinte: rm [-opções] arquivo(s) Para apagar o arquivo teste.txt digitar: [root@fefora9 curso1]$ rm teste.txt A seguir digita-se ls e poderá observar-se que o arquivo desapareceu. [root@fefora9 curso1]$ ls teste [root@fefora9 curso1]$$ Desta maneira apagou-se o arquivo teste.txt. Notar que já NÃO é possível recuperar o arquivo depois dele ser removido. O comando rm apaga o arquivo sem fazer perguntas, por isso deve-se ter a certeza do que se está a fazer. Algumas opções do comando rm: Opção Finalidade

-f Força a remoção dos arquivos, NÃO espera confirmação !! -i Pergunta antes de fazer cada remoção. -r Remove recursivamente o conteúdo dos directórios. -v Mostra o que está sendo feito. --help Mostra a mensagem de ajuda e sai.

Pode-se ainda mover um arquivo(s) ou (sub)directório, utilizando o comando mv. A sintaxe é basicamente a mesma do cp. Para além dos comandos básicos de manipulação de arquivos, ver-se-á outros comandos úteis do sistema Linux.

Comandos de administração de contas: passwd, adduser, userdel, su Todos os utilizadores do Linux têm a capacidade de trocar a sua própria senha. A troca de senhas deve ser feita periodicamente, e deve conter caracteres misturados (letras maiúsculas, minúsculas, números). Evitar usar palavras fáceis.

14 / 25

O comando para alterar a senha é: [[root@fefora9 curso1]$ passwd Changing password for curso1 Old password: (Digite aqui sua senha actual) New password: (Digite aqui sua nova senha) Re-enter new password: (Digite novamente a sua nova senha)

O sistema pedirá a senha actual, e a seguir digita-se duas vezes a nova senha, para evitar erros. Após o procedimento, a nova senha fica alterada. Ao se terminar de utilizar o sistema, para encerrar a shell, deve-se usar um dos comandos logout ou exit, dependendo da shell. Podemos ainda, utilizar o Ctrl-d. Os comandos a seguir são “exclusivos” do superutilizador (root). Para adicionar um novo utilizador, utilizar:

# adduser <utilizador> Para definir (alterar) uma senha para o utilizador, utilizar o comando:

# passwd <utilizador> Nunca manter cadastrados, utilizadores desnecessários. No caso de um utilizador usado para teste, deve-se removê-lo logo após o teste. Para remover um utilizador e o seu directório home:

# userdel -r utilizador Máxima da segurança: "evitar usar o root, fazendo-o somente quando necessário. Muitos problemas evitam-se cumprindo esta norma. Para, dentro de uma dada sessão, aceder a outra sessão (deve ter as permissões respectivas):

# su <utilizador> (por ex: $ su joao ) Se o campo <utilizador> for omitido, o su assumirá que o utilizador desejado é o root. Para simular um login executando os scripts de iniciação do utilizador acrescenta-se "-" entre su e o <utilizador>, como no exemplo:

# su - joao

15 / 25

Manipulação de Processos Um sistema multitarefa é um sistema capaz de gerir vários processos ao mesmo tempo. Pode acontecer a necessidade de monitorar os processos do sistema ou mesmo encerrá-los. Apresentam-se a seguir comandos para essas situações. Para monitorar os processos que estão activos no sistema, usa-se o comando top, que apresenta entre outras informações, a utilização de CPU, o número de processos, a quantidade de memória utilizada, etc. Para listar os processos individualmente, usa-se a ferramenta ps. A sintaxe mais utilizada é a apresenta abaixo: ps -aux Entre as opções, temos:

-a : Lista todos os processos independentemente do dono (utilizador). -u : Mostra o dono do processo. -x : Lista os processos que não estão ligados a nenhum terminal, os Daemons.

Se for necessário encerrar um processo, usa-se o comando kill, como é apresentado a seguir:

kill -9 744 (mata o processo de ID número 744) Outra maneira mais simples de executar a mesma acção é usar o comando killall:

# killall httpd (mata o processo que representa o servidor WWW ) # killall -HUP sshd (reinicia o processo que representa o servidor SSH)

Se o computador está mais lento sem motivo aparente, poderá estar a utilizar toda a sua memória. Para o verificar, utiliza-se o comando:

free – Este comando mostra informações sobre a situação actual do equipamento, nomeadamente, sobre a memória do sistema, a utilizada, o swap, etc.

16 / 25

Comandos mount e umount para montar e desmontar dispositivos Como explicado antes, para ter acesso a certos dispositivos, os mesmos têm de ser montados. Analisa-se a seguir os comandos necessários para isso. mount Este comando serve para tornar disponível um sistema de arquivos dentro de outro sistema de arquivos. Sintaxe: # mount [-t tipo] <device> <ponto de montagem> Exemplo: # mount -t vfat /dev/fd0 /mnt/floppy (monta uma disquete “formatada no

Windows”) umount Este comando é usado para "desmontar" um sistema de arquivos que foi acoplado ao sistema pelo comando mount. Sintaxe: # umount <directório em que a partição foi montada> Exemplo: # umount /mnt/floppy (desmonta a unidade de disquete)

17 / 25

Comandos df, du, grep, find, updatedb, locate, tar, date Apresentam-se comandos de propósitos gerais, que servem tanto para o utilizador final como para o administrador. Há programas para gestão de espaço em disco, procura de arquivos e comandos, data e hora, etc. Nota: alguns desses comandos podem não estar disponíveis para o utilizador comum. Isso vai depender das configurações feitas pelo root. O espaço existente no sistema de arquivos deve ser controlado, para evitar o risco de ultrapassar limites. Usa-se para isso, o comando df, de Disk Free. Df - comando que mostra o espaço livre dos discos montados Sintaxe: df Exemplo: # df Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda2 896312 594468 255580 70% / O df mostra apenas o tamanho total. Para saber quanto espaço um directório ou um arquivo estão a ocupar, usa-se o comando du. du - Disk Space Used, mostra o espaço utilizado por um arquivo ou directório. Sintaxe: du <arquivo> Exemplo: # du /root (mostra todos os directórios e os respectivos tamanhos) Para procurar uma palavra ou uma frase dentro de um ou mais arquivos, usa-se o comando grep. grep - procura (filtra) por expressões em arquivos ou resultados. Sintaxe: grep [-l] <expressão> [arquivo] Exemplo: # grep root /etc/group (procura pelas ocorrências da palavra root no arquivo '/etc/group') Pode-se também usar o comando find para procurar arquivos e directórios em todo o sistema de arquivos. find - procura por um arquivo. Sintaxe: find <caminho> <expressão> Exemplo: # find / -name java (procura por arquivos que tenham java no nome)

18 / 25

Outra maneira de procurar arquivos é criar uma base de dados com informações, como o nome de arquivos e directórios onde estão, e depois procurar nessa base de dados ao invés do disco todo. Para gerar a base de dados usa-se o comando updatedb e para procurar o arquivo usa-se o comando locate. updatedb - Cria uma base de dados com informações dos arquivos e directórios. Sintaxe: updatedb locate - Procura por arquivos e/ou directórios na base de dados já criada. Sintaxe: locate <expressão> Exemplo: # locate ftp (procura por arquivos que contenham "ftp" no seu nome) Para trocar muitos arquivos com outro utilizador ou para a criação de uma cópia de segurança (backup) de alguns arquivos, pode-se usar o comando tar. Este comando permite criar arquivos compactados como o utilitário zip do DOS. tar - criação de pacotes de arquivos. Sintaxe: tar [opções] [-f arquivo]

Opções Significado x descompacta t lista o conteúdo de um arquivo v mostra no ecrã o que está a ser feito z utiliza o gzip f especifica o nome do arquivo c cria um novo arquivo

Exemplo: # tar xvzf /root/meuBackup.tar.gz ("abre" o arquivo) # tar cvzf meu_backup.tgz ~ (faz o backup da área pessoal) date O comando date permite ver a data actual do sistema ou mesmo alterá-la. Sintaxe: date[ MMDDhhmmYYYY] Exemplo: # date 123123501999 (muda a data do sistema para sex dez 31 23:50:00 199 ) Nota: Apenas o root pode alterar a data.

19 / 25

Alteração de permissões As permissões de arquivos (explicadas antes) podem ser alteradas. Claro que não é possível alterar as permissões de qualquer arquivo, mas apenas daqueles que é proprietário. O comando que realiza essas alterações é o chmod. A sintaxe do chmod permite várias combinações. Focando nas opções do comando, deve-se ter em ordem a especificação da "entidade" cujas permissões se irá alterar, seguida da instrução para adicionar ou retirar um atributo, seguida do(s) atributo(s) que iremos actuar. Sintaxe: chmod <opções> <arquivos> Há três entidades no Linux. O dono do arquivo (representado pela letra "u", de utilizador), o grupo do dono (representado pela letra "g" de grupo) e os outros utilizadores (representados pela letra "o", de outros).

r w x r w x r w x user group others

As permissões possíveis para os arquivos são: leitura (representado por "r"), escrita (representado por "w") e execução (representado por "x"). É possível adicionar ou retirar as permissões. Assim, para adicionar, usa-se o sinal "+". Para retirar permissões, utiliza-se o "-". Qualquer combinação é possível. Exemplos. # chmod ugo+rwx teste.txt

Alteração das permissões estabelecendo que o utilizador, o grupo e os outros podem ler, escrever e executar o arquivo "teste.txt".

# chmod o-r teste.txt Aqui diz-se que os outros não têm acesso de leitura ao arquivo teste.txt".

# ls -l aula1.txt -rw-r----- 1 l00 aluno 459 Jul 26 13:35 aula1.txt (resultado do comando anterior)

Observe-se o resultado do comando:

Os nove símbolos a partir da coluna 2 descrevem os direitos de acesso do ficheiro:

• os símbolos rw- (colunas 2 a 4) dizem respeito ao dono do ficheiro, neste caso o utilizador l00000, que pode ler o ficheiro (r), modificá-lo (w), mas não o pode executar (-);

20 / 25

• o grupo associado ao ficheiro é o grupo aluno e os direitos de acesso dos utilizadores pertencentes a este grupo, indicados pelos símbolos das colunas 5 a 7, são: podem ler (r) o ficheiro, mas não o podem alterar (primeiro -) nem executar (segundo -);

• os restantes utilizadores do sistema não podem ver o conteúdo do ficheiro, alterá-lo ou executá-lo, dado que os símbolos que representam os seus direitos de acesso (nas colunas 8 a 10) serem todos -.

# ls -l /bin/ls -rwxr-xr-x 1 root root 75948 Jul 16 12:37 /bin/ls (resultado do comando anterior) Observe-se o resultado do comando: O arquivo que é listado, e correspondente ao comando ls, pode ser lido e executado por todos os utilizadores do sistema (os símbolos r e x aparecem nos símbolos correspondentes ao dono do ficheiro, aos membros do grupo root e aos restantes utilizadores), mas só o seu dono o pode modificar (só os seus direitos de acesso contêm o símbolo w).

21 / 25

Exemplos (exercícios) de comandos no Linux

Para se saber qual a shell em utilização: $echo $SHELL

Para “fechar” a shell Bash (voltar à prompt de login):

Escrever na prompt: exit, pressionar Ctrl+D, ou logout.

Na prompt da shell bash:

cd nomeDir Informa a shell que se pretende trabalhar na directoria com o nome nomeDir (cd – Change Directory);

cd /

Informa a shell que se pretende trabalhar na directoria de raiz (root directory);

cd

Regressa à home directory, qualquer que seja a directoria onde se esteja;

pwd

Informa ao utilizador qual a directoria onde se está a trabalhar actualmente (Present Working Directory);

Caminhos absolutos (começam com / ): /usr/share /dev /etc/network

Interpretados a partir da raiz.

Caminhos relativos (não começam com / ):

usr Maildir home/antonio/Docs

Interpretados relativamente à pwd.

22 / 25

Exemplo com o comando cd:

cd /usr Mudar para a directoria usr na raiz;

cd usr

Mudar para a directoria usr que existe dentro da pwd;

cd Mudar a directoria corrente para a directoria principal do utilizador;

cd ~ Tem o mesmo efeito que o comando anterior.

cd ..

Mudar para a directoria hierarquicamente abaixo da pwd;

cd ../power Mudar para a directoria power que é “irmã” da pwd;

cd ~/radical

Mudar para a directoria radical dentro da home directory.

Caractere “.” - Refere-se à pwd (directoria corrente), usando-se frequentemente para a execução de programas na directoria corrente. Exemplo:

# ./meuprog

Executa o programa com o nome meuprog que se encontra na pwd (obviamente meuprog é executável).

O caractere “~” usa-se para referir a home directory de outros utilizadores:

Com caminho absoluto:

/home/joana

Com o caractere ~:

~/joana

23 / 25

Exemplo do comando mkdir - cria directorias

mkdir l00 Cria, dentro da directoria de trabalho corrente, a directoria l00;

Exemplo do comando rmdir – apaga directorias

rmdir l00 Apaga a directoria l00, se estiver vazia;

Exemplo do comando cp – copia arquivos

cp aula1.txt aula2.txt Cria uma cópia do ficheiro aula1.txt, chamada aula2.txt.

cp aula1.txt .. Cria uma cópia do ficheiro aula1.txt, chamada aula1.txt, na directoria que contém a directoria corrente.

cp aula1.txt aula2.txt copias-seguranca Cria uma cópia dos ficheiros aula1.txt e aula2.txt na directoria copias-seguranca.

cp -i aula1.txt aula2.txt Quando já existe um ficheiro com o nome de uma cópia a criar, a opção -i do comando cp diz-lhe para perguntar ao utilizador se deseja efectivamente criar a cópia, destruindo o conteúdo desse ficheiro.

Exemplo do comando mv – move e renomeia ficheiros

Com o comando mv pode-se mudar o nome de um ficheiro (ou de uma directoria) e mudar ficheiros (ou directorias) de directoria.

Tal como com o comando cp, se já existir um ficheiro com o novo nome que se quer dar ao ficheiro que se pretende renomear, esse ficheiro é apagado e a renomeação é efectuada. O mesmo acontece se existir, na directoria para onde se pretende mover um ficheiro, um outro ficheiro com o mesmo nome que aquele que se quer mover.

24 / 25

$ mv aula1 aula1.txt Muda o nome do ficheiro aula1 para aula1.txt.

$ mv aula1.txt aula2.txt l00 Move os ficheiros aula1.txt e aula2.txt para a directoria l00.

$ mv -i aula1 aula1.txt Com a opção -i, se já existir um ficheiro chamado aula1.txt o comando mv pergunta ao utilizador se o quer destruir, só executando a renomeação se a resposta for afirmativa.

Exemplo do comando rm - apaga ficheiros Sem opções, este comando não pede confirmação ao utilizador antes de apagar um ficheiro, excepto se os direitos de acesso do utilizador sobre o ficheiro, o impedem de o alterar. $ rm aula1.txt~

Apaga o ficheiro aula1.txt~. $ rm -i aula1.txt~

Com a opção -i, o comando rm pede confirmação ao utilizador antes de apagar o ficheiro aula1.txt~.

$ rm ./-i Apaga o ficheiro -i da directoria corrente.

Exemplo do comando cat - mostra o conteúdo de ficheiros É usado para ficheiros pequenos, visto que o conteúdo do ficheiro é enviado de uma só vez para o ecrã. $ cat aula1.txt

Mostra o conteúdo do ficheiro aula1.txt no ecrã.

Exemplo do comando less - mostra o conteúdo de ficheiros Mostra o conteúdo de ficheiros, um ecrã de cada vez. Permite avançar e recuar no ficheiro e procurar texto. As teclas h e H permitem aceder ao modo de ajuda, em que são mostradas as acções possíveis e as teclas que as invocam. $ less aula1.txt

Mostra o conteúdo do ficheiro aula1.txt interactivamente.

25 / 25

REFERÊNCIAS DESTE TEXTO: Textos retirados e adaptados de:

o http://www.ccuec.unicamp.br/treinamento_int2004/linux_basico/index.html

o http://www.di.uevora.pt/%7Evp/p1/mini-linux.html#direitos