2.4 Creazione, Spostamento ed Eliminazione dei File
Introduzione
Questa lezione copre la gestione di file e directory su Linux utilizzando strumenti da riga di comando.
Un file è una raccolta di dati con un nome e un insieme di attributi. Se, ad esempio, dovessi trasferire alcune foto dal tuo telefono a un computer e dare loro nomi descrittivi, ora avresti un sacco di file immagine sul tuo computer. Questi file hanno attributi quali l’ora in cui il file è stato effettuato l’ultimo accesso o modificato.
Una directory è un tipo speciale di file utilizzato per organizzare i file. Un buon modo per pensare alle directory è come le cartelle di file utilizzate per organizzare i documenti in un archivio. A differenza delle cartelle di file cartacei, è possibile inserire facilmente le directory all’interno di altre directory.
La riga di comando è il modo più efficace per gestire i file su un sistema Linux. Gli strumenti della shell e della riga di comando hanno caratteristiche che rendono l’utilizzo della riga di comando più veloce e più facile di un gestore di file grafico.
In questa sezione verranno utilizzati i comandi ls, mv, cp, pwd, find, touch, rm, rmdir, echo, cat e mkdir per gestire e organizzare file e directory.
Sensibilità del caso
A differenza di Microsoft Windows, i nomi di file e directory sui sistemi Linux sono case sensitive. Ciò significa che i nomi /etc/ e /ETC/ sono directory diverse. Prova i seguenti comandi:
$cd/
$ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
$cd ETC
bash: cd: ETC: Nessun file o directory di questo tipo
$pwd
/
$cd ecc
$pwd
/ecc
Il pwd ti mostra la directory in cui ti trovi attualmente. Come puoi vedere, cambiare in/ETC non ha funzionato in quanto non esiste una directory di questo tipo. Cambiare nella directory/etc che esiste, ha avuto successo.
Creazione di directory
Il comando mkdir viene utilizzato per creare directory.
Creiamo una nuova directory all’interno della nostra home directory:
$cd ~
$pwd
/home/utente
$ls
Download di documenti desktop
$mkdir linux_essentials-2.4
$ls
Download di documenti desktop linux_essentials-2.4
$cd linux_essentials-2.4
$pwd
/home/emma/linux_essentials-2.4
Per la durata di questa lezione, tutti i comandi avranno luogo all’interno di questa directory o in una delle sue sottodirectory.
Per tornare facilmente alla directory delle lezioni da qualsiasi altra posizione nel file system, è possibile utilizzare il comando:
$cd ~/linux_essentials-2.4
La shell interpreta il carattere ~ come la tua home directory.
Quando sei nella directory delle lezioni, crea altre directory che useremo per gli esercizi. È possibile aggiungere tutti i nomi di directory, separati da spazi, a mkdir:
$mkdir la creazione di copia/copia di file/directory eliminazione/directory eliminazione/file glob
mkdir: impossibile creare la directory ‘copia/file’: nessun file o directory di questo tipo
mkdir: impossibile creare la directory ‘copia/directory’: nessun file o directory di questo tipo
mkdir: impossibile creare la directory ‘deleting/directories’: nessun file o directory di questo tipo
mkdir: impossibile creare la directory ‘deleting/files’: nessun file o directory di questo tipo
$ls
creazione di glob in movimento
Si noti il messaggio di errore e che solo lo spostamento, i glob e la creazione sono stati creati. Le directory di copia ed eliminazione non esistono ancora. mkdir, per impostazione predefinita, non creerà una directory all’interno di una directory che non esiste. L’opzione -p o —parents indica a mkdir di creare directory padre se non esistono. Prova lo stesso comando mkdir con l’opzione -p:
$mkdir -p creazione di copia/copia di file/directory eliminazione/directory eliminazione/file glob
Ora non ricevi alcun messaggio di errore. Vediamo quali directory esistono ora:
$trova
.
. /creazione
. /movimento
. /glob
. /copia
. /copiare/file
. /copiare/directory
. /cancellazione
. /deleting/directory
. /eliminare/file
Il programma di ricerca viene solitamente utilizzato per cercare file e directory, ma senza alcuna opzione, ti mostrerà un elenco di tutti i file, directory e sottodirectory della tua directory corrente.
Suggerimento
Quando si elencano i contenuti di una directory con ls, le opzioni -t e -r sono particolarmente utili. Ordinano l’output per tempo (-t) e invertire l’ordine di ordinamento (-r). In questo caso, i file più recenti saranno nella parte inferiore dell’output.
Creazione di file
In genere, i file verranno creati dai programmi che funzionano con i dati memorizzati nei file. Un file vuoto può essere creato utilizzando il comando touch. Se si esegue il tocco su un file esistente, il contenuto del file non verrà modificato, ma il timestamp di modifica dei file verrà aggiornato.
Eseguire il comando seguente per creare alcuni file per la lezione di globbing:
$touch globs/question1 globs/question2012 globs/question23 globs/question13 globs/question13 globs/question14
$touch globs/star10 globs/star1100 globs/star2002 globs/star2013
Ora verifichiamo che tutti i file esistano nella directory globs:
$glob cd
$ls
question1 questiona14 question23 star1100 star2013
questione13 questione2012 star10 star2002
Si noti come tocco ha creato i file? È possibile visualizzare il contenuto di un file di testo con il comando cat. Provalo su uno dei file che hai appena creato:
$cat question14
Poiché il tocco crea file vuoti, non dovresti ottenere alcun output. È possibile utilizzare echo con per creare semplici file di testo. Provalo:
$echo ciao question15
$cat question15
ciao
echo visualizza il testo sulla riga di comando. Il carattere indica alla shell di scrivere l’output di un file nel file specificato invece del terminale. Questo porta all’output di echo, ciao in questo caso, viene scritto nella domanda del file15. Questo non è specifico per echo, può essere usato con qualsiasi comando.
Avvertimento
Fare attenzione quando si utilizza! Se il file denominato esiste già, verrà sovrascritto!
Rinominare i file
I file vengono spostati e rinominati con il comando mv.
Imposta la tua directory di lavoro sulla directory mobile:
$cd ~/linux_essentials-2.4/movimento
Creare alcuni file con cui esercitarsi. A questo punto, dovresti già avere familiarità con questi comandi:
$tocco file1 file22
$echo file3 file3
$echo file4 file4
$ls
file1 file22 file3 file4
Supponiamo che file22 sia un errore di battitura e dovrebbe essere file2. Risolvilo con il comando mv. Quando si rinomina un file, il primo argomento è il nome corrente, il secondo è il nuovo nome:
$mv file22 file2
$ls
file1 file2 file3 file4
Fai attenzione con il comando mv. Se rinominate un file con il nome di un file esistente, lo sovrascriverà. Testiamo questo con file3 e file4:
$cat file3
file3
$cat file4
file4
$mv file4 file3
$cat file3
file4
$ls
file1 file2 file3
Si noti come il contenuto di file3 è ora file4. Usa l’opzione -i per fare in modo che mv ti chieda se stai per sovrascrivere un file esistente. Provalo:
$tocco file4 file5
$mv -i file4 file3
mv: sovrascrivere ‘file3’? y
Spostamento di file
I file vengono spostati da una directory all’altra con il comando mv.
Creare alcune directory per spostare i file in:
$cd ~/linux_essentials-2.4/movimento
$mkdir dir1 dir2
$ls
dir1 dir2 file1 file2 file3 file5
Sposta file1 in dir1:
$mv file1 dir1
$ls
dir1 dir2 file2 file3 file5
$ls dir1
file1
Si noti come l’ultimo argomento di mv è la directory di destinazione. Ogni volta che l’ultimo argomento di mv è una directory, i file vengono spostati in essa. È possibile specificare più file in un unico comando mv:
$mv file2 file3 dir2
$ls
dir1 dir2 file5
$ls dir2
file2 file3
È anche possibile utilizzare mv per spostare e rinominare le directory. Rinomina dir1 in dir3:
$ls
dir1 dir2 file5
$ls dir1
file1
$mv dir1 dir3
$ls
dir2 dir3 file5
$ls dir3
file1
Eliminazione di file e directory
Il comando rm può eliminare file e directory, mentre il comando rmdir può solo eliminare le directory. Puliamo la directory in movimento eliminando file5:
$cd ~/linux_essentials-2.4/movimento
$ls
dir2 dir3 file5
$rmdir file5
rmdir: impossibile rimuovere ‘file5’: non è una directory
$rm file5
$ls
dir2 dir3
Per impostazione predefinita rmdir può eliminare solo le directory vuote, quindi abbiamo dovuto usare rm per eliminare un file normale. Prova a eliminare la directory di eliminazione:
$cd ~/linux_essentials-2.4/
$ls
copiando la creazione di eliminazione di glob in movimento
$rmdir eliminazione
rmdir: impossibile rimuovere ‘eliminazione’: la directory non vuota
$ls -l cancellazione
totale 0
drwxrwxr-x. 2 emma emma 6 mar 26 14:58 directory
drwxrwxr-x. 2 emma emma 6 mar 26 14:58 file
Per impostazione predefinita, rmdir rifiuta di eliminare una directory che non è vuota. Utilizzare rmdir per rimuovere una delle sottodirectory vuote della directory di eliminazione:
$ls -a eliminazione/files
….
$rmdir eliminazione/file
$ls -l cancellazione
directory
Eliminare un numero elevato di file o strutture di directory profonde con molte sottodirectory può sembrare noioso, ma in realtà è facile. Per impostazione predefinita, rm funziona solo su file normali. L’opzione -r viene utilizzata per sovrascrivere questo comportamento. Fai attenzione, rm -r è un’eccellente pistola a pedale! Quando si utilizza l’opzione -r, rm non cancellerà solo tutte le directory, ma tutto all’interno di quella directory, incluse le sottodirectory e il loro contenuto. Guarda tu stesso come funziona rm -r:
$ls
copiando la creazione di eliminazione di glob in movimento
$rm eliminazione
rm: impossibile rimuovere ‘eliminazione’: è una directory
$ls -l cancellazione
totale 0
drwxrwxr-x. 2 emma emma 6 mar 26 14:58 directory
$rm -r eliminazione
$ls
copiando la creazione di glob in movimento
Si noti come l’eliminazione è andato, anche difficile non era vuoto? Come mv, rm ha un’opzione -i per chiederti prima di fare qualsiasi cosa. Usa rm -ri per rimuovere le directory dalla sezione in movimento che non sono più necessarie:
$trova
.
. /creazione
. /movimento
. /movimento/dir2
. /moving/dir2/file2
. /moving/dir2/file3
. /movimento/dir3
. /moving/dir3/file1
. /glob
. /globs/question1
. /globs/question2012
. /globs/question23
. /globs/question13
. /globs/domanda14
. /globs/star10
. /globs/star1100
. /globs/star2002
. /globs/star2013
. /globs/question15
. /copia
. /copiare/file
. /copiare/directory
$rm -ri in movimento
rm: scendere nella directory ‘moving’? y
rm: scendere nella directory ‘moving/dir2’? y
rm: rimuovere il normale file vuoto ‘movimento/dir2/file2’? y
rm: rimuovere il normale file vuoto ‘movimento/dir2/file3’? y
rm: rimuovere la directory ‘moving/dir2’? y
rm: scendere nella directory ‘moving/dir3’? y
rm: rimuovere il normale file vuoto ‘moving/dir3/file1’? y
rm: rimuovere la directory ‘moving/dir3’? y
rm: rimuovere la directory ‘moving’? y
Copia di file e directory
Il comando cp viene utilizzato per copiare file e directory. Copiare alcuni file nella directory di copia:
$cd ~/linux_essentials-2.4/copia
$ls
file di directory
$cp /etc/nsswitch.conf files/nsswitch.conf
$cp /etc/issue /etc/hostname files
Se l’ultimo argomento è una directory, cp creerà una copia degli argomenti precedenti all’interno della directory. Come mv, più file possono essere specificati contemporaneamente, purché la destinazione sia una directory.
Quando entrambi gli operandi di cp sono file ed entrambi i file esistono, cp sovrascrive il secondo file con una copia del primo file. Pratichiamo questo sovrascrive il file del problema con il file hostname:
$cd ~/linux_essentials-2.4/copia/file
$ls
problema del nome host nsswitch.conf
$nome host cat
Il mio computer
$cat problema
Debian GNU/Linux 9 n l
Problema del nome host $cp
$cat problema
Il mio computer
Ora proviamo a creare una copia della directory dei file all’interno della directory delle directory:
$cd ~/linux_essentials-2.4/copia
Cartelle di file cp $
cp: omettendo i ‘file’ della directory
Come puoi vedere, cp per impostazione predefinita funziona solo su singoli file. Per copiare una directory, si utilizza l’opzione -r. Tieni presente che l’opzione -r farà sì che cp copi anche il contenuto della directory che stai copiando:
$cp -r file directory
$trova
.
. /file
. /files/nsswitch.conf
. /files/fstab
. /files/hostname
. /directory
. /directories/files
. /directories/files/nsswitch.conf
. /directories/files/fstab
. /directories/files/hostname
Si noti come quando una directory esistente è stata utilizzata come destinazione, cp crea una copia della directory sorgente al suo interno? Se la destinazione non esiste, la creerà e la riempirà con il contenuto della directory sorgente:
$cp -r file files2
$trova
.
. /file
. /files/nsswitch.conf
. /files/fstab
. /files/hostname
. /directory
. /directories/files
. /directories/files/nsswitch.conf
. /directories/files/fstab
. /directories/files/hostname
. /files2
. /files2/nsswitch.conf
. /files2/fstab
. /files2/hostname
Globbing
Quello che viene comunemente chiamato globbing è un semplice linguaggio di corrispondenza dei modelli. Le shell della riga di comando sui sistemi Linux usano questo linguaggio per fare riferimento a gruppi di file i cui nomi corrispondono a uno schema specifico. POSIX.1-2017 specifica i seguenti caratteri corrispondenti del modello:
*
Corrisponde a qualsiasi numero di caratteri, inclusi i caratteri
?
Corrisponde a qualsiasi carattere
[]
Corrisponde a una classe di caratteri
In inglese, questo significa che puoi dire alla tua shell di abbinare un modello invece di una stringa di testo letterale. Di solito gli utenti Linux specificano più file con un glob invece di digitare ogni nome file. Eseguire i seguenti comandi:
$cd ~/linux_essentials-2.4/globs
$ls
domanda1 questione14 question2012 star10 star2002
question13 domanda15 question23 star1100 star2013
$sta stella1*
star10 star1100
$ls stella*
star10 star1100 star2002 star2013
$è star2*
star2002 star2013
$ls star2*2
star2002
$ls star2013*
star2013
La shell si espande * a qualsiasi numero di qualsiasi cosa, quindi la shell interpreta stella* per indicare qualsiasi cosa nel contesto pertinente che inizia con la stella. Quando si esegue il comando ls star*, la shell non esegue il programma ls con un argomento di star*, cerca i file nella directory corrente che corrispondono alla stella del modello* (inclusa solo stella), e trasforma ogni file che corrisponde al modello in un argomento a ls:
$ls stella*
per quanto riguarda ls è l’equivalente di
$ls star10 star1100 star2002 star2013
Il carattere * non significa nulla per ls. Per dimostrarlo, eseguire il comando seguente:
$ls stella*
ls: impossibile accedere stella*: nessun file o directory
Quando si precede un personaggio con un, si sta istruendo la shell di non interpretarla. In questo caso, vuoi avere un argomento di stella* invece di ciò che la stella glob si espande.
Il? si espande a qualsiasi singolo carattere. Prova i seguenti comandi per vedere di persona:
$ls
domanda1 questione14 question2012 star10 star2002
question13 domanda15 question23 star1100 star2013
$è la domanda?
domanda1
$è la domanda 1?
domanda13 domanda14 domanda15
$è la domanda? 3
domandato13 domanda,
$è la question13?
ls: impossibile accedere alla question13? : Nessun file o directory di questo tipo
Le parentesi [] vengono utilizzate per abbinare intervalli o classi di caratteri. Le parentesi [] funzionano come fanno nelle espressioni regolari POSIX tranne che con i glob ^ viene usato al posto di!.
Crea alcuni file con cui sperimentare:
$mkdir parentesi
$supporti cd
$touch file1 file2 file3 file4 filea fileb filec file5 file6 file7
Gli intervalli all’interno di [] parentesi sono espressi usando a -:
$ls
file1 file2 file4 file5 file6 file7 filea fileb filec
$ls file [1-2]
file1 file2
$ls file [1-3]
file1 file2 file3
È possibile specificare intervalli multipli:
$ls file [1-25-7]
file1 file2 file5 file6 file7
$ls file [1-35-6a-c]
file1 file2 file3 file5 file6 filea fileb filec
Le parentesi quadre possono anche essere utilizzate per abbinare un insieme specifico di caratteri.
$ls file [1a5]
file1 file5 filea
È inoltre possibile utilizzare il carattere ^ come primo carattere per abbinare tutto tranne alcuni caratteri.
$ls file [^a]
file1 file2 file3 file4 file5 file6 file7 fileb filec
L’ultima cosa che tratteremo in questa lezione sono le classi di caratteri. Per abbinare una classe di caratteri, si utilizza [:classname:]. Ad esempio, per utilizzare la classe di cifre, che corrisponde ai numeri, dovresti fare qualcosa del genere:
$ls file [[:digit:]]
file1 file2 file3 file4 file5 file6 file7
$touch file1a file11
$ls file [[:digit:] a]
file1 file2 file3 file4 file5 file6 file7 filea
$ls file [[:digit:]] a
file1a
Il file glob [[:digit:] a], corrisponde al file seguito da una cifra o da una.
Le classi di caratteri supportate dipendono dalle impostazioni internazionali correnti. POSIX richiede le seguenti classi di caratteri per tutte le impostazioni locali:
[:alnum:]
Lettere e numeri.
[:alfa:]
Lettere maiuscole o minuscole.
[:vuoto:]
Spazi e schede.
[:cntrl:]
Caratteri di controllo, ad esempio backspace, campana, NAK, fuga.
[:cifra:]
Numeri (0123456789).
[:graph:]
Caratteri grafici (tutti i caratteri tranne ctrl e il carattere spazio)
[:inferiore:]
Lettere minuscole (a-z).
[:stampa:]
Caratteri stampabili (alnum, punct e il carattere dello spazio).
[:punct:]
Caratteri di punteggiatura, cioè! , e, «.
[:spazio:]
Caratteri di spazi bianchi, ad esempio schede, spazi, newline.
[:superiore:]
Lettere maiuscole (A-Z).
[:xdigit:]
Numeri esadecimali (di solito 0123456789ABCDEFABCDEF).
Estratti Guidati
Dato quanto segue, selezionare le directory che verrebbero create dal comando mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today
$pwd
/tmp
$trova
.
. /outfiles
. /outfiles/testo
/tmp
/tmp/outfiles
/tmp/outfiles/testo
/tmp/outfiles/testo/oggi
/tmp/infiles
/tmp/infiles/testo
/tmp/infiles/text/today
Cosa fa -v per mkdir, rm e cp?
Cosa succede se si tenta accidentalmente di copiare tre file sulla stessa riga di comando in un file che esiste già invece di una directory?
Cosa succede quando usi mv per spostare una directory in se stessa?
Come elimineresti tutti i file nella tua directory corrente che iniziano con il vecchio?
Quale dei seguenti file log_ [a-z] _201? _*_01.txt partita?
Log_3_2017_gen_01.txt
log_+_2017_feb_01.txt
Log_b_2007_mar_01.txt
Log_f_201a_mercoledì_01.txt
Creare alcuni glob in modo che corrispondano al seguente elenco di nomi di file:
doc100
doc200
doc301
doc401
Esercizi esplorativi
Utilizzare la pagina man cp per scoprire come creare una copia di un file e avere le autorizzazioni e l’ora di modifica corrispondono all’originale.
Cosa fa il comando rmdir -p? Sperimenta con esso e spiega come differisce da rm -r.
NON ESECUTE QUESTO COMANDO: Cosa pensi che farà rm -ri /*? (ONESTAMENTE, NON TENTARE DI FARLO!)
Oltre all’uso di -i, è possibile impedire a mv di sovrascrivere i file di destinazione?
Spiega il comando cp -u.
Riepilogo
L’ambiente della riga di comando Linux fornisce strumenti per gestire i file. Alcuni comunemente usati sono cp, mv, mkdir, rm e rmdir. Questi strumenti, combinati con glob, consentono agli utenti di ottenere molto lavoro svolto molto rapidamente.
Molti comandi hanno un’opzione -i, che ti richiede prima di fare qualsiasi cosa. Prompting può farti risparmiare un sacco di problemi se hai digitato male qualcosa.
Molti comandi hanno un’opzione -r. L’opzione -r di solito significa ricorsione. In matematica e informatica, una funzione ricorsiva è una funzione che si usa nella sua definizione. Quando si tratta di strumenti da riga di comando, di solito significa applicare il comando a una directory e tutto ciò che contiene.
Comandi utilizzati in questa lezione:
gatto
Leggere ed emettere il contenuto di un file.
cp
Copiare file o directory.
eco
Emissione di una stringa.
trovare
Attraversa una struttura di file system e cerca i file che corrispondono a una serie specifica di criteri.
Ls
Mostra le proprietà di file e directory ed elenca i contenuti di una directory.
mkdir
Crea nuove directory.
mv
Spostare o rinominare file o directory.
PWD
Emissione della directory di lavoro corrente.
rm
Elimina file o directory.
rmdir
Elimina le directory.
Toccare
Creare nuovi file vuoti o aggiornare il timestamp di modifica di un file esistente.
Risposte agli esercizi guidati
Dato quanto segue, selezionare le directory che verrebbero create dal comando mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today
$pwd
/tmp
$trova
.
. /outfiles
. /outfiles/testo
Le directory contrassegnate verrebbero create. Le directory /tmp, /tmp/outfiles e /tmp/outfiles/text esistono già, quindi mkdir le ignorerà.
/tmp
/tmp/outfiles
/tmp/outfiles/testo
/tmp/outfiles/testo/oggi
X
/tmp/infiles
X
/tmp/infiles/testo
X
/tmp/infiles/text/today
X
Cosa fa -v per mkdir, rm e cp?
Tipicamente -v attiva l’output dettagliato. Fa sì che i rispettivi programmi producano ciò che stanno facendo mentre lo stanno facendo:
$rm -v a b
rimosso ‘a’
rimosso ‘b’
$mv -v a b
‘a – ‘b’
$cp -v b c
‘b’ – ‘c’
Cosa succede se si tenta accidentalmente di copiare tre file sulla stessa riga di comando in un file che esiste già invece di una directory?
cp si rifiuterà di fare qualsiasi cosa e emetterà un messaggio di errore:
$tocco a b c d
$cp a b c d
cp: target ‘d’ non è una directory
Cosa succede quando usi mv per spostare una directory in se stessa?
Ricevi un messaggio di errore che ti dice che mv non può farlo.
$mv a
mv: impossibile spostare ‘a’ in una sottodirectory di se stessa, ‘a/a’
Come elimineresti tutti i file nella tua directory corrente che iniziano con il vecchio?
Si dovrebbe usare il glob vecchio* con rm:
$rm vecchio*
Quale dei seguenti file log_ [a-z] _201? _*_01.txt partita?
Log_3_2017_gen_01.txt
log_+_2017_feb_01.txt
Log_b_2007_mar_01.txt
Log_f_201a_mercoledì_01.txt
X
$ls log_ [a-z] _201? _*_01.txt
Log_f_201a_mercoledì_01.txt
log_ [a-z] corrisponde a log_ seguito da qualsiasi lettera minuscola, quindi entrambi Log_f_201a_Wednesday_01.txt e Log_b_2007_mar_01.txt corrispondono. _201? corrisponde a qualsiasi singolo carattere, quindi solo LOG_F_201A_Wednesday_01.txt corrisponde. Infine *_01.txt corrisponde a tutto ciò che termina con _01.txt, quindi la nostra opzione rimanente corrisponde.
Creare alcuni glob in modo che corrispondano al seguente elenco di nomi di file:
doc100
doc200
doc301
doc401
Ci sono diverse soluzioni. Ecco alcuni di loro:
doc*
doc [1-4] *
Dottore? 0?
doc [1-4] 0 [12]
doc [1-4] 0?
Risposte agli esercizi esplorativi
Utilizzare la pagina man cp per scoprire come creare una copia di un file e avere le autorizzazioni e l’ora di modifica corrispondono all’originale.
Si dovrebbe usare l’opzione -p. Dalla pagina man:
$uomo cp
-p come —preserve=mode, proprietà, timestamp
—preserve [=ATTR_LIST]
conservare gli attributi specificati (default: modalità, proprietà, time‐ ‐
timbri), se possibile attributi aggiuntivi: contesto, link,
xattr, tutti
Cosa fa l’opzione rmdir -p? Sperimenta con esso e spiega come differisce da rm -r.
Fa sì che rmdir si comporti in modo simile a mkdir -p. Se passato un albero di directory vuote, rimuoverà tutte.
$trova
.
. /a
. /a/b
. /a/b/c
$rmdir -p a/b/c
$ls
NON ESECUTE QUESTO COMANDO: Cosa pensi che farà rm -ri /*? (ONESTAMENTE, NON TENTARE DI FARLO!)
Rimuoverà tutti i file e le directory scrivibili dal tuo account utente. Ciò include tutti i file system di rete.
Oltre all’uso di -i, è possibile impedire a mv di sovrascrivere i file di destinazione?
Sì, l’opzione -n o —no-clobber impedisce a mv di sovrascrivere i file.
$cat a
un
$cat b
b
$mv -n a b
$cat b
b
Spiega cp -u.
L’opzione -u fa sì che cp copi un file solo se la destinazione è mancante o precedente al file di origine.
$ls -l
totale 24K
drwxr-xr-x 123 emma studente 12K febbraio 2 05:34..
drwxr-xr-x 2 emma studente 4.0K febbraio 2 06:56.
-rw-r— 1 studente emma 2 febbraio 2 06:56 un
-rw-r—r— 1 studente emma 2 febbraio 2 07:00 b
$cat a
un
$cat b
b
$cp -u a b
$cat b
b
$cp -u a c
$ls -l
totale 12
-rw-r— 1 studente emma 2 febbraio 2 06:56 un
-rw-r—r— 1 studente emma 2 febbraio 2 07:00 b
-rw-r—r— 1 studente emma 2 febbraio 2 07:00 c