Série RHCSA: Como realizar o gerenciamento de arquivos e diretórios - Parte 2
Neste artigo, RHCSA Parte 2: Gerenciamento de arquivos e diretórios, revisaremos algumas habilidades essenciais que são exigidas nas tarefas diárias de um administrador de sistema.
Criar, excluir, copiar e mover arquivos e diretórios
O gerenciamento de arquivos e diretórios é uma competência crítica que todo administrador de sistema deve possuir. Isso inclui a capacidade de criar/excluir arquivos de texto do zero (o núcleo da configuração de cada programa) e diretórios (onde você organizará arquivos e outros diretórios), e descobrir o tipo de arquivos existentes.
O comando touch pode ser usado não apenas para criar arquivos vazios, mas também para atualizar os tempos de acesso e modificação de arquivos existentes.
Você pode usar file [filename]
para determinar o tipo de um arquivo (isso será útil antes de iniciar seu editor de texto preferido para editá-lo).
e rm [filename]
para excluí-lo.
Quanto aos diretórios, você pode criar diretórios dentro de caminhos existentes com mkdir [directory]
ou criar um caminho completo com mkdir -p [/full/path/to/directory]
.
Quando se trata de remover diretórios, você precisa ter certeza de que eles estão vazios antes de emitir o comando rmdir [directory]
ou usar o comando mais poderoso (manuseie com cuidado!) rm -rf [diretório]
. Esta última opção forçará a remoção recursiva do [diretório]
e de todo o seu conteúdo – portanto, use-a por sua própria conta e risco.
Redirecionamento e pipeline de entrada e saída
O ambiente de linha de comando fornece dois recursos muito úteis que permitem redirecionar a entrada e a saída de comandos de e para arquivos, e enviar a saída de um comando para outro, chamado redirecionamento e pipeline, respectivamente.
Para entender esses dois conceitos importantes, devemos primeiro entender os três tipos mais importantes de fluxos (ou sequências) de caracteres de E/S (entrada e saída), que são na verdade arquivos especiais, no sentido *nix da palavra.
- A entrada padrão (também conhecida como stdin) é, por padrão, anexada ao teclado. Em outras palavras, o teclado é o dispositivo de entrada padrão para inserir comandos na linha de comando.
- A saída padrão (também conhecida como stdout) é por padrão anexada à tela, o dispositivo que “recebe” a saída dos comandos e os exibe na tela.
- Erro padrão (também conhecido como stderr), é para onde as mensagens de status de um comando são enviadas por padrão, que também é a tela.
No exemplo a seguir, a saída de ls /var
é enviada para stdout (a tela), assim como o resultado de ls /tecmint . Mas neste último caso, é o stderr que é mostrado.
Para identificar mais facilmente esses arquivos especiais, cada um deles recebe um descritor de arquivo, uma representação abstrata que é usada para acessá-los. O essencial a entender é que esses arquivos, assim como outros, podem ser redirecionados. O que isso significa é que você pode capturar a saída de um arquivo ou script e enviá-la como entrada para outro arquivo, comando ou script. Isso permitirá armazenar em disco, por exemplo, a saída de comandos para posterior processamento ou análise.
Para redirecionar stdin (fd 0), stdout (fd 1) ou stderr (fd 2), os seguintes operadores estão disponíveis.
- Redirection Operator
Efeito
- >
Redireciona a saída padrão para um arquivo que contém a saída padrão. Se o arquivo de destino existir, ele será sobrescrito.
- >>
Acrescenta a saída padrão a um arquivo.
- 2>
Redireciona o erro padrão para um arquivo que contém a saída padrão. Se o arquivo de destino existir, ele será sobrescrito.
- 2>>
Acrescenta erro padrão ao arquivo existente.
- &>
Redireciona a saída padrão e o erro padrão para um arquivo; se o arquivo especificado existir, ele será sobrescrito.
- <
Usa o arquivo especificado como entrada padrão.
- <>
-
O arquivo especificado é usado para entrada e saída padrão.
Ao contrário do redirecionamento, o pipelining é executado adicionando uma barra vertical (|)
após um comando e antes de outro.
Lembrar:
- Redirecionamento é usado para enviar a saída de um comando para um arquivo ou para enviar um arquivo como entrada para um comando.
- Pipelining é usado para enviar a saída de um comando para outro comando como entrada.
Exemplos de redirecionamento e pipeline
Exemplo 1: Redirecionando a saída de um comando para um arquivo
Haverá momentos em que você precisará iterar uma lista de arquivos. Para fazer isso, você pode primeiro salvar essa lista em um arquivo e depois ler esse arquivo linha por linha. Embora seja verdade que você pode iterar diretamente na saída de ls, este exemplo serve para ilustrar o redirecionamento.
ls -1 /var/mail > mail.txt
Exemplo 2: Redirecionando stdout e stderr para /dev/null
Caso queiramos evitar que stdout e stderr sejam exibidos na tela, podemos redirecionar ambos os descritores de arquivo para /dev/null
. Observe como a saída muda quando o redirecionamento é implementado para o mesmo comando.
ls /var /tecmint
ls /var/ /tecmint &> /dev/null
Exemplo 3: Usando um arquivo como entrada para um comando
Embora a sintaxe clássica do comando cat seja a seguinte.
cat [file(s)]
Você também pode enviar um arquivo como entrada, usando o operador de redirecionamento correto.
cat < mail.txt
Exemplo 4: Enviando a saída de um comando como entrada para outro
Se você tiver um grande diretório ou listagem de processos e quiser localizar um determinado arquivo ou processo rapidamente, você desejará canalizar a listagem para grep.
Observe que usamos to pipelines no exemplo a seguir. O primeiro procura a palavra-chave necessária, enquanto o segundo eliminará o comando grep
real dos resultados. Este exemplo lista todos os processos associados ao usuário Apache.
ps -ef | grep apache | grep -v grep