Materiale per gli studenti della riga di comando

La riga di comando è un modo per controllare un computer senza una GUI. In questa unità impareremo i comandi di base per interagire con il computer.

Concetti principali

  • Gli studenti si sposteranno sul computer con i comandi.
  • Gli studenti creeranno, sposteranno, copieranno ed elimineranno file e cartelle.

Che cos'è la riga di comando?

La maggior parte degli utenti utilizza quasi sempre una Graphic User Interface (GUI) per interagire con il computer. Le GUI in genere si basano su un mouse o sul tocco per manipolare le finestre con icone, pulsanti, barre di scorrimento e così via.

La riga di comando è una visualizzazione alternativa del computer. A volte chiamata "shell", "terminale", "bash" o "interfaccia di testo", la riga di comando è:

  • Un modo di interagire con un programma per computer in cui l'utente digita i comandi. Ad esempio:
open README.txt
  • Un modo per navigare e utilizzare il computer senza mouse.
  • Un modo non grafico per creare, leggere, aggiornare, gestire ed eliminare file e directory. Ad esempio:
mv README.txt readme.txt

La GUI e la riga di comando mostrano la stessa cosa. Sono modi diversi di interagire con il computer.

Quando utilizziamo la riga di comando?

Le interfacce a riga di comando sono spesso preferite dagli sviluppatori:

  • Forniscono un mezzo più conciso per controllare un programma o un sistema operativo. Perché? Poiché tutto avviene nella stessa finestra, con la pratica è meno faticoso che trovare e manipolare gli elementi con il mouse.
  • Mostrano facilmente le opzioni per controllare un comando. Perché? I menu nelle GUI forniscono un numero molto ridotto di opzioni. Nella riga di comando esistono centinaia di comandi e alcuni caratteri aggiunti a un comando possono fargli fare molte cose diverse. Ad esempio:
  • ls File di elenco di base
  • ls -a Elenca tutti i file, inclusi quelli normalmente nascosti
  • ls -l Elenco lungo, che mostra informazioni su ogni file
  • ls -R Ricorsivo, elenca i contenuti delle directory
  • ls -la Elenco lungo di tutti i file
  • Consentono di agire facilmente su molti file contemporaneamente in modo complesso.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
  • Forniscono un mezzo per programmare il sistema operativo (programmi shell), ad esempio l'esempio precedente è un programma shell molto semplice progettato per modificare le immagini con nomi di file che terminano con .png.

Riga di comando in azione

Componenti di un comando della riga di comando

Tutti i comandi sono composti da tre parti:

  • Il comando (o l'utilità) viene sempre per primo.
  • I flag sono facoltativi, a seconda dell'utilità che utilizzi. I flag iniziano sempre con un segno meno (-).
  • Gli argomenti sono gli elementi su cui il comando deve agire o le informazioni necessarie. Spesso nomi file.

Inquadratura

Contesto e scopo

La riga di comando è un modo per controllare un computer senza mouse o GUI (Graphic User Interface). Prima che Apple Computer iniziasse a creare macchine con icone e cartelle su cui si poteva fare clic, l'unico modo per interagire con il computer era tramite la riga di comando.

In qualità di sviluppatori, utilizziamo la riga di comando perché è molto più veloce e potente della GUI. Non è necessario perdere tempo a fare clic. La riga di comando può consentirti di eseguire praticamente qualsiasi interazione con il computer.

Poiché il terminale è un'interfaccia molto più semplice, ha un grande vantaggio rispetto alla GUI quando devi connetterti in remoto a un computer tramite un collegamento di rete. È un'operazione che gli sviluppatori eseguono molto spesso, ad esempio quando viaggiano.

In questa lezione impareremo i comandi di base per interagire con il computer: creare file e directory, spostare cartelle, cambiare directory ed elencare i contenuti di una cartella.

Obiettivi di apprendimento

Gli studenti potranno

  • Utilizzare Terminale per navigare tra file e cartelle
  • Elenca i contenuti di una cartella
  • Creare file e cartelle dalla riga di comando
  • Spostare file e cartelle
  • Copiare file e cartelle
  • Eliminare file e cartelle

Per iniziare

Accedere al terminale

Inquadratura e scopo della sezione

Il terminale fornisce un'interfaccia a riga di comando (CLI) al sistema operativo. Con questo strumento puoi dare al computer istruzioni dirette basate su testo.

Per farlo, dobbiamo avviare il terminale in base al sistema che stai utilizzando.

Quando viene avviato il terminale, si apre nella directory principale del computer (qualunque sia il nome che hai dato al computer). La tua home directory è indicata dalla tilde ~.

Quando parliamo del nostro mondo all'interno del Terminale, le directory sono uguali alle cartelle (a volte le chiamiamo semplicemente directory).

Modifica delle directory

Inquadratura e scopo della sezione

Per comunicare con il nostro computer nel terminale e dirgli cosa vogliamo fare, dobbiamo parlare un linguaggio comune. La riga di comando comprende i comandi scritti nel linguaggio di scripting bash. I comandi sono acronimi o abbreviazioni di parole inglesi.

Quando navighi nel terminale, è importante sapere dove ti trovi (questo vale anche nella vita reale: se vuoi andare da qualche parte, devi prima conoscere la tua posizione attuale).

# See your current location - abbreviation for 'print working directory'
pwd

Elenca i file e le directory disponibili

All'interno della directory di lavoro, probabilmente ci sono diversi file a cui puoi accedere. Normalmente, ci affidiamo a segnali visivi come le icone per sapere cosa è disponibile, ma sarebbe difficile navigare nel computer se dovessimo indovinare la posizione di file e cartelle. Nella riga di comando, utilizzeremo un comando specifico per elencare ciò a cui possiamo accedere da qualsiasi directory di lavoro / qualsiasi posizione.

Per vedere quali file o cartelle si trovano nella directory corrente, utilizza il comando ls (abbreviazione di elenco) per visualizzare un elenco dei contenuti.

# See files and folders in current location - abbreviation for 'list'
ls

Modifica directory di lavoro

Se hai bisogno di accedere a un file o a una directory non presente nell'elenco, potresti voler modificare la directory di lavoro per accedervi più facilmente.

La sintassi per indicare alla riga di comando di spostarti in una nuova directory (nota anche come cartella) è cd seguita (sulla stessa riga) dal percorso della nuova cartella.

Se vai a una directory all'interno della directory in cui ti trovi (ovvero una sottocartella della tua directory di lavoro), utilizza il comando cd seguito dal nome della cartella.

# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents

Puoi anche navigare a partire dalla directory della casa ~.

# Add a `~/` to begin from the home directory.
cd ~/Downloads

Se hai cambiato directory, ma devi tornare alla directory Home, puoi farlo tornando direttamente alla home utilizzando ~ o utilizzando .. per spostarti di un livello verso l'alto.

# Option 1: navigate directly to the home directory
cd ~

# Option 2: navigate back one level
cd ..

Tieni presente che cd .. torna indietro di un solo livello, quindi se hai cambiato directory tre volte (scendendo di tre livelli), dovrai usare cd .. tre volte per tornare alla home page, ma dovrai usare cd ~ una sola volta.

Mini sfide

  • Usa ls per vedere cosa contiene la directory corrente.
  • Torna alla directory home e utilizza ls per visualizzare i contenuti della cartella home.
  • Scegli il nome di una delle cartelle all'interno della directory home e vai a questa nuova cartella.
  • Utilizza il comando list per vedere cosa contiene.

Suggerimento professionale: completamento automatico con tab

Quando modifichi le directory con il comando cd, un singolo errore di battitura impedirà l'esecuzione corretta del comando. Tuttavia, l'utilizzo del tasto tab completerà automaticamente il nome di tutte le directory disponibili all'interno della directory corrente. Quindi, anziché digitare cd Documents, digita solo cd Do, poi premi il tasto tab e il terminale completerà automaticamente il comando cd Documents/ (/ alla fine è facoltativo, ma ti informa che la destinazione è una directory).

Questo completamento automatico non solo fa risparmiare tempo quando funziona, ma fornisce anche informazioni preziose quando non funziona. Se il pulsante Tab non viene completato automaticamente, probabilmente hai riscontrato uno dei tre problemi più comuni:

  1. La directory a cui vuoi passare non è accessibile dalla tua attuale directory di lavoro.
  2. Esistono due directory con nomi iniziali simili (ad esempio Documents e Downloads) e non hai fornito informazioni sufficienti per consentire al completamento automatico di sapere quale ti interessa. Premi di nuovo tab per visualizzare un elenco delle directory che potrebbero corrispondere a ciò che hai digitato. Quindi digita un po' di testo in più (quanto basta per trovare una sola corrispondenza) e premi di nuovo tab.
  3. Hai già incluso un errore ortografico nella prima metà della parola.

Prima prendi l'abitudine di utilizzare il tasto Tab per completare automaticamente i comandi, più è probabile che tu riesca a gestire situazioni frustranti in cui i comandi sembrano non funzionare.

Directory principali e secondarie

Directory e file possono avere relazioni di tipo secondario e principale tra loro. Se directory_b si trova all'interno di directory_a, directory_b viene definito elemento secondario di directory_a. directory_a è quindi noto come genitore di directory_b. Se un terzo elemento, my_file, si trova all'interno di un directory_b, viene considerato un elemento secondario di directory_b e un elemento nipote di directory_a.

Queste relazioni sono spesso illustrate nei forum con un diagramma di testo, come questo:

directory_a/
  directory_b/
    my_file

Tieni presente che i nomi delle directory terminano con /, mentre i nomi dei file no. Questa organizzazione gerarchica è generalmente indicata come struttura ad albero di un file system.

Fratelli e sorelle

Se ci sono più file o cartelle allo stesso livello, vengono chiamati fratelli. Esempio: se file_b e file_c si trovano all'interno di directory_a, sono fratelli.

Il diagramma di testo sarà simile a questo:

directory_a/
  file_b
  file_c

Tieni presente che, poiché file_b e file_c sono elementi di pari livello, hanno lo stesso rientro.

Percorsi file

Ecco un diagramma di testo più complesso che include relazioni sia principali-secondarie che tra fratelli.

north_america/
  united_states/
    new_york/
      new_york_city/
        manhattan
        queens
        staten_island
        bronx
        brooklyn
    california/
      mountain_view
      los_angeles
    illinois/
      chicago
  mexico/
    mexico_city

In questo esempio, new_york_city/ è un nome di directory, ma ha anche un percorso, che indica come raggiungerla: ~/north_america/united_states/new_york/new_york_city/.

Per passare alla directory new_york_city/,, puoi spostarti passo passo utilizzando i nomi oppure puoi raggiungere la directory in un unico comando utilizzando il percorso.

# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/

# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/

Riepilogo dei comandi di navigazione

# See your current location - abbreviation for 'print working directory'
pwd

# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads

# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory

# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..

# Will take you back home
cd

Mini sfide

  • Utilizza pwd per scoprire la cartella corrente in cui ti trovi.
  • Passa a una directory diversa e conferma la nuova posizione.
  • Riprova e vai a un'altra cartella. Utilizza i nuovi comandi per visualizzare la tua posizione e i file all'interno di questa directory.

Creazione di file e directory

Inquadratura e scopo della sezione

In qualità di sviluppatori, dovremo creare file con il codice. Per mantenere organizzati questi file, dobbiamo creare cartelle / directory in cui archiviarli.

Tieni presente la tua posizione nel terminale prima di creare file e cartelle.

# See your current location.
pwd

Per creare un file, utilizza il comando touch seguito dal nome del file.

# `touch` creates a new file.
touch style.css

Quando crei i file, aggiungi un'estensione del file per specificarne il tipo. Tipi di file di esempio:

  • .js make as a JavaScript file
  • .html crea un file HTML
  • .css crea un file CSS
  • .md crea un file Markdown

I nomi dei file non devono includere spazi.

# make a file - this will create a file in the current folder
touch my_text_file.txt

# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css

Creare più file

Puoi creare più file contemporaneamente includendo spazi tra ciascun nome.

# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

Creare directory

Per creare una directory / cartella, utilizza il comando mkdir , abbreviazione di "make directory", seguito dal nome della cartella.

# make a folder - this will create a directory in the current folder
mkdir my_new_folder

# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder

Creazione di più directory

Puoi creare più cartelle contemporaneamente includendo spazi tra un nome e l'altro.

# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three

Mini sfide

  • Crea un nuovo file.
  • Crea più file con un solo comando.
  • Crea una nuova directory.
  • Crea altre nuove directory. Prova a utilizzare un solo comando.
  • Utilizzando le tue conoscenze sulla navigazione nelle directory e sulla creazione di file e cartelle, crea un "albero genealogico" sul desktop utilizzando file e cartelle.

Spostamento e copia

Spostamento di file e directory

Inquadratura e scopo della sezione

Possiamo spostare un file o una cartella sulla riga di comando, ma dobbiamo sempre specificare tre elementi:

  1. Utilizziamo il comando mv, abbreviazione di move.
  2. Segui il comando di spostamento con il nome del file o della cartella che vuoi spostare.
  3. Segui il nome del file con la destinazione in cui vuoi spostarlo.

Ad esempio, se hai una struttura di file come questa:

my_child_folder/
my_parent_folder/

Puoi notare che non è organizzato come dovrebbe: sono fratelli quando dovrebbero essere genitore e figlio. Utilizza questo comando:

# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/

La struttura risultante sarà simile a questa.

my_parent_folder/
  my_child_folder/

Ecco alcune altre varianti del comando mv:

# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder

Avviso: mv è anche il comando per rinominare un file utilizzando la sintassi mv old_name new_name. Ciò significa che se sposti un file in una directory inesistente o se scrivi in modo errato la destinazione, il file stesso verrà rinominato anziché spostato.

Mini sfide

  1. Crea 5 file di testo (.txt).
  2. Crea una nuova directory.
  3. Sposta i cinque file che hai creato nella cartella.
  4. Crea una cartella e sposta questa nuova cartella all'interno di un'altra cartella.

Copia di file e directory

Inquadratura e scopo della sezione

Quando creiamo le nostre web app, potremmo voler duplicare un file (se stiamo creando due pagine web simili, potremmo non voler ricominciare da zero) e la sintassi del comando cp (copia) è molto simile a quella di mv.

Copia di un file

Il comando di copia è composto da tre parti:

  1. Il comando cp, abbreviazione di copia
  2. Il nome del file da copiare
  3. Il nome della copia (se rimane nella stessa cartella) o la posizione e il nome (se viene spostata in una cartella diversa).
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt

Se vuoi che la copia mantenga lo stesso nome dell'originale, puoi specificare la posizione della copia senza un nome file.

# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/

Avere molti file con lo stesso nome può creare confusione, quindi utilizza questo metodo solo se hai la certezza che sia quello che ti serve.

Copiare una directory

Copiare una cartella o una directory è un po' più complicato, perché probabilmente vuoi copiare non solo la cartella, ma anche tutto ciò che contiene.

  1. Il comando cp -R, abbreviazione di copy recursive, utilizzalo sia per le cartelle vuote che per quelle non vuote
  2. Il nome dell'origine (la cartella o il file che vogliamo spostare)
  3. Il nome della copia (se rimane nella stessa cartella) o la posizione e il nome (se viene spostata in una cartella diversa).

Avviso: quando specifichi il nome della copia, se il file o la cartella non è stato creato in precedenza, verrà creato quando esegui la copia. Se il file è stato creato prima dell'esecuzione del comando di copia, verrà sovrascritto tutto ciò che era presente in precedenza nel file, quindi fai attenzione.

# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy

# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy

Nota: il componente -R di cp -R è chiamato flag. I flag iniziano sempre con un trattino e vengono utilizzati in combinazione con i comandi per fornire istruzioni più specifiche su come deve essere eseguito il comando.

Mini sfide

  1. Crea un file denominato my_original.txt
  2. Crea una copia di my_original.txt con un nuovo nome nella stessa cartella.
  3. Crea una nuova directory.
  4. Crea una copia della directory, ma assegnale un nome diverso.
  5. Crea una copia del file copiato (dal passaggio 2), ma inseriscila nella directory copiata (dal passaggio 4).

Rimozione di file e cartelle

Inquadratura e scopo della sezione

Possiamo eliminare file e cartelle dalla riga di comando, ma questa operazione è definitiva.

Rimozione di un file

Per rimuovere un file, possiamo utilizzare il comando rm (abbreviazione di remove) seguito dal nome del file.

# delete a file in the working directory
rm unwanted_file.txt

# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt

Rimozione di una directory vuota

Per rimuovere una directory vuota , possiamo utilizzare il comando rmdir, abbreviazione di remove directory, seguito dal nome della cartella.

# delete an empty folder
rmdir empty_directory

# delete an empty folder
rmdir ~/Documents/my_files/empty_directory

Rimozione di una directory non vuota

Per rimuovere una cartella non vuota, dobbiamo inserire un flag -R, abbreviazione di ricorsivo, dopo il comando rm, che indica al computer di eliminare i contenuti all'interno della cartella. Come scorciatoia, alcuni sviluppatori utilizzano il flag -Rf che rimuove forzatamente tutto (altrimenti, potresti ricevere richieste di eliminazione di alcuni file o cartelle secondari).

# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty

# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty

Avviso: l'utilizzo del comando rm non è come il cestino o la sezione eliminata della posta elettronica: questi file non possono essere recuperati facilmente. Fai MOLTA ATTENZIONE quando elimini i file in questo modo.

Mini sfide

  1. Crea 4 file.
  2. Elimina due dei file.
  3. Crea una cartella.
  4. Crea un'altra cartella e un file al suo interno.
  5. Elimina entrambe le directory.

Puoi trovare il codice per questo lab nella seguente cartella all'interno del repository degli studenti che hai scaricato da GitHub: command-line/labs/around-the-world

Sfondo

Il tuo semestre all'estero è alle porte ed è ora di iniziare a pianificare i tuoi viaggi in Europa…

Nei prossimi tre mesi, ti aspetta un periodo di vita intensa, quindi vuoi assicurarti di sfruttare al meglio ogni viaggio nel fine settimana.

Fortunatamente non devi partire da zero e i tuoi amici ti hanno fornito alcune delle loro attività preferite del semestre all'estero. Purtroppo, alcuni file sono stati mescolati…

Non preoccuparti, con la magia della riga di comando li risolverai in un attimo.

Attività

Assicurati che ogni città si trovi nel paese corretto e che ogni cartella della città contenga i monumenti giusti. Fai attenzione o potresti ritrovarti ad Amsterdam a cercare la Torre Eiffel.

Se ti senti MOLTO sicuro di te, nascondi la GUI e affronta questa sfida direttamente dalla riga di comando. Durante questa operazione, devi rimanere nella cartella generale del giro del mondo, il che significa utilizzare percorsi assoluti quando fai riferimento a cartelle e file.

Una volta che ti sarai assicurato che tutto sia al posto giusto, tocca a te prendere il controllo dei prossimi mesi. Pensa a nuove città, paesi e monumenti che DEVI vedere e aggiungili all'albero dei file.

Complimenti! Ora sai come parlare con il computer. Pronto a fare un ulteriore passo avanti? Parliamo di estensioni…

Estensioni

  1. Mescola di nuovo tutti i tuoi file e poi scegli una città. Riorganizza di nuovo i file, rimanendo nella stessa città.
  2. Prova uno dei divertenti giochi a riga di comando collegati di seguito
    Terminus Game
    Advanced Game (preparati a fare ricerche su Google)
  3. Sei un grande fan di Star Wars? Prova a eseguire telnet towel.blinkenlights.nl nella riga di comando e premi Invio… Tieni presente che nelle versioni recenti di macOS il comando telnet non è più installato per impostazione predefinita; in questo caso, è possibile utilizzare il comando nc towel.blinkenlights.nl 23.

Puoi trovare il codice per questo lab nella seguente cartella all'interno del repository degli studenti che hai scaricato da GitHub: command-line/labs/bashing-away-repetition

Pronto a eliminare la ripetizione dall'utilizzo quotidiano della riga di comando? Ottimo, anche io.

Sfondo

Se c'è una cosa che i programmatori odiano, è la ripetizione. In qualità di informatici, il nostro compito è fare in modo che il computer svolga la maggior parte del nostro lavoro possibile. La scrittura di script bash ci aiuterà a rendere più efficiente l'utilizzo della riga di comando.

Innanzitutto, che cos'è uno script bash?

OTTIMA domanda. Per fortuna il nostro amico Ryan Chadwick, di questo ottimo sito per trovare tutorial sulla riga di comando, ha una risposta per noi.

Uno script Bash ci consente di definire una serie di azioni che il computer eseguirà senza che noi dobbiamo inserire i comandi. Se una determinata attività viene svolta spesso o è ripetitiva, uno script può essere uno strumento utile.

Nessuna ripetizione? Ecco di cosa sto parlando.

Tutorial

Innanzitutto, per poter eseguire lo script, devi concedere l'autorizzazione al tuo computer. Per farlo, esegui il comando riportato di seguito.

chmod 755 myScript.sh

Ok, è il momento di scrivere il tuo primo programma. Vai a myScript.sh (vedi se riesci ad aprire il file dalla riga di comando). Alla fine del file, aggiungi:

echo "Hello World"

Ora esegui:

./myScript.sh

nel terminale. ** TA DA ** dovresti vedere "Hello World" stampato nel terminale.

celebrazione

Tutto ciò che scrivi nello script bash verrà eseguito come se lo avessi digitato nel terminale. Vediamo un altro esempio prima di passare alle estensioni. Innanzitutto crea un file per lo script. Puoi chiamarlo come preferisci, ma deve avere l'estensione .sh. Successivamente, assicurati di concedere l'autorizzazione di esecuzione allo script digitando chmod 755 e poi il nome dello script nel terminale e premendo Invio. Ogni volta che avvii un nuovo script bash, assicurati di completare questi due passaggi.

Intro Challenge

Ora proviamo a scrivere uno script che crei una nuova cartella. Quale comando crea una nuova cartella? Se stai pensando a una parola che inizia con m e termina con kdir, sei sulla strada giusta. Scrivi il comando che creerà la nuova cartella e assegnale un nome accattivante nel nuovo file .sh, poi eseguilo nel terminale.

Se funziona, passa alle altre sfide elencate di seguito. Se hai ancora qualche dubbio, ripassa il lab sul giro del mondo e pensa a come hai creato le nuove cartelle di paesi e città.

Non aver paura di utilizzare il tutorial indicato sopra e preparati a sfoderare le tue migliori capacità di ricerca su Google. Scrivi ed esegui script che:

Attività principali

  1. Aggiungi al file creato in precedenza un comando che vada alla cartella che stai creando. (Quale comando utilizziamo per cambiare directory?)
  • Aggiungi un timestamp al nome della nuova cartella. Ad esempio, il programma deve creare una cartella denominata "2017-12-07my_super_cool_folder"
  1. Stampa "La mia directory attuale è: " seguito dalla directory di lavoro e "Ecco un elenco di tutto ciò che contiene questa directory. " seguito dal contenuto della directory corrente.
  2. Scopri come fornire un input allo script Bash e creare un file in base a questa stringa di input. Il tutorial collegato in precedenza nel lab contiene alcuni ottimi esempi nella sezione delle variabili da consultare.
  3. Chiedi all'utente il suo nome, quindi stampa "Piacere di conoscerti, inserisci il suo nome qui".
  • Prova a chiedere all'utente maggiori informazioni e a creare un messaggio personalizzato per lui.

CONTESTO

La riga di comando (o Terminale) consente un'interazione diretta con il sistema operativo del computer (OS), ovvero tutto ciò che fa la GUI (Graphic User Interface), ma tramite comandi di testo, dalla navigazione alla creazione di nuovi file all'esecuzione di script. La riga di comando verrà utilizzata per aprire i file e per avviare l'ambiente di sviluppo quando utilizzi Google App Engine.

Riga di comando in azione

Accedere al terminale

Scorciatoia per Mac:

  • Apri Spotlight con Comando + spazio.
  • Digita Terminale nella ricerca Spotlight.
# See your current location - abbreviation for 'print working directory'.
pwd

# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads

# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory

# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..

# Return home.
cd

# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```

#### File Path Shorthand `~`

The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.

This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.

### <a id="view"></a>Viewing the Contents of Folders

```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls

Creare file e cartelle

Creazione di file

# Make a file - this will create a file in the current folder.
touch my_text_file.txt

# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css

# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

Creazione di cartelle

# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder

# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder

# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three

Spostare file e cartelle

Spostamento dei file

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist.  Read below for more details on renaming.

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder

Spostamento delle cartelle

# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder

# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder

Lo spostamento è una ridenominazione

Tieni presente che mv è anche lo stesso comando utilizzato per rinominare file o cartelle.

# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt

Copia di file e cartelle

Copia di file

# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt

Copia di cartelle

# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy

# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy

Eliminazione di file e cartelle

Eliminazione di file

# Delete a file in the current working directory.
rm unwanted_file.txt

# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt

Eliminazione delle cartelle

# Delete an empty folder.
rmdir empty_directory

# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty

Suggerimenti utili

  • Esercitati a utilizzare la riga di comando, anche quando pensi di non averne bisogno. Col tempo migliorerai.
  • Il tasto tab completerà automaticamente il nome del file o della cartella (può fare distinzione tra maiuscole e minuscole).
  • Se rimane un solo file o cartella corrispondente, il completamento automatico verrà eseguito.
  • Se ci sono più file o cartelle corrispondenti, premi due volte Tab per visualizzare un elenco delle corrispondenze rimanenti.
  • La freccia su / giù scorre la cronologia dei comandi, in modo da non doverli digitare di nuovo.
  • Utilizza il comando clear per cancellare la finestra del terminale. In questo modo, tutto il tuo lavoro precedente viene conservato. Scorri verso l'alto per visualizzarlo.
  • Usa reset per riavviare il terminale. In questo modo, il lavoro precedente non verrà visualizzato sullo schermo, ma è possibile risolvere diversi problemi se il terminale inizia a comportarsi in modo imprevedibile.
  • Premi option + arrow per spostare il cursore di una parola

Riepilogo delle best practice

  • Naviga nel terminale utilizzando cd, cd .. o cd <folder name>.
  • Visualizza i contenuti delle cartelle utilizzando ls.
  • Crea file utilizzando touch; crea cartelle utilizzando mkdir.
  • Sposta file e cartelle utilizzando mv <item to move> <destination>.
  • Copia file e cartelle utilizzando cp <item to copy> <destination>.
  • Elimina file e cartelle utilizzando rm <item to remove>.

Domanda 1

Cosa useresti per identificare la tua attuale directory di lavoro?

  1. pwd
  2. ls
  3. cd
  4. mkdir
  5. touch

Domanda 2

Come faresti a spostarti di due livelli dalla tua attuale directory di lavoro?

  1. mv ~
  2. cd ../..
  3. mv up/up
  4. cd ^(2)

Domanda 3

Quale comando utilizzeresti per rinominare un file?

  1. mv
  2. cd
  3. ls
  4. python
  5. rename

Domanda 4

Perché il comando mv script.py genera un errore?

  1. Perché "script.py" è un nome file non valido.
  2. Perché il comando mv non può essere seguito da altre informazioni.
  3. Questa è una domanda trabocchetto, non genererebbe un errore.
  4. Perché lo spostamento di un file richiede almeno due argomenti: una destinazione e una destinazione

Domanda 5

Che cosa farebbe il comando cd ~?

  1. Cambia la directory di lavoro con la home directory.
  2. Ripeti il comando precedente.
  3. Utilizza un algoritmo per determinare il comando più utile in quel momento.
  4. Genera un errore.

Domanda 6

Quale dei seguenti NON è un motivo per utilizzare il tasto Tab per completare automaticamente i nomi dei file?

  1. Perché ti fa risparmiare tempo.
  2. Perché aiuta a eliminare gli errori ortografici.
  3. Perché richiede meno potenza di elaborazione.

Domanda 7

Se un nuovo sviluppatore tenta di creare un file denominato "my script.py", perché il comando touch my script.py non funziona?

  1. perché touch non può creare nuovi file.
  2. Perché .py non è un'estensione di file valida.
  3. perché creerà due file, uno chiamato "my" e uno chiamato "script.py", anziché uno solo.
  4. Perché è impossibile creare nuovi file dalla riga di comando.

Domanda 1

Cosa useresti per identificare la tua attuale directory di lavoro?

pwd

Domanda 2

Come faresti a spostarti di due livelli dalla tua attuale directory di lavoro?

Con cd ../.. sali di due livelli (ogni .. rappresenta un livello superiore).

Domanda 3

Quale comando utilizzeresti per rinominare un file?

mv viene utilizzato per spostare un file da una posizione a un'altra e può essere utilizzato anche per modificare il nome del file.

Domanda 4

Perché il comando mv script.py genera un errore?

Il comando mv richiede due argomenti: un file di origine e un file di destinazione.

Domanda 5

Che cosa farebbe il comando cd ~?

Cambia la directory di lavoro con la directory principale. Il carattere speciale ~ viene utilizzato per identificare la home directory dell'utente corrente. Può essere utilizzato anche in combinazione con un nome utente diverso: ~user2 per indicare la cartella Home.

Domanda 6

Quale dei seguenti NON è un motivo per utilizzare il tasto Tab per completare automaticamente i nomi dei file?

Perché richiede meno potenza di elaborazione non è corretta. tab richiede una quantità (spesso trascurabile) di potenza di elaborazione per scansionare le cartelle alla ricerca del nome file da completare automaticamente, ma consente di risparmiare tempo ed evitare errori ortografici durante il processo.

Domanda 7

Se un nuovo sviluppatore tenta di creare un file denominato "my script.py", perché il comando touch my script.py non funziona?

Verranno creati due file anziché uno solo. Il comando touch creerà nuovi file. Nel terminale gli spazi sono separatori, non caratteri da includere nel nome del file. È meglio evitarli del tutto, ma se devi utilizzarli, il nome del file deve essere racchiuso tra virgolette doppie:

touch "my script.py"

Domanda 1

Il comando del terminale per cambiare directory è:

  1. move
  2. mkdir
  3. pwd
  4. cd

Domanda 2

Quale comando eseguiresti se volessi passare alla cartella principale della directory di lavoro corrente?

  1. cd up
  2. cd .
  3. cd ..
  4. cd ~

Domanda 3

Quale comando viene utilizzato per creare file?

  1. touch
  2. mkdir
  3. create
  4. pwd

Domanda 4

Quale dei seguenti comandi creerà due file denominati index.html e style.css?

  1. touch index.html, touch style.css
  2. touch index.html, style.css
  3. touch index.html style.css
  4. touch index.html + style.css

Domanda 5

Quale comando utilizzi per rinominare un file o una cartella?

  1. rename
  2. move
  3. mv
  4. rm

Domanda 6

Quale flag devono avere i comandi rm e cp per funzionare sulle cartelle?

  1. -f
  2. -r
  3. -x
  4. -d

Domanda 7

Per spostare projects in ~/Documents e rinominarlo in Projects, quale comando deve essere inserito nello spazio vuoto?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
  1. pwd
  2. cd projects
  3. mv ~ projects
  4. cd ~/Documents
  5. ls

Domanda 8

Che cosa farà il seguente comando?

rm -r projects

  1. Elimina un file chiamato projects
  2. Elimina una cartella denominata projects
  3. Rinomina un file chiamato projects
  4. Cerca projects nei contenuti della directory corrente

Domanda 1

Il comando del terminale per cambiare directory è:

Il comando del terminale per cambiare directory è cd. Il comando stesso è l'abbreviazione di "change directory" (cambia directory).

Domanda 2

Quale comando eseguiresti se volessi passare alla cartella principale della directory di lavoro corrente?

Il comando per passare alla cartella principale è cd ..

Domanda 3

Quale comando viene utilizzato per creare file?

Il comando per creare file è touch

Domanda 4

Quale dei seguenti comandi creerà due file denominati index.html e style.css?

Il comando touch index.html style.css creerà i due file. Non è necessaria alcuna virgola e in questo modo è possibile creare un numero qualsiasi di file, separati da spazi.

Domanda 5

Quale comando utilizzi per rinominare un file o una cartella?

Sebbene stia per "sposta" e possa essere utilizzato per spostare file o cartelle, mv può essere utilizzato anche per rinominare file e cartelle.

Domanda 6

Quale flag devono avere i comandi rm e cp per funzionare sulle cartelle?

I comandi rm e cp richiedono il flag -r per funzionare sulle cartelle, poiché il flag -r sta per "ricorsivo" e riesegue il comando per tutti i file e le cartelle contenuti.

Domanda 7

Per spostare projects in ~/Documents e rinominarlo in Projects, quale comando deve essere inserito nello spazio vuoto?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects

Poiché iniziamo dalla home directory, dobbiamo eseguire cd ~/Documents per ottenere il comando finale da eseguire nella directory corretta.

Domanda 8

Che cosa farà il seguente comando?

rm -r projects

Il comando eliminerà un file O una cartella denominata projects perché viene chiamato con il flag -r o ricorsivo. Senza questo flag, questo comando funzionerebbe solo per eliminare un file con quel nome.