Lab3 system utilities
title: Lab 3 - Utility di Sistema comuni author: Wale Soyinka contributors: Steven Spencer, Ganna Zhyrnova, Franco Colussi tested on: Tutte le versioni tags: - lab exercise - system utilities - cli
Obiettivi¶
Dopo aver completato questo laboratorio, sarete in grado di
- Utilizzare le utilità di sistema comuni presenti sulla maggior parte dei sistemi Linux
Tempo stimato per completare questo laboratorio: 70 minuti
Utilità di sistema comuni presenti nei sistemi Linux¶
Cos'è una Utility di Sistema?¶
In un ambiente Linux, le utility di sistema sono programmi e comandi che consentono di gestire, monitorare e ottimizzare il funzionamento del sistema operativo. Questi strumenti sono essenziali per amministratori di sistema, sviluppatori e utenti avanzati, poiché semplificano attività quali la gestione dei file, il controllo dei processi, la configurazione di rete e molto altro ancora.
Al posto d'interfacce grafiche, molte utilità sono accessibili tramite la riga di comando, offrendo maggiore flessibilità, automazione e controllo sul sistema.
Gli esercizi di questo laboratorio riguardano l'utilizzo di alcune utilità di sistema di base che sia gli utenti che gli amministratori devono conoscere bene. La maggior parte dei comandi viene utilizzata per navigare e manipolare il file system. Il file system è costituito da file e directory.
Gli esercizi tratteranno l'utilizzo delle utilità –pwd, cd, ls, rm, mv, ftp, cp, touch, mkdir, file, cat, find, e locate.
Esercizi¶
1. Navigare nel file system con cd¶
Il comando cd (abbreviazione di Change Directory) è uno dei comandi più comunemente utilizzati nei sistemi Linux e Unix-like. Consente di spostarsi tra le directory del file system, permettendo agli utenti di navigare tra le cartelle e accedere ai file in esse contenuti.
Il comando cd è essenziale per lavorare nella shell Linux, poiché consente di esplorare e organizzare il file system in modo efficiente.
Come si usa cd¶
-
Accedere al computer come root
-
Passare dalla directory corrente alla directory /etc.
[root@localhost root]# cd /etc -
Si noti che il prompt è cambiato da "[root@localhost root]#" a: "[root@localhost etc]#"
-
Passare alla directory
/usr/local/[root@localhost etc]# cd /usr/local [root@localhost local]#Domanda
Cosa è cambiato nel tuo prompt?
-
Tornare alla directory home di root
[root@localhost local]# cd /root -
Passare nuovamente alla directory
/usr/local/. Digitare:[root@localhost root]# cd /usr/local -
Per passare alla directory superiore della directory locale, digitare
cd ...[root@localhost local]# cd ..Domanda
Qual è la directory a monte della directory
/usr/local/? -
Per tornare rapidamente alla directory home di root, digitare "cd" senza alcun argomento.
[root@localhost usr]# cd [root@localhost root]#
2. Visualizzare il path con pwd¶
Il comando pwd (Present Working Directory) mostra all'utente il percorso (path) assoluto della directory corrente all'interno del file system. Viene utilizzato per identificare la posizione corrente quando si lavora col terminale e si desidera sapere esattamente dove ci si trova. Questo comando è essenziale per navigare nel file system, specialmente quando si lavora con percorsi complessi o script automatizzati.
Come utilizzare pwd¶
-
Per scoprire la vostra directory di lavoro attuale, digitare:
[root@localhost root]# pwd /root -
Passare alla directory
/usr/local/utilizzando il comandocd:[root@localhost root]# cd /usr/local -
Utilizzare
pwdper trovare la vostra directory di lavoro attuale:[root@localhost local]# pwd /usr/local -
Tornare alla directory home di root:
[root@localhost root]# cd
3. Creare cartelle con mkdir¶
Il comando mkdir (Make Directory) consente di creare nuove directory (cartelle) all'interno del file system. In questo esercizio si creeranno due cartelle denominate cartella1 e cartella2.
Come usare mkdir¶
-
Creare la prima directory denominata
folder1[root@localhost root]# mkdir folder1 -
Creare la seconda directory denominata
folder2[root@localhost root]# mkdir folder2 -
Ora spostatevi dalla vostra directory di lavoro nella directory “folder1” che avete creato sopra.
[root@localhost root]# cd folder1 -
Visualizzare la directory di lavoro corrente.
[root@localhost folder1]# pwd /root/folder1Domanda
Senza uscire dalla directory corrente, passare alla directory “folder2”. Qual è il comando per farlo?
-
Tornare alla directory home di root.
4. Modificare i metadata dei file con touch¶
Il comando touch è uno strumento che consente di creare nuovi file vuoti o modificare le date di accesso/modifica dei file esistenti, oltre a consentire usi avanzati nella creazione di script e nell'automazione. Il nome touch deriva dall'idea di “toccare” i metadati del file senza necessariamente modificarne il contenuto.
I file file11, file12, file21 e file22 verranno creati nelle cartelle create sopra.
Come utilizzare touch¶
-
Cambiare directory, ovvero
cdallafolder1e craere il file file11:[root@localhost folder1]# touch file11 -
Mentre si è ancora nella
folder1creare file12:[root@localhost folder1]# touch file12 -
Ora ritornare alla directory home di root.
-
cdnella folder2 e creare "file21" e "file22"[root@localhost folder2]# Touch file21 file22 -
Tornare alla directory home di root.
5. Elencare le directory con ls¶
Il comando ls (List) è uno dei comandi più basilari e ampiamente utilizzati nei sistemi Linux e Unix-like. Consente di visualizzare il contenuto di una directory, mostrando file e sottodirectory con varie opzioni di formattazione e ordinamento.
Come usare ls¶
-
Digitare
lsnella directory home di root:[root@localhost root]# lsDomanda
Elenca il contenuto della directory
-
Passare alla directory "folder1"
-
Elencare il contenuto della directory
folder1. Digitarels[root@localhost folder1]# ls file11 file12 -
Passare alla directory
folder2ed elencare il suo contenuto: -
Tornare alla directory home ed elencare tutti i file e le cartelle nascosti:
[root@localhost folder2]# cd [root@localhost root]# ls –a .. .bash_history .bash_logout .bash_profile .bashrc folder1 folder2 .gtkrc .kde screenrc -
Per ottenere un elenco lungo o dettagliato di tutti i file e le cartelle presenti nella directory home, digitare:
[root@localhost root]# ls –al total 44 drwx------ 5 root root 4096 May 8 10:15 . drwxr-xr-x 8 root root 4096 May 8 09:44 .. -rw------- 1 root root 43 May 8 09:48 .bash_history -rw-r--r-- 1 root root 24 May 8 09:44 .bash_logout -rw-r--r-- 1 root root 191 May 8 09:44 .bash_profile -rw-r--r-- 1 root root 124 May 8 09:44 .bashrc drwxrwxr-x 2 root root 4096 May 8 10:17 folder1 drwxrwxr-x 2 root root 4096 May 8 10:18 folder2 ………………………..
6. Spostare i file con mv¶
Il comando mv (Move) fornisce uno strumento per la gestione dei file nel sistema. La sua funzione principale è quella di spostare o rinominare file e directory all'interno del file system. Questo comando è particolarmente utile per riorganizzare la struttura delle directory, eseguire operazioni batch su gruppi di file e gestire i backup in modo efficiente.
Come usare mv¶
-
Passare alla directory "folder1" ed elencare il suo contenuto:
[root@localhost root]# cd folder1 [root@localhost folder1] ls file11 file12 -
Si rinominino i file file11 e file12 nella directory “folder1” rispettivamente in temp_file11 e temp_file12:
[root@localhost folder1]# mv file11 temp_file11 -
Elencare nuovamente il contenuto della folder1.
[root@localhost folder1]# lsDomanda
Annotare i contenuti:
-
Rinominare il file12 in temp_file12:
[root@localhost folder1]# mv file12 temp_file12 -
Senza cambiare directory, rinominare il file21 e il file22 nella "folder2" rispettivamente in temp_file21 e temp_file22:
[root@localhost folder1]# mv /root/folder2/file21 /root/folder2/temp_file21 [root@localhost folder1]# mv /root/folder2/file22 /root/folder2/temp_file22 -
Senza cambiare la directory corrente, elencare il contenuto della folder2.
Domanda
Qual è il comando per farlo? Elencare anche l'output del comando?
7. Copiare file con cp¶
Il comando cp (Copia) consente di duplicare file e directory da una posizione all'altra nel file system, mantenendo intatto il file originale. La sua facilità d'uso e versatilità lo rendono indispensabile sia per le operazioni quotidiane che per le attività di amministrazione di sistema più complesse. Tra le caratteristiche più utili del comando cp vi è la capacità di preservare gli attributi originali dei file durante la copia, inclusi permessi, timestamp e informazioni sul proprietario. Questa funzione è particolarmente importante quando si lavora con file di configurazione o quando è necessario mantenere intatte determinate proprietà dei documenti.
Come usare cp¶
-
Passa alla directory
folder2. -
Copiare il contenuto della cartella
folder2(temp_file21 e temp_file22) nella cartellafolder1:[root@localhost folder2]# cp temp_file21 temp_file22 ../folder1 -
Elencare il contenuto della
folder1.[root@localhost folder2]# ls ../folder1 temp_file11 temp_file12 temp_file21 temp_file22 -
Elencare il contenuto della
folder2. Si noti che le copie originali di temp_file21 e temp_file22 rimangono nellafolder2.[root@localhost folder2]# ls temp_file21 temp_file22
8. Determinare il tipo di file con file¶
Il comando file è uno strumento diagnostico che consente di determinare la tipologia di un file analizzandone il contenuto. A differenza delle estensioni dei file, che possono essere modificate o fuorvianti, questo comando esamina la struttura effettiva dei dati per identificarne con precisione la natura. Una delle caratteristiche più importanti del comando file è la sua capacità di distinguere tra diversi tipi di file di testo, identificando, ad esempio, script di shell, codice sorgente in vari linguaggi di programmazione, file XML o JSON. Per i file binari, è in grado di riconoscere eseguibili, librerie condivise, immagini in vari formati e molti altri tipi di dati strutturati.
Come utilizzare file¶
-
Tornare alla directory home.
-
Per verificare se
cartella1è un file o una directory, digitare:[root@localhost root]# file folder1 folder1: directory -
Passare alla cartella
folder1 -
Utilizzare l'utilità
fileper determinare il tipo di file per temp_file11:[root@localhost folder1]# file temp_file11 temp_file11: empty -
Utilizzare l'utilità
fileper scoprire il tipo di file di tutti i file presenti nellafolder1. Elencare qui: -
Passate alla directory
/etc:[root@localhost folder1]# cd /etc -
Utilizzare l'utilità
fileper scoprire il tipo di file del file passwd.[root@localhost etc]# file passwdDomanda
Di che tipo di file si tratta?
9. Elenca e concatena i file con cat¶
Il comando cat (abbreviazione di Concatenate) è uno strumento essenziale per la gestione dei file di testo in Linux. La sua funzione principale è quella di visualizzare il contenuto di uno o più file direttamente a terminale, ma può anche essere utilizzato per creare, unire o copiare file. Il comando cat è particolarmente utile in combinazione con altri strumenti (come grep o more) per elaborare o filtrare testi direttamente dal terminale. Nonostante la sua semplicità, è uno dei comandi più utilizzati per la rapida manipolazione dei file. Si utilizza cat insieme al simbolo di reindirizzamento “>” per creare un file.
Usare cat per creare un file¶
-
Passare alla directory /root/folder1
-
Creare un nuovo file di testo chiamato first.txt
[root@localhost folder1]# cat > first.txt -
Digitare la frase seguente nel prompt vuoto e premere Enter.
Questa è una riga di first.txt !! -
Premere contemporaneamente i tasti Ctrl+C.
-
Digitare
cat first.txtper leggere il testo appena digitato:[root@localhost folder1]# cat first.txt Questa è una riga di first.txt !! -
Creare un altro file chiamato "second.txt" utilizzando
cat. Digitare il seguente testo nel file – “Questa è una riga di second.txt !!”Domanda
Qual è il comando per farlo?
Usare cat per concatenare insieme i file¶
-
Se si vuole concatenare i file first.txt e second.txt. Digitare:
[root@localhost folder1]# cat first.txt second.txtDomanda
Qual è il risultato?
10. Trasferire file con ftp¶
Il comando ftp (File Transfer Protocol) è uno strumento a riga di comando che consente di trasferire file tra sistemi remoti e locali. Sebbene sia stato parzialmente sostituito da protocolli più moderni e sicuri come SFTP e SCP, rimane utile in contesti legacy o con server che supportano solo FTP.
L'FTP trasmette i dati in testo chiaro, comprese le credenziali e i contenuti, quindi non è consigliato per i trasferimenti sensibili.
Sebbene l'FTP sia ancora utilizzato in alcuni ambienti, per operazioni sicure sono preferibili i protocolli crittografati.
In questo esercizio imparerai come accedere in modo anonimo a un server FTP e scaricare un file dal server utilizzando un programma client FTP.
Nota
Per poter seguire questo esercizio specifico, che richiede un server FTP disponibile e raggiungibile, è necessario aver completato gli esercizi del laboratorio precedente.
Come usare ftp¶
-
Accedere al computer come root
-
Passare alla directory
/usr/local/src/ -
Creare una nuova directory chiamata
downloadsall'interno della directory/usr/local/src/.Domanda
Qual è il comando per farlo?
-
Andate nella directory
downloadsappena creata[root@localhost src]# cd downloads -
Digitare
ftpper avviare il client ftp:[root@localhost downloads]# ftp ftp> -
Per connettersi al server FTP, digitare:
ftp> open < server-address> (Obtain the <server-address> from your instructor) ……… 220 localhost.localdomain FTP server (Version wu-2.6.2-5) ready. ……….. -
Accedere come utente anonimo. Digitare “anonymous” nel prompt:
Name (10.4.51.29:root): anonymous -
Digitare un indirizzo e-mail qualsiasi alla richiesta della password e premere Invio
Password: *************** 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> -
Passare alla modalità binaria. Digitare:
ftp> binaryDomanda
Qual è l'output del comando binario e cos'è la “modalità binaria”?
-
Elencare le directory correnti sul server ftp. Digitare
lsnel prompt ftp:ftp> ls 227 Entering Passive Mode (10,0,4,5,16,103). 125 Data connection already open; Transfer starting. 11-23-43 10:23PM <DIR> images 11-02-43 02:20PM <DIR> pub 226 Transfer complete. -
Passare alla directory
pub. Digitare:ftp> cd pub -
Utilizzare il comando
lsper elencare i file e le directory presenti nella directorypubDomanda
Quanti file e directory ci sono adesso?
-
Scaricare il file denominato “hello-2.1.1.tar.gz” in locale. Digitare “yes” quando richiesto.
ftp> mget hello-2.1.1.tar.gz mget hello-2.1.1.tar.gz? yes 227 Entering Passive Mode (10,0,4,5,16,252). 125 Data connection already open; Transfer starting. 226 Transfer complete. 389363 bytes received in 0.0745 secs (5.1e+03 Kbytes/sec) -
Disconnettersi dal server FTP e chiudere il client ftp. Digitare:
ftp> bye -
Si verrà reindirizzati alla shell locale.
-
Assicuratevi di trovarvi ancora nella directory
downloadsdella vostra macchina in locale.Domanda
Elencare i file nella cartella downloads.
11. Utilizzo del reindirizzamento¶
La maggior parte delle utility e dei comandi utilizzati in Linux inviano il loro output allo schermo. Lo schermo è chiamato standard output (stdout). Il reindirizzamento consente di inviare l'output altrove – ad esempio in un file.
Ogni programma avviato su un sistema Linux ha tre descrittori di file aperti, stdin (0), stdout (1) e stderr (2). È possibile reindirizzarli o “pipe” (ricondurli) singolarmente. I simboli di reindirizzamento sono ++maggiore++ e ++minore++.
Come usare il reindirizzamento¶
-
Assicurarsi di essere ancora nella directory
folder1. -
Si utilizzerà il reindirizzamento dell'output per reindirizzare l'output del comando
ls(lista) a un file di testo denominato myredirects:[root@localhost folder1]# ls > myredirects -
Esaminare il contenuto del nuovo file (myredirects) creato nella directory
folder1.[root@localhost folder1] # cat myredirects temp_file11 temp_file12 temp_file21 temp_file22 myredirects -
Ora il risultato del comando file verrà reindirizzato nello stesso file. Si vuole scoprire il tipo di file per temp_file11 nella directory
folder1e inviare l'output al file myredirects:[root@localhost folder1]# file temp_file11 > myredirects -
Esaminare il contenuto del file myredirects.
Domanda
È cambiato. Cos'è successo?
-
Se si vuole evitare che si verifichi quanto sopra, si utilizzerà il doppio simbolo di reindirizzamento >>. Questo accoderà (aggiungerà) il nuovo output al file invece di sostituirlo. Fate una prova:
[root@localhost folder1]# ls >> myredirects -
Ora si esamini nuovamente il contenuto del file myredirects utilizzando
cat.Domanda
Scrivere qui il suo contenuto:
Utilizzare il reindirizzamento per sopprimere l'output di un comando¶
I concetti trattati in questa sezione saranno molto utili in Linux, quindi vi invitiamo a prestare particolare attenzione. Potrebbe apparire un po' complicato.
Ci saranno casi in cui non si vuole che l'utente veda l'output di un comando, ad esempio un messaggio di errore. Accade spesso infatti che i messaggi di errore strani spaventino gli utenti comuni. In questo esercizio si dirotterà l'output dei comandi al dispositivo null ( /dev/null/ ). Il dispositivo null è simile a un “bit bucket”. Tutto ciò che metti dentro scompare per sempre. È anche possibile inviare (o reindirizzare) l'output regolare dei comandi al dispositivo null.
Utilizzare le linee guida riportate di seguito:
| Reindirizzatore | Funzione |
|---|---|
| > file | Indirizza lo standard output al file |
| < file | Riceve come standard input dal file |
| Cmd1 \ | cmd2 |
| n> file | Indirizza il descrittore del file n al file |
| N< file | Imposta il file come descrittore del file N |
| >&n | Duplica lo standard output nel descrittore di file n |
| <&n | Duplica lo standard input dal descrittore del file n |
| &>file | Indirizza lo standard output e lo standard error nel file |
-
Assicurarsi di essere ancora nella directory
folder1. Utilizzare l'opzione di elenco esteso del comandolssu temp_file11:[root@localhost folder1]# ls –l temp_file11 -rw-r--r-- 1 root root 0 Jul 26 18:26 temp_file11 -
Reindirizzare l'output dello stesso comando sopra riportato (0>ls –l temp_file11) al dispositivo null.
[root@localhost folder1]# ls –l temp_file11 > /dev/nullNon si dovrebbe ottenere alcun risultato.
-
Ora, se per sbaglio viene digitato in modo errato il nome del file di cui si desidera visualizzare le informazioni, verrà visualizzato il seguente messaggio:
[root@localhost folder1]# ls –l te_file1 ls: te_file1: No such file or directoryQuanto sopra è il risultato del tipo di errore che il comando
lsha programmato di restituire. -
Esegure lo stesso comando di cui sopra con un nome file scritto in modo errato e reindirizzalo a
/dev/null.[root@localhost folder1]# ls -l te_file1 > /dev/null ls: te_file1: No such file or directoryDomanda
Cosa è successo qui? Perché l'output continua a essere visualizzato sullo schermo (stdout)?
-
Per vari motivi potresti voler sopprimere messaggi di errore come quello sopra riportato. Per farlo, digitare:
[root@localhost folder1]# ls –l te_file1 > /dev/null 2>&1Non otterrete alcun risultato. Questa volta vengono soppressi sia l'output standard che l'errore standard.
L'ordine di reindirizzamento è IMPORTANTE!!
Il reindirizzamento viene letto da sinistra a destra sulla riga di comando. La parte più a sinistra del simbolo di reindirizzamento - > invierà lo standard output (stdout) a
/dev/null. Quindi la parte più a destra del reindirizzamento -2>&1duplicherà lo standard error (2) nello standard output (1).Pertanto, il comando sopra riportato può essere letto come: reindirizza stdout(1) a “/dev/null” e poi copia stderr (2) a stdout
-
Per dimostrare ulteriormente l'importanza dell'ordine di reindirizzamento, prova:
[root@localhost folder1]# ls –l tem_file 2>&1 > order.txtUtilizzate il comando
catper esaminare il contenuto del file “order.txt”La parte più a sinistra – “2>&1” copierà l'errore standard nell'output standard. Quindi, la parte più a destra di quanto sopra – “ > order.txt” reindirizza stdout al file order.txt.
-
Provare questa variante del passaggio precedente:
[root@localhost folder1]# ls –l hgh_ghz 2> order2.txt > order2.txtDomanda
Esamina il file "order2.txt" e spiega cosa è successo?
-
Per inviare l'output standard e l'errore standard a file separati; Digitare:
[root@localhost folder1]# ls –l tep_f > standard_out 2> standard_errDomanda
Sono stati creati due nuovi file. Quali sono i nomi dei file e qual è il loro contenuto?
-
È possibile reindirizzare sia lo stdout che lo stderr allo stesso file utilizzando:
[root@localhost folder1]# ls –l te_fil &> standard_both
12. Cancellare file con rm¶
Il comando rm (Rimuovi) consente di eliminare definitivamente uno o più file, directory e relativi contenuti, senza possibilità di recupero se non tramite soluzioni di recupero esterne. È un comando potente, ma potenzialmente pericoloso se usato in modo improprio, poiché opera in modo irreversibile. Per questo motivo è importante utilizzarlo con cautela, controllando sempre i percorsi e i nomi dei file prima di eseguire l'operazione.
Utilizzerete rm per eliminare alcuni dei file creati negli esercizi precedenti.
Come si usa rm¶
-
Mentre si è ancora nella directory
folder1, eliminare il file standard_err. Digitare ++“y”++ alla richiesta di conferma:[root@localhost folder1]# rm standard_err rm: remove `standard_err'? y -
Eliminare il file standard_out. Per evitare che venga richiesta la conferma prima di eliminare un file, utilizzare l'opzione
–fcon il comandorm:[root@localhost folder1]# rm -f standard_out -
Tornare alla directory home (
/root) ed eliminare la directoryfolder2. Utilizzarermper eliminare una cartella è necessario utilizzare l'opzione–r:[root@localhost root]# rm -r folder2 rm: descend into directory 'folder2'? y rm: remove 'folder2/temp_file21'? y rm: remove 'folder2/temp_file22'? y rm: remove directory 'folder2'? yDomanda
Vi è stato nuovamente chiesto di confermare la rimozione di ogni singolo file nella directory e della directory stessa. Quale opzione si utilizzerà con il comando
rm –rper evitare che ciò accada?
13. Imparare vi¶
L'editor vi è uno degli editor di testo più potenti e diffusi disponibili su sistemi Linux e Unix-like. È uno strumento essenziale per amministratori di sistema e sviluppatori grazie alla sua efficienza e versatilità. A differenza di molti editor moderni, vi funziona principalmente in modalità testo, offrendo comandi rapidi e combinazioni di tasti che consentono di modificare i file con estrema precisione e velocità.
All'inizio la curva di apprendimento può essere ripida, ma una volta acquisita padronanza delle funzionalità di base, diventa uno strumento indispensabile per modificare file di configurazione, script e codice sorgente direttamente dal terminale.
vi è un mostro enorme che può fare praticamente tutto, compreso prepararti il caffè o la cioccolata calda!!
Invece di cercare di insegnarvi vi, questo esercizio vi indicherà uno strumento che vi consentirà di familiarizzare meglio con vi. Vi invitiamo a dedicare un po' di tempo alla lettura del tutorial online su vi (più precisamente su vim). Basta seguire le istruzioni.
Per imparare vi¶
-
Una volta effettuato l'accesso al sistema, digitare:
[root@localhost root]# vimtutor
14. Ricerca di file con find e locate¶
Questo esercizio tratterà due delle utility più diffuse utilizzate per la ricerca di file e directory nel file system. Si tratta dei comandi find e locate.
find¶
Il comando find consente di cercare file e directory all'interno del filesystem in base a una vasta gamma di criteri, quali nome, tipo, dimensione, data di modifica, autorizzazioni e molto altro ancora. La sua capacità di eseguire azioni sui risultati trovati, come eliminare, spostare o elaborare file, lo rende uno strumento indispensabile per gli amministratori di sistema e gli utenti avanzati.
La sintassi generale per find è:
find [path] [options] [criterion] [action]
Se non si specifica alcuna directory o percorso, find cercherà nella directory corrente. Se non si specifica alcun criterio, ciò equivale a “true”, quindi verranno trovati tutti i file. L'utilità find offre numerose opzioni per eseguire praticamente qualsiasi tipo di ricerca di un file. Di seguito sono elencate solo alcune delle opzioni, dei criteri e delle azioni disponibili.
| OPZIONI | DESCRIZIONE |
|---|---|
| -xdev | non effettua ricerche nelle directory situate su altri file system |
-mindepth <n> |
scende di almeno <n> livelli al di sotto della directory specificata prima di cercare i file |
-maxdepth <n> |
cerca i file che si trovano al massimo a <n> livelli sotto la directory specificata |
| -follow | segue i collegamenti simbolici se questi rimandano una directory |
| -daystart | quando si utilizzano test relativi al tempo (vedi sotto), prende come timestamp l'inizio del giorno corrente invece del valore predefinito (24 ore prima dell'ora corrente) |
| CRITERIO | DESCRIZIONE |
|---|---|
-type <type> |
cerca un determinato tipo di file; <type> può essere uno dei seguenti: f (file regolare), d (directory) l (collegamento simbolico), s (socket), b (file in modalità blocco), c (file in modalità carattere) o p (pipe con nome) |
-name <pattern> |
trova i file i cui nomi corrispondono a quelli specificati <pattern> |
-iname <pattern> |
come -nome, ma ignora le maiuscole e le minuscole |
-atime <n>, -amin <n> |
trova i file a cui è stato effettuato l'ultimo accesso <n> giorni fa (-atime) o <n> minuti fa (-amin). È anche possibile specificare +<n> o -<n>, nel qual caso la ricerca verrà effettuata rispettivamente sui file a cui si è avuto accesso al massimo o al minimo <n> giorni/minuti fa. |
-anewer <file> |
trova i file che sono stati aperti più recentemente rispetto al file <file> |
-ctime <n>, -cmin <n>, -cnewer <file> |
come per -atime, -amin e -anewer, ma si applica all'ultima volta in cui il contenuto del file è stato modificato |
-regex <pattern> |
uguale a -name, ma il pattern viene trattato come un'espressione regolare |
-iregex <pattern> |
uguale a -regex, ma ignora le maiuscole/minuscole |
| AZIONE | DESCRIZIONE |
|---|---|
| stampa semplicemente il nome di ciascun file sullo standard output. Questa è una azione di default | |
| -ls | stampa sullo standard output l'equivalente di ls -ilds per ogni file trovato |
-exec <command> |
esegue il comando <command> su ogni file trovato. La riga di comando <command> deve terminare con un ;, che deve essere preceduto da un carattere di escape affinché la shell non lo interpreti; la posizione del file è contrassegnata con {}. |
-ok <command> |
uguale a -exec ma richiede una conferma per ogni comando |
Come usare locate¶
-
Assicurarsi di trovarsi nella directory home.
-
Utilizzare il comando find per visualizzare tutti i file nella directory corrente (
pwd). Digitare:[root@localhost root]# find ……….. ./.bash_profile ./.bashrc ./.cshrc ./.tcshrc ./.viminfo ./folder1 ./folder1/first.txt …………Il risultato mostra il comportamento predefinito di find quando viene utilizzato senza alcuna opzione.
Visualizza tutti i file e le directory (compresi i file nascosti) nella directory di lavoro in modo ricorsivo. -
Ora utilizzate
findper trovare solo le directory nella vostra pwd. Digitare:[root@localhost root]# find -type d ./folder1 ./folder2 ………Domande
Dal comando sopra riportato "find –type d"; cos'è l'"opzione", cos'è il "percorso", cos'è il "criterio" e infine cos'è l'"azione"?
-
Successivamente si cercheranno tutti i file presenti nel sistema che terminano con il suffisso “.txt”:
[root@localhost root]# find / -maxdepth 3 -name "*.txt" -print /root/folder1/first.txt /root/folder1/second.txt /root/folder1/order.txt /root/folder1/order2.txtDomande
Sempre dal comando sopra riportato, cosa sono l'"opzione", il "percorso", il "criterio" e infine l'"azione"? (SUGGERIMENTO: L'azione = “- print”)
La ricerca verrà eseguita solo su 3 directory di profondità dalla directory
/. L'asterisco utilizzato nel comando sopra riportato è uno dei caratteri “jolly” presenti in Linux.
L'uso dei caratteri jolly in Linux è chiamato “globbing”. -
Utilizzare il comando
findper trovare tutti i file nella "pwd" che hanno una dimensione "inferiore" a 200 kilobyte. Digitare:[root@localhost root]# find . –size -200k -
Utilizzare il comando
findper trovare tutti i file nella directory corrente che sono "più grandi" di 10 kilobyte e visualizzare anche il loro "tipo di file". Digitare:[root@localhost root]# find . –size +10k –exec file "{ }" ";"
locate¶
Il comando locate consente di cercare file e directory all'interno del sistema. A differenza di altri comandi come find, che eseguono una ricerca in tempo reale, locate si basa su un database precompilato contenente i percorsi di tutti i file presenti nel sistema, garantendo risultati quasi istantanei. Questo database viene solitamente aggiornato periodicamente utilizzando il comando updatedb, gestito da un cron job. Grazie alla sua efficienza, locate è particolarmente utile per trovare rapidamente file o cartelle senza dover eseguire manualmente la scansione dell'intero file system.
Tuttavia, è importante ricordare che i risultati potrebbero non essere sempre aggiornati se il database non è stato sincronizzato di recente con lo stato attuale del sistema.
| Utilizzo della ricerca: |
|---|
locate [-qi] [-d <path>] [--database=<path>] <search string>... |
locate [-r <regexp>] [--regexp=<regexp>] |
| Uso del database: |
|---|
locate [-qv] [-o <file>] [--output=<file>] |
locate [-e <dir1,dir2,...>] [-f <fs_type1,...>] [-l <level>] [-c] [-U <path>] [-u] [pattern...] |
| Uso generale: |
|---|
| locate [-Vh] [--version] [--help] |
Come si usa locate¶
-
Passa alla directory
folder1e crea i file vuoti temp1, temp2 e temp3:[root@localhost root]# cd folder1; touch temp1 temp2 temp3 [root@localhost folder1]#Il punto e virgola (;) utilizzato nel comando sopra riportato consente di eseguire più comandi su una singola riga!!
-
Utilizzare
locateper cercare tutti i file nella directory corrente che hanno il suffisso "temp"[root@localhost folder1]# locate temp* /root/folder1/temp_file11 /root/folder1/temp_file12 /root/folder1/temp_file21 /root/folder1/temp_file22Si noti che i tre file creati nel passaggio 1 NON sono stati trovati.
-
Si forzerà un aggiornamento del database utilizzando
updatedbper consentirgli di rilevare tutti i file appena creati. Digitare:[root@localhost folder1]# updatedb -
Ora riprovare la ricerca. Digitare:
[root@localhost folder1]# locate tempDomanda
Cosa è successo questa volta?
-
Tutto fatto con Lab 3.