Serie RHCSA: Come eseguire la gestione dei file e delle directory – Parte 2

In questo articolo, RHCSA Parte 2: Gestione dei file e delle directory, esamineremo alcune competenze essenziali richieste nelle attività quotidiane di un amministratore di sistema.

RHCSA: Perform File and Directory Management – Part 2

Creare, eliminare, copiare e spostare file e directory

La gestione dei file e delle directory è una competenza fondamentale che ogni amministratore di sistema dovrebbe possedere. Questo include la capacità di creare / eliminare file di testo da zero (il nucleo di ogni configurazione di programma) e directory (dove si organizzeranno file e altre directory) e di scoprire il tipo di file esistenti.

Il comando touch può essere utilizzato non solo per creare file vuoti, ma anche per aggiornare gli orari di accesso e di modifica dei file esistenti.

touch command example

Puoi utilizzare file [nomefile] per determinare il tipo di file (questo sarà utile prima di avviare il tuo editor di testo preferito per modificarlo).

file command example

e rm [nomefile] per eliminarlo.

rm command example

Per quanto riguarda le directory, puoi creare directory all’interno di percorsi esistenti con mkdir [directory] o creare un percorso completo con mkdir -p [/percorso/completo/alla/directory].

mkdir command example

Quando si tratta di rimuovere directory, devi assicurarti che siano vuote prima di eseguire il comando rmdir [directory], o utilizzare l’opzione più potente (gestire con attenzione!) rm -rf [directory]. Quest’ultima opzione rimuoverà forzatamente in modo ricorsivo il [directory] e tutti i suoi contenuti, quindi usala a tuo rischio e pericolo.

Redirezione di Input e Output e Pipeline

L’ambiente della riga di comando fornisce due funzionalità molto utili che consentono di reindirizzare l’input e l’output dei comandi da e verso file, e di inviare l’output di un comando a un altro, chiamate rispettivamente ridirezione e tubatura.

Per comprendere questi due concetti importanti, dobbiamo prima capire i tre tipi più importanti di flussi di I/O (Input e Output) di caratteri, che sono in realtà file speciali, nel senso *nix della parola.

  1. Input standard (alias stdin) è di default collegato alla tastiera. In altre parole, la tastiera è il dispositivo di input standard per inserire comandi nella riga di comando.
  2. Output standard (alias stdout) è di default collegato allo schermo, il dispositivo che “riceve” l’output dei comandi e li visualizza sullo schermo.
  3. Errore standard (alias stderr), è dove di default vengono inviati i messaggi di stato di un comando, che è anche lo schermo.

Nell’esempio seguente, l’output di ls /var viene inviato a stdout (lo schermo), così come il risultato di ls /tecmint. Ma in quest’ultimo caso, è stderr che viene mostrato.

Input and Output Example

Per identificare più facilmente questi file speciali, a ciascuno di essi viene assegnato un descrittore di file, una rappresentazione astratta che viene utilizzata per accedervi. La cosa essenziale da capire è che questi file, proprio come gli altri, possono essere reindirizzati. Ciò significa che è possibile catturare l’output da un file o script e inviarlo come input a un altro file, comando o script. Questo ti permetterà di memorizzare su disco, ad esempio, l’output dei comandi per un successivo trattamento o analisi.

Per reindirizzare stdin (fd 0), stdout (fd 1) o stderr (fd 2), sono disponibili i seguenti operatori.

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.

A differenza del reindirizzamento, la pipeline viene eseguita aggiungendo una barra verticale (|) dopo un comando e prima di un altro.

Ricorda:

  1. Il reindirizzamento viene utilizzato per inviare l’output di un comando a un file o per inviare un file come input a un comando.
  2. La pipeline viene utilizzata per inviare l’output di un comando a un altro comando come input.

Esempi di reindirizzamento e pipeline

Esempio 1: Reindirizzare l’output di un comando su un file

Ci saranno momenti in cui sarà necessario iterare su un elenco di file. Per farlo, è possibile prima salvare tale elenco su un file e quindi leggere quel file riga per riga. Sebbene sia vero che è possibile iterare direttamente sull’output di ls, questo esempio serve a illustrare il reindirizzamento.

# ls -1 /var/mail > mail.txt
Redirect output of command tot a file
Esempio 2: Reindirizzare sia stdout che stderr su /dev/null

Nel caso in cui vogliamo impedire che sia visualizzato sia lo stdout che lo stderr sullo schermo, possiamo reindirizzare entrambi i descrittori di file a /dev/null. Nota come l’output cambia quando viene implementato il reindirizzamento per lo stesso comando.

# ls /var /tecmint
# ls /var/ /tecmint &> /dev/null
Redirecting stdout and stderr ouput to /dev/null
Esempio 3: Utilizzo di un file come input per un comando

Mentre la sintassi classica del comando cat è la seguente.

# cat [file(s)]

Puoi anche inviare un file come input, utilizzando l’operatore di reindirizzamento corretto.

# cat < mail.txt
cat command example
Esempio 4: Inviare l’output di un comando come input a un altro

Se hai una directory o un elenco di processi grandi e vuoi essere in grado di individuare un determinato file o processo in un colpo d’occhio, vorrai incanalare l’elenco a grep.

Nota che utilizziamo due pipeline nell’esempio seguente. La prima cerca la parola chiave richiesta, mentre la seconda eliminerà il comando grep effettivo dai risultati. Questo esempio elenca tutti i processi associati all’utente 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/