Série RHCSA: Como Gerenciar Arquivos e Diretórios – Parte 2

Neste artigo, RHCSA Parte 2: Gerenciamento de arquivos e diretórios, iremos rever algumas habilidades essenciais que são necessárias nas tarefas do dia a dia de um administrador de sistemas.

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 sistemas deve possuir. Isso inclui a capacidade de criar / excluir arquivos de texto do zero (o núcleo de cada configuração de programa) e diretórios (onde você irá 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.

touch command example

Você pode usar file [nome do arquivo] para determinar o tipo de arquivo (isso será útil antes de abrir o 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 use a opção mais poderosa (manuseie com cuidado!) rm -rf [diretório]. Esta última opção irá remover de forma recursiva o [diretório] e todo o seu conteúdo – então use-a por sua conta e risco.

Redirecionamento de Entr

O ambiente de linha de comando oferece duas características 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 precisamos entender os três tipos mais importantes de fluxos de E/S (Entrada e Saída) de caracteres, que são na verdade arquivos especiais, no sentido *nix da palavra.

  1. Entrada padrão (também conhecida como stdin) é por padrão ligada 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) é por padrão ligada à 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 do ls /var é enviada para stdout (a tela), assim como o resultado de ls /tecmint. Mas neste último caso, é 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 usada para acessá-los. O essencial é 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), os seguintes operadores estão disponíveis.

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 canalização é realizada adicionando uma barra vertical (|) após um comando e antes de outro.

Lembre-se:

  1. O redirecionamento é usado para enviar a saída de um comando para um arquivo, ou para enviar um arquivo como entrada para um comando.
  2. A canalização é usada para enviar a saída de um comando para outro comando como entrada.

Exemplos de Redirecionamento e Canalização

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

Haverá momentos em que você precisará iterar sobre 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ê possa iterar diretamente sobre a saída do ls, este exemplo serve para ilustrar o redirecionamento.

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

Caso queiramos impedir 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)]

Você também pode 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ê tem um grande diretório ou listagem de processos e deseja 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 comando grep real 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/