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