Articles

Lavorare con file e directory

Panoramica

Insegnamento: 30 min
Esercizi: 20 min
Domande

  • Come posso creare, copiare ed eliminare file e directory?

  • Come posso modificare i file?

Obiettivi

  • Crea una gerarchia di directory che corrisponda a un dato diagramma.

  • Creare file in quella gerarchia utilizzando un editor o copiando e rinominando i file esistenti.

  • Elimina, copia e sposta file e / o directory specificati.

Creazione di directory

Ora sappiamo come esplorare file e directory,ma come crearli in primo luogo?

Fase uno: vedi dove siamo e cosa abbiamo già

Torniamo alla nostra directorydata-shell sul Desktopand usals -F per vedere cosa contiene:

$ pwd
/Users/nelle/Desktop/data-shell
$ ls -F
creatures/ data/ molecules/ north-pacific-gyre/ notes.txt pizza.cfg solar.pdf writing/

Creare una directory

creare una nuova directory chiamata thesis con il comando mkdir thesis(che non ha uscita):

$ mkdir thesis

Come si può intuire dal nome,mkdir significa ” marchio directory’.Poiché thesis è il percorso relativo(cioè, non dispone di una barra, come /what/ever/thesis),la creazione della nuova directory nella directory di lavoro corrente:

$ ls -F
creatures/ data/ molecules/ north-pacific-gyre/ notes.txt pizza.cfg solar.pdf thesis/ writing/

Dal momento che abbiamo appena creato il thesis directory, non c’è niente in esso ancora:

$ ls -F thesis

si noti che mkdir non è limitato alla creazione di un’unica directory, uno alla volta. -p opzione permette di mkdir per creare una directory con qualsiasi numero di nidificati sottodirectory in una singola operazione:

$ mkdir -p thesis/chapter_1/section_1/subsection_1

-R opzione ls comando elencherà tutti nidificato sottocartelle all’interno di una directory. Usiamo ls -FR per elencare ricorsivamente la nuova gerarchia di directory appena creata sotto la directory thesis :

$ ls -FR thesischapter_1/thesis/chapter_1:section_1/thesis/chapter_1/section_1:subsection_1/thesis/chapter_1/section_1/subsection_1:

Due modi per fare la stessa cosa

Usare la shell per creare una directory non è diverso dall’usare un esplora file.Se si apre la directory corrente utilizzando il file explorer grafico del sistema operativo, verrà visualizzata anche la directorythesis.Mentre la shell e il file explorer sono due modi diversi di interagire con i file,i file e le directory stessi sono gli stessi.

I buoni nomi per file e directory

I nomi complicati di file e directory possono rendere la tua vita dolorosaquando lavori sulla riga di comando. Qui forniamo alcuni suggerimenti utili per i nomi dei tuoi file.

  1. Non usare spazi.

    Gli spazi possono rendere un nome più significativo,ma poiché gli spazi sono usati per separare gli argomenti sulla riga di comandoè meglio evitarli nei nomi di file e directory.È possibile utilizzare - o_ invece (ad esempio north-pacific-gyre/ invece di north pacific gyre/).

  2. Non iniziare il nome con - (trattino).

    I comandi trattano i nomi che iniziano con- come opzioni.

  3. Attaccare con lettere, numeri, .(punto o ‘punto’), -(trattino basso) e _ (sottolineatura).

    Molti altri caratteri hanno significati speciali sulla riga di comando.Impareremo alcuni di questi durante questa lezione.Ci sono caratteri speciali che possono causare il comando di non funzionare asexpected e può anche causare la perdita di dati.

Se è necessario fare riferimento a nomi di file o directory che hanno spazioo altri caratteri speciali, è necessario circondare il nome tra virgolette ("").

Creare un file di testo

cambiamo la nostra directory di lavoro thesis uso cd,quindi eseguire un editor di testo chiamato Nano per creare un file chiamato draft.txt:

$ cd thesis$ nano draft.txt

Quale editor?

Quando diciamo, ‘nano è un editor di testo’ intendiamo davvero ‘testo’: può funzionare solo con dati di caratteri semplici, non tabelle, immagini o qualsiasi altro supporto umano. Lo usiamo negli esempi perché è uno degli ultimi editor di testo complessi. Tuttavia, a causa di questo tratto, maynot essere abbastanza potente o abbastanza flessibile per il lavoro che dovete doafter questo workshop. Su sistemi Unix (come Linux e macOS),molti programmatori usano Emacs orVim (entrambi richiedono più tempo per imparare),o un editor grafico come Egedit. Su Windows, potresti desiderareutilizzare Notepad++. Windows ha anche un built-ineditor chiamato notepadche può essere eseguito dalla riga di comando nello stesso modo comenano per gli scopi di questa lezione.

Non importa quale editor si utilizza, è necessario sapere dove searchesfor e salva i file. Se lo si avvia dalla shell, utilizzerà (probabilmente)la directory di lavoro corrente come posizione predefinita. Se si useyour menu di avvio del computer, si consiglia di salvare i file nella directory desktop ordocuments invece. Puoi cambiarlo navigando verso un’altra directory la prima volta che’Salva come As ‘

Digitiamo alcune righe di testo.Una volta che siamo soddisfatti del nostro testo, possiamo premere Ctrl+O(premere il tasto Ctrl o Control e, mentre lo teniamo premuto, premere il tasto O) per scrivere i nostri dati su disco(ci verrà chiesto in quale file vogliamo salvarlo:premere Invio per accettare l’impostazione predefinita suggerita di draft.txt).

screenshot dell'editor di testo nano in azione

Una volta salvato il nostro file, possiamo usare Ctrl+X per uscire dall’editor e tornare alla shell.

Control, Ctrl, or ^ Key

Il tasto Control è anche chiamato tasto ‘Ctrl’. Ci sono vari modiin cui utilizzando il tasto di controllo può essere descritto. Ad esempio, è possibile visualizzare un’istruzione per premere il tasto Control e, tenendolo premuto, premere il tasto X, descritto come uno dei:

  • Control-X
  • Control+X
  • Ctrl-X
  • Ctrl+X
  • ^X
  • C-x

nano, lungo la parte inferiore dello schermo si vedrà ^G Get Help ^O WriteOut.Ciò significa che puoi usare Control-G per ottenere aiuto e Control-O per salvare il tuo file.

nano non lascia alcun output sullo schermo dopo che esce,ma ls mostra ora che abbiamo creato un file chiamato draft.txt:

$ ls
draft.txt

Creazione di File di un Modo Diverso

Abbiamo visto come creare file di testo utilizzando il nano editor.Ora, prova il seguente comando:

$ touch my_file.txt

  1. Cosa ha fatto il comando touch?Quando guardi la tua directory corrente usando l’esploratore di file GUI, il file viene visualizzato?

  2. Utilizzare ls -l per ispezionare i file. Quanto è grande my_file.txt?

  3. Quando potresti voler creare un file in questo modo?

Soluzione

  1. Il comando touchgenera un nuovo file chiamato my_file.txt nella directory corrente. Puoi osservare questo file appena generato digitando ls al prompt della riga di comando. my_file.txt può anche essere visualizzato in yourGUI file explorer.

  2. Quando si ispeziona il file con ls -l, si noti che la dimensione dimy_file.txt è di 0 byte. In altre parole, non contiene dati.Se apri my_file.txt usando il tuo editor di testo, è vuoto.

  3. Alcuni programmi non generano file di output da soli, ma richiedono invece che i file vuoti siano già stati generati.Quando il programma viene eseguito, cerca un file esistentepopolare con il suo output. Il comando touch consente di generare in modo efficiente un file di testo vuoto da utilizzare da tali programmi.

Cosa c’è in un nome?

Potresti aver notato che tutti i file di Nelle sono chiamati ‘something dotsomething’, e in questa parte della lezione, abbiamo sempre usato l’estensione.txt. Questa è solo una convenzione: possiamo chiamare un filemythesis oquasi qualsiasi altra cosa vogliamo. Tuttavia, la maggior parte delle persone usa nomi in due parti la maggior parte del tempo per aiutarli (e i loro programmi) a distinguere diversi tipi di file. La seconda parte di tale nome è chiamato thefilename estensione, e indicateswhat tipo di dati che il file contiene: .txt segnali di un file di testo .pdfindica un documento PDF, .cfg è un file di configurazione completo di parametersfor qualche programma o altro, .png è un immagine PNG, e così via.

Questa è solo una convenzione, anche se importante. File containbytes: spetta a noi e ai nostri programmi di interpretare quei bytesaccording alle regole per i file di testo normale, documenti PDF, configurationfiles, immagini, e così via.

Nominare un’immagine PNG di una balena comewhale.mp3 non lo trasforma in qualche modo in una registrazione di canto delle balene, anche se potrebbe indurre il sistema operativo a provare ad aprirlo con un lettore musicale quando qualcuno lo fa doppio clic.

Spostamento di file e directory

Ritorno data-shell directory,

cd ~/Desktop/data-shell/

il thesis directory in cui si dispone di un file draft.txtche non è un particolare nome informativo,proviamo a cambiare il nome del file utilizzando mvche è l’abbreviazione di ‘spostare’:

$ mv thesis/draft.txt thesis/quotes.txt

Il primo argomento indica mv quello che siamo ‘in movimento’,mentre la seconda è dove andare.In questo caso,stiamo spostando thesis/draft.txt a thesis/quotes.txt,che ha lo stesso effetto di rinominare il file.Abbastanza sicuro, ills ci mostra che thesis ora contiene un file chiamato quotes.txt:

$ ls thesis
quotes.txt

si deve prestare attenzione quando si specifica il nome del file di destinazione, in quanto mv willsilently sovrascrivere i file con lo stesso nome, che couldlead alla perdita di dati. Un’opzione aggiuntiva,mv -i (omv --interactive),può essere utilizzata per chiedere conferma prima di sovrascriveremv.

Si noti chemv funziona anche sulle directory.

Spostiamoquotes.txt nella directory di lavoro corrente.Usiamo ancora una voltamv, ma questa volta useremo solo il nome di una directory come secondo argomentoper dire amv che vogliamo mantenere il nome del file,ma mettere il file da qualche parte nuovo.(Questo è il motivo per cui il comando si chiama ‘move’.)In questo caso, il nome della directory che usiamo è il nome della directory speciale . che abbiamo menzionato prima.

$ mv thesis/quotes.txt .

L’effetto è quello di spostare il file dalla directory in cui si trovava alla directory di lavoro corrente.ls ora ci mostra che thesis è vuoto:

$ ls thesis

Inoltre,ls con un nome di un file o di una directory di nome come argomento solo elenchi di file o directory.Possiamo usare questo per vedere che quotes.txt è ancora nella nostra directory corrente:

$ ls quotes.txt
quotes.txt

Spostare i File in una nuova cartella

Dopo aver eseguito i seguenti comandi Jamie si rende conto che ha messo il file sucrose.dat e maltose.dat nella cartella sbagliata. I file dovrebbero essere stati inseriti nella cartellaraw.

$ ls -F analyzed/ raw/$ ls -F analyzedfructose.dat glucose.dat maltose.dat sucrose.dat$ cd analyzed

Riempire gli spazi vuoti per spostare questi file raw/ cartella(cioè quello che lei ha dimenticato di metterli in)

$ mv sucrose.dat maltose.dat ____/____

Soluzione

$ mv sucrose.dat maltose.dat ../raw

Ricordiamo che .. si riferisce alla directory padre (cioè uno sopra l’directory corrente)e che . si riferisce alla directory corrente.

Copia di file e directory

Il comando cpfunziona molto come mv, tranne che copia un file invece di spostarlo.Possiamo verificare che abbia fatto la cosa giusta usando ls con due percorsi come argomenti-come la maggior parte dei comandi Unix,ls può essere dato più percorsi contemporaneamente:

$ cp quotes.txt thesis/quotations.txt$ ls quotes.txt thesis/quotations.txt
quotes.txt thesis/quotations.txt

Si può anche copiare una directory e tutto il suo contenuto utilizzando therecursive opzione -r,ad esempio, per eseguire il backup di una directory:

$ cp -r thesis thesis_backup

Siamo in grado di controllare il risultato, che elenca i contenuti di entrambi i thesis e thesis_backup directory:

$ ls thesis thesis_backup
thesis:quotations.txtthesis_backup:quotations.txt

la Ridenominazione dei File

si Supponga di aver creato una pianura file di testo nella directory corrente contengono un elenco di thestatistical test è necessario fare per analizzare i dati, il cui nome è: statstics.txt

Dopo aver creato e salvato questo file si accorge di aver scritto male il nome del file! Vuoi correggere l’errore, quale dei seguenti comandi potresti usare per farlo?

  1. cp statstics.txt statistics.txt
  2. mv statstics.txt statistics.txt
  3. mv statstics.txt .
  4. cp statstics.txt .

Soluzione

  1. No. Mentre questo creerebbe un file con il nome corretto, il file con nome errato esiste ancora in directoryand dovrebbe essere eliminato.
  2. Sì, questo funzionerebbe per rinominare il file.
  3. No, il periodo(.) indica dove spostare il file, ma non fornisce un nuovo nome di file; nomi di file identici non possono essere creati.
  4. No, il periodo(.) indica dove copiare il file, ma non fornisce un nuovo nome di file; nomi di file identici non possono essere creati.

Spostamento e copia

Qual è l’output del comando di chiusura ls nella sequenza mostrata di seguito?

$ pwd
/Users/jamie/data
$ ls
proteins.dat
$ mkdir recombined$ mv proteins.dat recombined/$ cp recombined/proteins.dat ../proteins-saved.dat$ ls
  1. proteins-saved.dat recombined
  2. recombined
  3. proteins.dat recombined
  4. proteins-saved.dat

Solution

We start in the /Users/jamie/data directory, and create a new folder called recombined.La seconda riga sposta (mv) il fileproteins.dat nella nuova cartella (recombined).La terza riga fa una copia del file che abbiamo appena spostato. La parte difficile qui è dove il file è stato copiato. Ricordiamo che ..significa ‘salire di un livello’, quindi il file copiato è ora in/Users/jamie.Si noti che .. viene interpretato rispetto alla directory di lavoro corrente, non rispetto alla posizione del file da copiare.Quindi, l’unica cosa che mostrerà usando ls (in /Users/jamie/data) è la cartella ricombinata.

  1. No, vedi la spiegazione sopra. proteins-saved.datsi trova a/Users/jamie
  2. No, vedere la spiegazione sopra. proteins.dat si trova a/Users/jamie/data/recombined
  3. No, vedere la spiegazione sopra. proteins-saved.dat/Users/jamie

la Rimozione di file e directory

Ritorno data-shell directory,proviamo a riordinare questa directory rimuovendo il quotes.txt file che abbiamo creato.Il comando Unix che useremo per questo è rm (abbreviazione di ‘rimuovere’):

$ rm quotes.txt

Possiamo confermare che il file è andato con ls:

$ ls quotes.txt
ls: cannot access 'quotes.txt': No such file or directory

la Cancellazione È per Sempre

La shell di Unix non ha un cestino che siamo in grado di recuperare deletedfiles da (anche se la maggior parte delle interfacce grafiche per Unix fare). Invece, quando eliminiamo i file, vengono scollegati dal file system in modo che il loro spazio di archiviazione su disco possa essere riciclato. Gli strumenti per trovare andrecovering i file cancellati esistono, ma non c’è nessuna garanzia che lavoreranno in qualsiasi situazione particolare, dal momento che il computer può riciclare lo spazio su disco di thefile subito.

Usare rm in modo sicuro

Cosa succede quando eseguiamorm -i thesis_backup/quotations.txt?Perché dovremmo volere questa protezione quando si utilizza rm?

Soluzione

$ rm: remove regular file 'thesis_backup/quotations.txt'? y

L’opzione-i chiederà prima di (ogni) rimozione (utilizzare Y per confermare l’eliminazione o N per mantenere il file).La shell Unix non ha un cestino, quindi tutti i file rimossi scompariranno forever.By usando l’opzione-i, abbiamo la possibilità di verificare che stiamo eliminando solo i file che vogliamo rimuovere.

Se si tenta di rimuovere il thesis cartella rm thesis,si ottiene un messaggio di errore:

$ rm thesis
rm: cannot remove `thesis': Is a directory

Questo accade perché rm per impostazione predefinita funziona solo su file, non di directory.

rm può rimuovere una directory e tutti i suoi contenuti se usiamo l’opzione corsiva -r, e lo farà senza alcuna richiesta di conferma:

$ rm -r thesis

Dato che non c’è modo di recuperare i file eliminati utilizzando la shell,rm -r dovrebbe essere usato con molta cautela (si potrebbe considerare l’aggiunta di interattivo opzione rm -r -i).

Operazioni con più file e directory

Spesso è necessario copiare o spostare più file contemporaneamente. Questo può essere fatto fornendo un elenco di singoli nomi di file, o specificando un modello di denominazione utilizzando caratteri jolly.

Copia con più nomi di file

Per questo esercizio, è possibile testare i comandi nella directory data-shell/data.

Nell’esempio seguente, cosa fa cp quando vengono dati diversi nomi di file e un nome di directory?

$ mkdir backup$ cp amino-acids.txt animals.txt backup/

Nell’esempio seguente, cosa fa cp quando vengono assegnati tre o più nomi di file?

$ ls -F
amino-acids.txt animals.txt backup/ elements/ morse.txt pdb/ planets.txt salmon.txt sunspot.txt
$ cp amino-acids.txt animals.txt morse.txt

Soluzione

Se il dato più di un nome di file seguito da un nome di directory (cioè la directory di destinazione va l’ultimo argomento), cp copia i file nella directory con nome.

Se vengono dati tre nomi di file, cp genera un errore come quello qui sotto, perché si aspetta un directoryname come ultimo argomento.

cp: target ‘morse.txt’ is not a directory

Using wildcards for accessing multiple files at once

Wildcards

* is a wildcard, which matches zero or more characters.Let’s consider the data-shell/molecules directory:*.pdb matches ethane.pdbpropane.pdb, and everyfile that ends with ‘.pdb’. D’altra parte, p*.pdb corrisponde solo apentane.pdb e propane.pdb, perché la ‘p’ sul frontemaccoda i nomi dei file che iniziano con la lettera ‘p’.

? è anche un jolly, ma è esattamente corrispondente a un carattere.Così ?ethane.pdb sarebbe partita methane.pdb mentre*ethane.pdb corrisponde a ethane.pdb e methane.pdb.

I caratteri jolly possono essere utilizzati in combinazione tra loro.g. ???ane.pdb corrisponde a tre caratteri seguiti daane.pdb,dandocubane.pdb ethane.pdb octane.pdb.

Quando la shell vede un carattere jolly, espande il carattere jolly per creare un elenco di nomi di file corrispondenti prima di eseguire il comando che è stato richiesto. Come eccezione, se un’espressione jolly non corrisponde a qualsiasi file, Bash passerà l’espressione come argomento al commandcome è. Ad esempio, digitando ls *.pdf nella directory molecules (che contiene solo file con nomi che terminano con .pdb) si ottiene un messaggio di errore che indica che non esiste alcun file chiamato *.pdf.Tuttavia, generalmente comandi comewc els vedono gli elenchi dei nomi dei file corrispondenti a queste espressioni, ma non le wildcard. È la shell, non gli altri programmi, che si occupa diespandere i caratteri jolly, e questo è un altro esempio di progettazione ortogonale.

Elenca i nomi dei file corrispondenti a un modello

Quando viene eseguito nella directory molecules, che ls willproduce questo output?

ethane.pdb methane.pdb

  1. ls *t*ane.pdb
  2. ls *t?ne.*
  3. ls *t??ne.pdb
  4. ls ethane.*

Solution

The solution is

shows all files whose names contain zero or more characters (*) followed by the letter t, then zero or more characters (*) followed by ane.pdb. Questo dà .

mostra tutti i file i cui nomi iniziano con zero o più caratteri (*), seguita dalla lettera t, quindi un singolo carattere (?), quindi ne. seguito da zero o più caratteri (*). Questo ci daràoctane.pdb epentane.pdb ma non corrisponde a nulla che termina inthane.pdb.

risolve i problemi dell’opzione 2 facendo corrispondere due caratteri (??) trate ne. Questa è la soluzione.

mostra solo i file che iniziano con ethane..

Maggiori informazioni sui caratteri jolly

Sam ha una directory contenente dati di calibrazione, set di dati e descrizioni dei set di dati:

.├── 2015-10-23-calibration.txt├── 2015-10-23-dataset1.txt├── 2015-10-23-dataset2.txt├── 2015-10-23-dataset_overview.txt├── 2015-10-26-calibration.txt├── 2015-10-26-dataset1.txt├── 2015-10-26-dataset2.txt├── 2015-10-26-dataset_overview.txt├── 2015-11-23-calibration.txt├── 2015-11-23-dataset1.txt├── 2015-11-23-dataset2.txt├── 2015-11-23-dataset_overview.txt├── backup│ ├── calibration│ └── datasets└── send_to_bob ├── all_datasets_created_on_a_23rd └── all_november_files

Prima di partire per un’altra gita, vuole eseguire il backup dei suoi dati e inviare alcuni set di dati al suo collega Bob. Sam usa i seguenti comandiper portare a termine il lavoro:

$ cp *dataset* backup/datasets$ cp ____calibration____ backup/calibration$ cp 2015-____-____ send_to_bob/all_november_files/$ cp ____ send_to_bob/all_datasets_created_on_a_23rd/

Aiuta Sam compilando gli spazi vuoti.

La cartella con struttura dovrebbe essere simile a questo

.├── 2015-10-23-calibration.txt├── 2015-10-23-dataset1.txt├── 2015-10-23-dataset2.txt├── 2015-10-23-dataset_overview.txt├── 2015-10-26-calibration.txt├── 2015-10-26-dataset1.txt├── 2015-10-26-dataset2.txt├── 2015-10-26-dataset_overview.txt├── 2015-11-23-calibration.txt├── 2015-11-23-dataset1.txt├── 2015-11-23-dataset2.txt├── 2015-11-23-dataset_overview.txt├── backup│ ├── calibration│ │ ├── 2015-10-23-calibration.txt│ │ ├── 2015-10-26-calibration.txt│ │ └── 2015-11-23-calibration.txt│ └── datasets│ ├── 2015-10-23-dataset1.txt│ ├── 2015-10-23-dataset2.txt│ ├── 2015-10-23-dataset_overview.txt│ ├── 2015-10-26-dataset1.txt│ ├── 2015-10-26-dataset2.txt│ ├── 2015-10-26-dataset_overview.txt│ ├── 2015-11-23-dataset1.txt│ ├── 2015-11-23-dataset2.txt│ └── 2015-11-23-dataset_overview.txt└── send_to_bob ├── all_datasets_created_on_a_23rd │ ├── 2015-10-23-dataset1.txt │ ├── 2015-10-23-dataset2.txt │ ├── 2015-10-23-dataset_overview.txt │ ├── 2015-11-23-dataset1.txt │ ├── 2015-11-23-dataset2.txt │ └── 2015-11-23-dataset_overview.txt └── all_november_files ├── 2015-11-23-calibration.txt ├── 2015-11-23-dataset1.txt ├── 2015-11-23-dataset2.txt └── 2015-11-23-dataset_overview.txt

Soluzione

$ cp *calibration.txt backup/calibration$ cp 2015-11-* send_to_bob/all_november_files/$ cp *-23-dataset* send_to_bob/all_datasets_created_on_a_23rd/

l’Organizzazione di File e Directory

Jamie sta lavorando su un progetto e vede che il suo file non sono molto ben organizzata:

$ ls -F
analyzed/ fructose.dat raw/ sucrose.dat

fructose.dat e sucrose.dat file contengono uscita dal suo dataanalysis. Quali comandi trattati in questa lezione ha bisogno di eseguire in modo che i comandi sottostanti producano l’output mostrato?

$ ls -F
analyzed/ raw/
$ ls analyzed
fructose.dat sucrose.dat

Solution

mv *.dat analyzed

Jamie needs to move her files fructose.dat and sucrose.dat to the analyzed directory.The shell will expand *.dat to match all .dat files in the current directory.The mv command then moves the list of .file dat nella directory ‘analizzata’.

Riprodurre una struttura di cartelle

stai iniziando un nuovo esperimento, e vorrei duplicare il directorystructure dal precedente esperimento in modo da poter aggiungere nuovi dati.

Si supponga che l’esperimento precedente si trovi in una cartella denominata ‘2016-05-18’,che contiene una cartelladata che a sua volta contiene cartelle denominateraw eprocessed che contengono file di dati. L’obiettivo è copiare la struttura della folder della cartella 2016-05-18-data in una cartella chiamata 2016-05-20in modo che la struttura della directory finale sia simile a questa:

2016-05-20/└── data ├── processed └── raw

Quale dei seguenti comandi sarebbe raggiungere questo obiettivo?Cosa farebbero gli altri comandi?

$ mkdir 2016-05-20$ mkdir 2016-05-20/data$ mkdir 2016-05-20/data/processed$ mkdir 2016-05-20/data/raw
$ mkdir 2016-05-20$ cd 2016-05-20$ mkdir data$ cd data$ mkdir raw processed
$ mkdir 2016-05-20/data/raw$ mkdir 2016-05-20/data/processed
$ mkdir -p 2016-05-20/data/raw$ mkdir -p 2016-05-20/data/processed
$ mkdir 2016-05-20$ cd 2016-05-20$ mkdir data$ mkdir raw processed

Soluzione

I primi due set di comandi di raggiungere questo obiettivo.Il primo set utilizza percorsi relativi per creare la directory di livello superiore primale sottodirectory.

Il terzo set di comandi darà un errore perché il comportamento predefinito dimkdir non creerà una sottodirectory di una directory non esistente: le cartelle di livello intermedio devono essere create prima.

La quarta serie di comandi raggiunge questo obiettivo. Ricorda, l’opzione-p, seguita da un percorso di una o più directory, farà sì chemkdir crei qualsiasi sottodirectory intermedia come richiesto.

Il set finale di comandi genera le directory ‘raw’ e ‘processed’ allo stesso livello della directory ‘data’.

Punti chiave

  • cp copia un file.

  • mkdir crea una nuova directory.

  • mv sposta (rinomina) un file o una directory.

  • rm rimuove (elimina) un file.

  • *corrisponde a zero o più caratteri in un nome di file, quindi*.txtcorrisponde a tutti i file che terminano in.txt.

  • ?corrisponde a qualsiasi singolo carattere in un nome di file, quindi ?.txtcorrisponde a a.txtma non any.txt.

  • L’uso del tasto Control può essere descritto in molti modi, tra cuiCtrl-XControl-Xe^X.

  • La shell non ha un cestino: una volta che qualcosa viene cancellato, è davvero andato.

  • La maggior parte dei nomi dei file sono something.extension. L’estensione non è richiesta e non garantisce nulla, ma viene normalmente utilizzata per indicare il tipo di dati nel file.

  • A seconda del tipo di lavoro che fai, potresti aver bisogno di un editor di testo più potente di Nano.