Ricerca nel sito web

Serie RHCSA: Come eseguire la gestione di file e directory - Parte 2


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

Crea, elimina, copia e sposta file e directory

La gestione di file e directory è una competenza fondamentale che ogni amministratore di sistema dovrebbe possedere. Ciò include la possibilità di creare/eliminare da zero file di testo (il nucleo della configurazione di ciascun programma) e directory (dove organizzerai 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 i tempi di accesso e modifica dei file esistenti.

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

e rm [nomefile] per eliminarlo.

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

Quando si tratta di rimuovere directory, è necessario assicurarsi che siano vuote prima di eseguire il comando rmdir [directory] oppure utilizzare il comando più potente (maneggiare con cura!) rm -rf [directory]. Quest'ultima opzione forzerà la rimozione ricorsiva della [directory] e di tutto il suo contenuto, quindi utilizzala a tuo rischio e pericolo.

Reindirizzamento e pipeline di input e output

L'ambiente a riga di comando fornisce due funzionalità molto utili che consentono di reindirizzare l'input e l'output di comandi da e verso file e di inviare l'output di un comando a un altro, chiamato reindirizzamento e pipeline, rispettivamente.

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

  1. L'input standard (noto anche come stdin) è collegato per impostazione predefinita alla tastiera. In altre parole, la tastiera è il dispositivo di input standard per immettere comandi nella riga di comando.
  2. L'output standard (noto anche come stdout) è per impostazione predefinita collegato allo schermo, il dispositivo che “riceve” l'output dei comandi e li visualizza sullo schermo.
  3. Errore standard (noto anche come stderr), è il punto a cui vengono inviati per impostazione predefinita 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 viene mostrato stderr.

Per identificare più facilmente questi file speciali, a ciascuno 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 puoi acquisire l'output da un file o uno script e inviarlo come input a un altro file, comando o script. Ciò consentirà di archiviare su disco, ad esempio, l'output dei comandi per elaborazioni o analisi successive.

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

Redirection Operator

Effetto

>

Reindirizza l'output standard a un file contenente l'output standard. Se il file di destinazione esiste, verrà sovrascritto.

>>

Aggiunge l'output standard a un file.

2>

Reindirizza l'errore standard a un file contenente l'output standard. Se il file di destinazione esiste, verrà sovrascritto.

2>>

Aggiunge l'errore standard al file esistente.

&>

Reindirizza sia l'output standard che l'errore standard su un file; se il file specificato esiste, verrà sovrascritto.

<

Utilizza il file specificato come input standard.

<>

Il file specificato viene utilizzato sia per l'input standard che per l'output standard.

A differenza del reindirizzamento, il pipelining viene eseguito aggiungendo una barra verticale (|) dopo un comando e prima di un altro.

Ricordare:

  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. Il pipelining viene utilizzato 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 dovrai scorrere un elenco di file. Per fare ciò, puoi prima salvare l'elenco in un file e poi leggere il file riga per riga. Sebbene sia vero che è possibile eseguire direttamente l'iterazione sull'output di ls, questo esempio serve a illustrare il reindirizzamento.

ls -1 /var/mail > mail.txt

Esempio 2: reindirizzare sia stdout che stderr a /dev/null

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

ls /var /tecmint
ls /var/ /tecmint &> /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

Esempio 4: invio dell'output di un comando come input a un altro

Se disponi di una directory di grandi dimensioni o di un elenco di processi e desideri essere in grado di individuare un determinato file o processo a colpo d'occhio, ti consigliamo di convogliare l'elenco in grep.

Tieni presente che utilizziamo to pipeline nell'esempio seguente. Il primo cerca la parola chiave richiesta, mentre il secondo eliminerà il comando grep effettivo dai risultati. Questo esempio elenca tutti i processi associati all'utente Apache.

ps -ef | grep apache | grep -v grep