16 BASH – Operazioni su files e cartelle

4 Marzo, 2024 (15:47) | BASH, Linux | By: sargonsei

16 BASH – Operazioni su files e cartelle
Cose da sapere prima di cominciare:
Il carattere grafico “~” (tilde) si ottiene digitando la combinazione di tasti [AltGr]+[ì].
Il tasto [AltGr] si trova a destra della barra spaziatrice; il tasto [ì] (i accentata) si trova a destra dell’apostrofo.

16.1 Elencare files e cartelle esistenti
ls                    # Elenca files e cartelle contenuti nella cartella di lavoro
ls ~                  # Elenca files e cartelle contenuti nella /home dell'utente
ls /percorso/completo # Elenca files e cartelle contenuti nella cartella "/percorso/completo"
dir                    # Elenca files e cartelle contenuti nella cartella di lavoro 
dir ~                  # Elenca files e cartelle contenuti nella /home dell'utente 
dir /percorso/completo # Elenca files e cartelle contenuti nella cartella "/percorso/completo"

16.2 Cambiare cartella di lavoro
cd /                  # La cartella principale diventa la cartella di lavoro
cd ~                  # La /home dell'utente diventa la cartella di lavoro
cd ..                 # La cartella in cui è contenuta la cartella di lavoro diventa la cartella di lavoro
cd /percorso/completo # La cartella "/percorso/completo" diventa la cartella di lavoro

16.3 Creare, spostare e rimuovere files e cartelle
cp file1 file2        # Crea il file file2 identico a file1
cp file1 file2 dir    # Copia file1 e file2 all'interno della cartella dir
mv file1 file2        # Rinomina file2 il documento file1
rm file1 file2        # Rimuove file1 e file2
rm dir1 dir2          # Rimuove le cartelle dir1 e dir2
rm -r dir1 dir2       # Rimuove ricorsivamente le cartelle dir1 e dir2 ed il loro contenuto
mkdir dir1 dir2       # Crea le cartelle dir1 e dir2

16.4 Visualizzare il percorso completo di files e cartelle specifiche
pwd                   # Visualizza percorso assoluto della cartella di lavoro corrente
find -name file1      # Visualizza percorso assoluto di file1 cercandolo cartella di lavoro e relative sottocartelle
find -iname file1     # Visualizza percorso assoluto di file1 senza distinguere lettere maiuscole da minuscole
grep --include=\*.{txt,cfg} -rnw -e "Testo" # Cerca ricorsivamente files che hanno estensione .txt o .cfg e contengono "Testo"
grep --include=\*.{txt,cfg} -irnw -e "Testo" # Cerca ricorsivamente files che hanno estensione .txt o .cfg e contengono "Testo" o "tEsTo"

16.5 Omissione di parte dell’output
L’output della shell BASH viaggia su 2 canali:
Canale 1: Output Standard (visualizza l’output del comando stesso)
Canale 2: Output Error (visualizza l’output di eventuali messaggi di errore del comando stesso).
Di default, l’output di entrambi i canali viene mostrato sulla shell BASH ma, dirottando l’output di un canale verso [/dev/nul], è possibile visualizzare l’output di un solo canale.
Seguono alcuni esempi.

:~> ls Pubblici # Visualizza il contenuto della cartella [Pubblici] oppure visualizza un errore
testo.txt
:~> ls pubblici # Visualizza il contenuto della cartella [pubblici] oppure visualizza un errore
ls: impossibile accedere a 'pubblici': File o directory non esistente
:~> ls Pubblici 1> /dev/null # NON esegue alcun comando. Se il comando NON può essere eseguito, visualizza un errore
:~> ls pubblici 1> /dev/null # NON esegue alcun comando. Se il comando NON può essere eseguito, visualizza un errore
ls: impossibile accedere a 'pubblici': File o directory non esistente
:~> ls Pubblici 2> /dev/null # Visualizza il contenuto della cartella [Pubblici]. Se il comando NON può essere eseguito, NON visualizza un errore
testo.txt
:~> ls pubblici 2> /dev/null # Visualizza il contenuto della cartella [Pubblici]. Se il comando NON può essere eseguito, NON visualizza un errore
:~>

16.6 Reindirizzamento dell’output verso un file di testo
Di default, l’output della shell BASH viene visualizzato sulla shell BASH, ma è possibile dirottare l’output di un canale verso un file di testo.
Se non si specifica quale sia il canale il cui output deve essere dirottato verso il file di testo, di default viene dirottato solo l’output del canale 1 (Standard Output).
Per esempio: volendo creare, nella cartella di lavoro, un file di testo chiamato [elenco.txt] contenente l’output del comando [ls Pubblici], occorre impartire il comando:
ls Pubblici > elenco.txt # Crea il file [elenco.txt] contenente l'output del comando [ls Pubblici]
ls Pubblici >> elenco.txt # Aggiunge al file [elenco.txt] l'output del comando [ls Pubblici]

In entrambi i casi, solo l’output del canale 1 (Standard Output) verrà inserito nel file di testo; eventuali messaggi di errore verranno visualizzati all’interno della shell BASH.

Volendo creare il file [elencoC1.txt] contenente l’output del comando [ls Pubblici] ed il file [elencoC2.txt] contenente eventuali messaggi di errore conseguenti l’esecuzione del comando [ls Pubblici], impartire il comando
ls Pubblici > elencoC1.txt 2> elencoC2.txt
Volendo aggiungere al file [elencoC1.txt] l’output del comando [ls Pubblici] ed al file [elencoC2.txt] eventuali messaggi di errore conseguenti l’esecuzione del comando [ls Pubblici], impartire il comando
ls Pubblici >> elencoC1.txt 2>> elencoC2.txt
Si precisa che: avendo dirottato verso files di testo sia lo Standard Output, sia l’Error Output, la shell BASH mostrerà unicamente il comando impartito ed il prompt; per vedere l’output del comando, ed eventuali messaggi di errore, sarà necessario visualizzare il contenuto dei files corrispondenti.