Linux / Comando / mkdir / Comando per creare directory

Su Linux, mkdir è il comando per creare una nuova directory. Per creare un percorso a più livelli in una sola volta, usa -p, che permette di mantenere le directory esistenti così come sono, creando eventuali directory genitore mancanti.

Creazione e verifica delle directory

mkdir è l’abbreviazione dell’inglese make directory (crea directory). Il seguente comando crea una directory con il nome projects nella directory corrente se non esiste e verifica il risultato. Eseguilo in una directory di esercitazione vuota per evitare confusione con dati esistenti.

pwd
mkdir projects
ls -ld projects

Per prima cosa, verifica la posizione di lavoro corrente con pwd, e poi controlla se le informazioni sulla nuova directory vengono visualizzate in ls -ld. mkdir di solito non mostra alcun messaggio se l'operazione ha successo. Se un file o una directory con lo stesso nome esiste già, il comando predefinito mostra un errore.

I percorsi relativi si basano sulla posizione corrente, e i percorsi assoluti che iniziano come /, come /home/user/projects, sono specificati dalla directory root. Verifica il percorso effettivo e i permessi di accesso in base al tuo ambiente.

Crea insieme alle directory genitore

Il seguente comando crea le directory genitore necessarie se non esistono. Ad esempio, se work non esiste nella posizione di pratica, creerà work, work/reports e work/reports/2024 in ordine.

mkdir -p work/reports/2024
ls -ld work work/reports work/reports/2024

Se esegui mkdir work/reports/2024 senza -p, fallirà quando il percorso padre non esiste. Aggiungere -p non causerà un errore solo perché il percorso esiste già come directory. Non elimina i contenuti esistenti né modifica le autorizzazioni della directory esistente.

Tuttavia, se c'è un file normale con lo stesso nome nel mezzo del percorso o se non hai le autorizzazioni necessarie per la directory padre, potrebbe fallire anche se usi -p. Controlla insieme il messaggio di errore, lo stato di uscita e il percorso effettivo per confermare il successo.

Più directory e nomi con spazi

Puoi elencare nomi separati da spazi per creare più directory. Il seguente è un esempio quando i due nomi non esistono ancora nella posizione corrente.

mkdir documents images
ls -ld documents images

Se il nome contiene spazi, racchiudi l'intero percorso tra virgolette per passarlo come un singolo nome. Se non ci sono virgolette, la shell lo dividerà agli spazi e li passerà come argomenti separati.

mkdir "project files"
ls -ld "project files"

I nomi che iniziano con un trattino possono essere interpretati come opzioni. Ad esempio, mkdir -- -archive mette il nome dopo --, quindi non viene trattato come un'opzione.

Controlla permessi e risultati durante la creazione

In generale, i permessi predefiniti di una nuova directory sono influenzati dall'attuale umask della shell e dalle impostazioni del file system. Controlla la maschera corrente con umask e verifica i permessi effettivi della directory creata con ls -ld.

Puoi anche impostare i permessi di una directory appena creata utilizzando l'opzione -m di GNU mkdir. Di seguito è riportato un esempio in cui i permessi di lettura, scrittura ed esecuzione vengono concessi al proprietario e nessun permesso viene dato al gruppo e agli altri quando private non esiste ancora.

mkdir -m 700 private
ls -ld private

Anche se -p e -m vengono utilizzati insieme, -m viene applicato alla nuova directory specificata nella riga di comando e non viene applicato alle directory genitore create automaticamente. Inoltre, non applica nuovi permessi alle directory già esistenti. Le liste di controllo accessi o le policy del file system possono influenzare l'accesso effettivo, quindi verificare i risultati nell'ambiente necessario. Per il comportamento dettagliato delle opzioni, fare riferimento al manuale GNU mkdir.

Quando la creazione fallisce

  • Esiste già: Utilizzare ls -ld name per verificare se l'oggetto esistente è un file o una directory. -p è appropriato solo se si desidera utilizzare la directory esistente così com'è.
  • Percorso genitore non trovato: Controlla l'ortografia del percorso e la tua posizione attuale, quindi decidi se puoi creare le directory genitore mancanti usando -p.
  • Permesso negato: Verifica se hai i permessi di scrittura e accesso necessari per la directory genitore e richiedili all'amministratore se necessario.

Puoi rimuovere una directory vuota creata durante la pratica con rmdir dopo aver confermato che non contiene alcun contenuto. rmdir generalmente non rimuove directory che non sono vuote.