Comandos são introduções passadas ao sistema para executar uma determinada tarefa. No mundo GNU/Linux, o conceito de comandos é diferente do padrão MS-DOS. Um comando é qualquer arquivo executável, que pode ser ou não criado pelo usuário.
Entre as vantagens da linha de comando do GNU/Linux (shell) está a variedade de comandos que ele oferece, o que torna a administração do sistema rápida e eficaz.
O shell é o responsável pela interação entre o usuário e o sistema operacional, interpretando os comandos. É nele que os comandos são executados.
O comando ls
O comando ls possui muitos parâmetros. Veremos aqui os mais utilizados. A opção mais comum para este comando é o -l, que lista os arquivos ou diretórios de uma forma bem detalhada. Exemplo:
$ ls -l /
drwxr-xr-x 2 root root 4096 abr 25 06:15 bin
No exemplo anterior, pedimos para listar os arquivos e diretórios que se encontram na raiz do sistema (/). No meu caso, a primeira linha de saída do comando foi:
drwxr-xr-x 2 root root 4096 abr 25 06:15 bin
Vamos agora entender os campos que compõem esta linha, iniciando pelo primeiro caractere, d, que indica que se trata de um diretório. Poderia ser também:
- l: Indica que se trata de um link;
- –: O hífen indica que se trata de um arquivo regular;
- c: Indica que o arquivo é um dispositivo de caractere (sem buffer);
- b: Indica que o arquivo é um dispositivo de bloco (com buffer);
- u: Sinônimo para o tipo
c, indica que é um dispositivo de caractere (sem buffer); - s: Indica que o arquivo é um socket;
- p: Indica que o arquivo é um FIFO, named pipe (pipe nomeado).
FIFO — Sigla para First In, First Out , que em inglês significa “primeiro a entrar, primeiro a sair”. São amplamente utilizados para implementar filas de espera. Os elementos vão sendo colocados no final da fila e retirados por ordem de chegada. Pipes (
|) são um exemplo de implementação de FIFO.
Buffer é uma região de memória temporária usada para escrita e leitura de dados. Normalmente, os buffers são utilizados quando existe uma diferença entre a taxa em que os dados são recebidos e a taxa em que eles podem ser processados.
Socket é um meio de comunicação por software entre um computador e outro. É uma combinação de um endereço IP, um protocolo e um número de porta de protocolo.
O campo rwxr-xr-x representa as permissões. Vamos estudá-las mais à frente neste livro.
O campo root root informa o dono do diretório ou arquivo, que neste caso é o root, e depois seu grupo primário, que também é root.
O campo 4096 indica o tamanho do arquivo ou diretório.
O campo abr 25 06:15 informa a data e hora de criação do arquivo ou diretório.
O campo bin informa o nome do arquivo ou diretório; neste caso, é o diretório /bin.
O comando ls -a
O comando ls -a lista todos os arquivos, inclusive os arquivos ocultos. Exemplo:
$ ls -a /root
.config .gvfs Público xorg.conf.new
Na saída da minha primeira linha, observe que temos arquivos que se iniciam com ponto (.). Esses arquivos são ocultos. No Linux, arquivos e diretórios ocultos são iniciados por um ponto.
O comando ls -R
O comando ls -R é utilizado para listar arquivos de forma recursiva, ou seja, listar também os subdiretórios que estão dentro de um determinado diretório. Exemplo:
$ ls -R /
/proc/5470/task/5508
Observe que ele listou o caminho completo de um determinado diretório, /proc/5470/task/5508.
Criar arquivo
Para criar um arquivo, podemos simplesmente abrir um editor de texto e salvá-lo, mas existem outras formas. A mais simples é usando o comando touch:
$ touch arquivo1
Curingas
No GNU/Linux, usamos curingas para especificar um ou mais arquivos e diretórios. Com este recurso, podemos listar, copiar, remover e mover diversos arquivos e diretórios. São cinco tipos de curingas no Linux:
*: Utilizado para um nome completo ou restante de um arquivo/diretório.?: Este curinga pode substituir uma ou mais letras em determinada posição.!: Exclui a operação.[padrao]: É utilizado para referência a uma faixa de caracteres de um arquivo/diretório.{padrao}: Expande e gera strings para pesquisa de padrões de um arquivo/diretório.
Vamos a um exemplo. Precisamos criar 3 arquivos, chamados arq1, arq2 e arq3, dentro do diretório /home/juliano/ usando o recurso curinga. O comando seria:
$ touch arq{1,2,3}
Segundo exemplo:
No diretório atual, temos diversos arquivos de imagens, com extensões do tipo .png, .jpeg, .gif, .pdf, entre outros formatos. Eu preciso listar somente as imagens que tenham a extensão .png; neste caso, uso o recurso curinga, realizando o comando:
$ ls *.png
Terceiro exemplo:
Podemos realizar exceções. No meu diretório atual, tenho os arquivos arq1.txt, arq2.txt e arq3.txt, criados anteriormente. Quero listar todos eles, exceto o arq2.txt:
$ ls arq[!2].txt
Criando diretórios
Um diretório é uma pasta onde você guarda seus arquivos. O comando mkdir é utilizado para criar um diretório no sistema. Exemplo:
$ mkdir videos
Podemos criar diretórios de forma recursiva, isto é, diretórios com subdiretórios, executando a sintaxe -p. Exemplo:
$ mkdir -p videos/terror
Com a opção -p, criamos toda uma estrutura de diretórios.
Removendo arquivos/diretórios
O comando rm é utilizado para apagar arquivos e diretórios. Para apagar o arquivo documento.txt, por exemplo, usamos o comando:
$ rm documento.txt
Podemos usar a opção -i para forçar a confirmação de remoção do arquivo:
$ rm -i documento.txt
Para removermos diretórios, temos que usar a opção de recursividade -r ou -R. Exemplo:
$ rm -R /home/juliano/videos
Nesse caso, estamos removendo o diretório videos, que está localizado dentro dos diretórios /home/juliano.
Para removermos diretórios que estejam vazios, podemos usar o comando:
$ rmdir diretorio
O comando rmdir só permite a exclusão de diretórios vazios.
Copiar arquivos/diretórios
O comando cp serve para fazer cópias de arquivos e diretórios. Para lidarmos com diretórios, temos que usar a opção de recursividade -r ou -R, assim como o comando rm. Exemplos:
$ cp arquivo-origem arquivo-destino
$ cp arquivo-origem caminho/diretório-destino/
$ cp -R diretório-origem nome-do-destino
$ cp -R diretório-origem caminho/diretório-destino/
Uma opção interessante no comando cp é a -p, que permite que, na cópia, não se percam as informações do arquivo, tais como data e hora de criação, donos e permissões. Exemplo:
$ cp -p arquivo-origem arquivo-destino
Movendo arquivos
O comando mv é utilizado tanto para mover arquivos e diretórios quanto para renomeá-los. Exemplo:
$ mv arquivo1 arquivo2
Nesse caso, estamos renomeando arquivo1 para arquivo2. Mais exemplos de uso do comando mv:
$ mv arquivo caminho/diretório-destino/
$ mv arquivo novo-nome
$ mv diretório novo-nome
$ mv diretório caminho/diretório-destino/
Conclusão
Deve-se ter muito cuidado ao executar tarefas de manipulação de arquivos com o usuário root. Como ele tem poder administrativo sobre todo o sistema, você poderia excluir arquivos importantes e corromper o seu sistema. Sempre observe os caminhos de destino no momento de mover ou copiar um arquivo e tenha atenção redobrada ao remover conteúdo.









