Série RHCSA: Como Realizar Gerenciamento de Arquivos e Diretórios – Parte 2

Neste artigo, RHCSA Parte 2: Gerenciamento de arquivos e diretórios, revisaremos algumas habilidades essenciais necessárias nas tarefas diárias de um administrador de sistema.

RHCSA: Perform File and Directory Management – Part 2

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 horários de acesso e modificação de arquivos existentes.

touch command example

Você pode usar file [nome do arquivo] para determinar o tipo de arquivo (isso será útil antes de iniciar seu editor de texto preferido para editá-lo).

file command example

e rm [nome do arquivo] para excluí-lo.

rm command example

Quanto aos diretórios, você pode criar diretórios dentro de caminhos existentes com mkdir [diretório] ou criar um caminho completo com mkdir -p [/caminho/completo/para/diretório].

mkdir command example

Quando se trata de remover diretórios, você precisa garantir que eles estejam vazios antes de emitir o comando rmdir [diretório], ou usar a opção mais poderosa (manuseie com cuidado!) rm -rf [diretório]. Esta última opção removerá recursivamente o [diretório] e todo o seu conteúdo – então use-a por sua própria conta e risco.

Redirecionamento de Entrada e Saída e Encadeamento de Comandos

O ambiente da linha de comando fornece duas funcionalidades 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, chamadas de redirecionamento e encadeamento, respectivamente.

Para entender esses dois conceitos importantes, primeiro devemos compreender os três tipos mais importantes de fluxos de E/S (Entrada e Saída) de caracteres, que são de fato arquivos especiais, no sentido *nix da palavra.

  1. Entrada padrão (também conhecida como stdin) está por padrão conectada ao teclado. Em outras palavras, o teclado é o dispositivo de entrada padrão para inserir comandos na linha de comando.
  2. Saída padrão (também conhecida como stdout) está por padrão conectada à tela, o dispositivo que “recebe” a saída dos comandos e os exibe na tela.
  3. 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.

Input and Output Example

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 importante a entender é que esses arquivos, assim como outros, podem ser redirecionados. 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á que você armazene no disco, por exemplo, a saída de comandos para processamento ou análise posterior.

Para redirecionar stdin (fd 0), stdout (fd 1) ou stderr (fd 2), estão disponíveis os seguintes operadores.

Redirection Operator Effect
> Redirects standard output to a file containing standard output. If the destination file exists, it will be overwritten.
>> Appends standard output to a file.
2> Redirects standard error to a file containing standard output. If the destination file exists, it will be overwritten.
2>> Appends standard error to the existing file.
&> Redirects both standard output and standard error to a file; if the specified file exists, it will be overwritten.
< Uses the specified file as standard input.
<> The specified file is used for both standard input and standard output.

Ao contrário do redirecionamento, a pipelining é realizada adicionando uma barra vertical (|) após um comando e antes de outro.

Lembre-se:

  1. Redirecionamento é usado para enviar a saída de um comando para um arquivo, ou enviar um arquivo como entrada para um comando.
  2. Pipelining é usado para enviar a saída de um comando para outro comando como entrada.

Exemplos de Redirecionamento e Pipelining

Exemplo 1: Redirecionando a saída de um comando para um arquivo

Às vezes, você precisará iterar sobre uma lista de arquivos. Para fazer isso, você pode salvar essa lista em um arquivo e, em seguida, ler esse arquivo linha por linha. Embora seja verdade que você pode iterar diretamente sobre a saída de ls, este exemplo serve para ilustrar o redirecionamento.

# ls -1 /var/mail > mail.txt
Redirect output of command tot a file
Exemplo 2: Redirecionando stdout e stderr para /dev/null

Caso queiramos evitar que tanto stdout quanto stderr sejam exibidos na tela, podemos redirecionar ambos os descritores de arquivo para /dev/null. Observe como a saída muda quando a redireção é implementada para o mesmo comando.

# ls /var /tecmint
# ls /var/ /tecmint &> /dev/null
Redirecting stdout and stderr ouput to /dev/null
Exemplo 3: Usando um arquivo como entrada para um comando

Enquanto a sintaxe clássica do comando cat é a seguinte.

# cat [file(s)]

Também é possível enviar um arquivo como entrada, usando o operador de redirecionamento correto.

# cat < mail.txt
cat command example
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 ser capaz de localizar um determinado arquivo ou processo rapidamente, você vai querer encadear a listagem para o grep.

Observe que usamos dois encadeamentos no exemplo a seguir. O primeiro procura a palavra-chave necessária, enquanto o segundo eliminará o próprio comando grep dos resultados. Este exemplo lista todos os processos associados ao usuário apache.

# ps -ef | grep apache | grep -v grep
Send output of command as input to another

Source:
https://www.tecmint.com/file-and-directory-management-in-linux/