Materiale degli studenti a riga di comando

La riga di comando consente di controllare un computer senza una GUI. In questa unità imparerai i comandi di base per interagire con il nostro computer.

Concetti principali

  • Gli studenti si sposto nel computer tramite comandi.
  • Gli studenti possono creare, spostare, copiare ed eliminare file e cartelle.

Cos'è la riga di comando?

La maggior parte degli utenti utilizza spesso un'interfaccia utente grafica per interagire con il computer. In genere, le GUI si basano su mouse o tocco per manipolare le finestre con icone, pulsanti, barre di scorrimento e così via.

La riga di comando fornisce una visualizzazione alternativa del computer. Chiamata anche "conchiglia", "terminale", la riga di comando è:

  • Un metodo di interazione con un programma informatico in cui l'utente digita comandi. Ad esempio:
open README.txt
  • Una modalità per esplorare e utilizzare il computer senza un mouse.
  • Un modo non esplicito di creare, leggere, aggiornare, utilizzare ed eliminare file e directory, ad esempio:
mv README.txt readme.txt

La GUI e la riga di comando hanno lo stesso aspetto. Si tratta di diversi modi di interagire con il computer.

Quando utilizziamo la riga di comando?

Gli sviluppatori preferiscono spesso le interfacce a riga di comando:

  • Forniscono un mezzo più conciso per controllare un programma o un sistema operativo. Perché? Perché tutto avviene nella stessa finestra e con la pratica è meno difficile che cercare e manipolare le cose con un mouse.
  • Espone facilmente le opzioni per controllare un comando. Perché? I menu delle GUI offrono un numero molto ridotto di opzioni. Riga di comando contiene centinaia di comandi e l'aggiunta di alcuni caratteri a un comando può eseguire diverse operazioni, ad esempio
  • ls file di elenco di base
  • ls -a Elenca tutti i file, inclusi quelli normalmente nascosti
  • ls -l Elenco lungo, con informazioni su ogni file
  • ls -R ricorrente, elenca i contenuti delle directory
  • ls -la Elenca tutti i file lunghi
  • Consentono di intervenire facilmente su molti file contemporaneamente in modi complessi.
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 un programma shell molto semplice progettato per modificare le immagini con nomi file che terminano con .png.

Riga di comando in azione

Parti di un comando a riga di comando

Tutti i comandi sono composti da tre parti:

  • Il comando (o l'utilità) viene sempre eseguito per primo.
  • I flag sono facoltativi, a seconda dell'utilità in uso. I flag iniziano sempre con un - (meno).
  • Gli argomenti sono gli elementi su cui intervenire il comando o le informazioni necessarie. Spesso si tratta di nomi di file.

Utilizzo dei frame

Contesto & scopo

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

Come sviluppatori, utilizziamo la riga di comando perché è molto più veloce e potente della GUI, senza dover sprecare tempo facendo clic. La riga di comando ti consente di eseguire praticamente qualsiasi interazione con il tuo computer.

Poiché il terminale è un'interfaccia molto più semplice, presenta un grande vantaggio rispetto alla GUI quando è necessario connettersi da remoto a un computer tramite un link di rete. Questa è una cosa che gli sviluppatori eseguono molto spesso, ad esempio quando sono in viaggio.

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

Obiettivi di apprendimento

Gli studenti potranno

  • Utilizzare Terminale per sfogliare file e cartelle
  • Elencare 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

Accesso al terminale

Inquadratura della sezione e scopo

Terminale fornisce un'interfaccia a riga di comando (CLI) al sistema operativo. Consente di fornire al computer istruzioni dirette e testuali.

Per fare ciò, dobbiamo lanciare il terminale in base al sistema in uso.

All'avvio, il terminale viene avviato nella home directory del computer (qualunque sia il nome assegnato al computer). La home directory è indicata dalla tilde ~.

Quando discutiamo del nostro mondo all'interno del Terminale, le directory corrispondono alle cartelle (a volte possiamo semplicemente chiamarle directory).

Cambiamenti per le directory

Inquadratura della sezione e scopo

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

Quando navighi nel terminale, è importante sapere dove ti trovi (questo si traduce direttamente nella vita reale; se vuoi arrivare 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 tua directory di lavoro, è probabile che tu abbia accesso a diversi file. Normalmente ci basiamo su segnali visivi come le icone per dirci quali sono disponibili, ma sarebbe difficile navigare sul nostro computer se avremmo indovinato dove si trovavano i file e le cartelle. Nella riga di comando utilizzeremo un comando specifico per elencare cosa è possibile accedere da qualsiasi directory di lavoro/qualsiasi luogo.

Per scoprire quali sono i file o le cartelle presenti nella nostra directory attuale, utilizza il comando ls (abbreviazione di elenco) per vedere un elenco dei contenuti.

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

Cambia directory di lavoro

Se hai bisogno di accedere a un file o a una directory non presente nell'elenco, potresti 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, seguito sulla stessa riga, dal percorso della nuova cartella.

Se passi a una directory che si trova all'interno della directory in cui ti trovi attualmente (ovvero una sottocartella della 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 dalla home directory ~.

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

Se hai cambiato directory, ma devi tornare alla directory home, puoi tornare direttamente alla home page utilizzando ~ oppure usare .. per passare a un altro livello.

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

# Option 2: navigate back one level
cd ..

Tieni presente che cd .. aumenta di un solo livello, pertanto se hai cambiato tre directory finora (in basso di tre livelli), dovrai utilizzare cd .. tre volte per andare a casa, ma dovrai utilizzare cd ~ solo una volta.

Minisfide

  • Utilizza ls per visualizzare i contenuti nella directory corrente.
  • Torna alla home directory e utilizza ls per visualizzare i contenuti della cartella home.
  • Scegli il nome di una delle cartelle che si trovano all'interno della home directory e vai alla nuova cartella.
  • Usa il comando list per vedere cosa c'è all'interno.

Suggerimento avanzato: completamento automatico con tab

Quando modifichi le directory con il comando cd, un singolo errore di battitura impedirà l'esecuzione corretta del comando. Tuttavia, se utilizzi la chiave tab, il completamento automatico verrà eseguito con il nome di qualsiasi directory disponibile che si trova all'interno della directory corrente. Quindi, anziché digitare cd Documents, digita soltanto cd Do, quindi premi il tasto tab e il terminale completerà automaticamente il comando cd Documents/ (la / alla fine è facoltativa, ma indica 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 della scheda non viene completato automaticamente, probabilmente hai causato uno dei tre problemi più comuni:

  1. La directory che stai cercando non è accessibile dalla directory di lavoro corrente.
  2. Esistono due directory che hanno nomi iniziali simili (come Documents e Downloads) e non hai fornito informazioni sufficienti per il completamento automatico per capire quale vuoi. Premi di nuovo tab per visualizzare un elenco delle directory che potrebbero corrispondere al testo digitato. Quindi digitane un po' più (in modo che ci sia una sola corrispondenza) e premi di nuovo tab.
  3. Hai già incluso un errore di battitura nella prima metà della parola.

Prima puoi abituarti a utilizzare la scheda per completare automaticamente i comandi, maggiori saranno le probabilità di gestire situazioni frustranti in cui i comandi sembrano non funzionare.

Directory principali e secondarie

Le directory e i file possono avere relazioni secondarie e genitori. Se directory_b si trova all'interno di directory_a, directory_b viene definito figlio di directory_a. directory_a è poi noto come genitore di directory_b. Se un terzo elemento, my_file, fa parte di un directory_b, viene considerato un elemento secondario di directory_b e un nonno di directory_a.

Queste relazioni sono spesso illustrate sui forum con un diagramma di testo, come in questo caso:

directory_a/
  directory_b/
    my_file

Tieni presente che i nomi delle directory terminano con /, al contrario dei nomi dei file. Questa organizzazione gerarchica è comunemente definita la struttura ad albero di un file system.

Fratelli e sorelle

Se ci sono più file o cartelle sullo 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 avrebbe il seguente aspetto:

directory_a/
  file_b
  file_c

Poiché file_b e file_c sono fratelli, hanno lo stesso importo per il rientro.

Percorsi file

Di seguito è riportato un diagramma di testo più complesso che rappresenta le relazioni padre-figlio e tra fratelli e sorelle.

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 spiega come arrivarci: ~/north_america/united_states/new_york/new_york_city/.

Per cambiare la directory in new_york_city/,, puoi esplorare i passaggi utilizzando i nomi o accedere al percorso utilizzando un solo 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

Minisfide

  • Utilizza pwd per sapere qual è 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 vedere la tua posizione e visualizzare i file in questa directory.

Creare file e directory

Inquadratura della sezione e scopo

In qualità di sviluppatori, dovremo creare file con codice. Per mantenerli organizzati, dobbiamo creare cartelle / directory in cui archiviare i nostri file.

Fai attenzione alla 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 di file per specificare il tipo. Esempi di tipi di file:

  • .js crea come file JavaScript
  • .html crea un file HTML
  • .css crea un file CSS
  • .md crea un file di 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 ciascuno dei nomi.

# 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 directory

Per creare una directory/una cartella, utilizza il comando mkdir , un'abbreviazione di "make directory' - seguita 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

Creare più directory

Puoi creare più cartelle contemporaneamente inserendo spazi tra i nomi.

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

Minisfide

  • Crea un nuovo file.
  • Creare alcuni file in un comando.
  • Crea una nuova directory.
  • Crea qualche nuova directory. Prova a utilizzare un solo comando per farlo.
  • Con le informazioni note sulla navigazione nelle directory e sulla creazione di file e cartelle, crea un file "family_tree&#39" sul desktop utilizzando file e cartelle.

Trasloco e copia mobile

Spostamento di file e directory

Inquadratura della sezione e scopo

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

  1. Viene usato 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 vedere che è organizzato come dovrebbe essere: sono fratelli quando devono essere genitori e figli. Usa 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 sembra anche essere il comando per rinominare un file utilizzando la sintassi mv old_name new_name. Ciò significa che se sposta un file in una directory che non esiste o non hai digitato correttamente la destinazione, il file stesso verrà rinominato anziché spostato.

Minisfide

  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 spostala in un'altra.

Copia di file e directory

Inquadratura della sezione e scopo

Durante la creazione delle nostre app web, potremmo voler duplicare un file (se stiamo creando due pagine web simili, probabilmente non vorrai ricominciare da zero) e la sintassi del comando cp (copia) è molto simile a quella del metodo mv.

Copia di un file

Il comando copia è composto da tre parti:

  1. Il comando cp, abbreviazione di copy
  2. Il nome del file da copiare
  3. Il nome della copia (se si trova nella stessa cartella) o il percorso e il nome (se si sposta in un'altra cartella).
# 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 il percorso di copia senza il nome del 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/

La presenza di molti file con lo stesso nome può creare confusione, quindi utilizza questo metodo solo se hai la certezza di cui hai bisogno.

Copia di una directory

Copiare una cartella o una directory è un po' più complicato, perché è probabile che tu voglia copiare non solo la cartella, ma anche tutti i contenuti al suo interno.

  1. Il comando cp -R, abbreviazione di copy recursive, da utilizzare sia per le cartelle vuote sia per quelle non vuote.
  2. Il nome dell'origine (cartella o file che vogliamo spostare)
  3. Il nome della copia (se si trova nella stessa cartella) o il percorso e il nome (se si sposta in un'altra cartella).

Avviso: quando specifichi il nome della copia, se il file o la cartella non è stato creato in precedenza, verrà creato quando crei la copia. Se il file è stato creato prima di eseguire il comando di copia, sovrascriverà tutto ciò che era presente 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 è denominato flag. I flag iniziano sempre con un trattino e vengono utilizzati in combinazione con comandi per fornire istruzioni più specifiche su come eseguire quel comando.

Minisfide

  1. Crea un file denominato my_original.txt
  2. Crea una copia di my_original.txt con un nome nuovo 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 inseriscilo nella directory copiata (dal passaggio 4).

Rimozione di file e cartelle

Inquadratura della sezione e scopo

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

Rimuovere 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

Rimuovere una directory vuota

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

# delete an empty folder
rmdir empty_directory

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

Rimuovere una directory non vuota

Per rimuovere una cartella non vuota, dobbiamo inserire un flag -R, che è l'abbreviazione di recursive, 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 fortemente 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 è simile al cestino o alla sezione eliminata dell'email: non è possibile recuperarli facilmente. Quando procedi con l'eliminazione dei file, devi essere molto prudente.

Minisfide

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

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

Contesto

Il tuo semestre all'estero è dietro l'angolo ed è ora di iniziare a pianificare i tuoi viaggi europei...

Nel prossimo futuro, con tre mesi di viva, vuoi assicurarti di sfruttare al massimo ogni viaggio del fine settimana.

Per fortuna non parte da zero e i tuoi amici ti hanno offerto alcune delle loro attività preferite del semestre all'estero. Purtroppo, alcuni dei file sono stati mischiati...

Non preoccuparti, con la magia della riga di comando sarà sufficiente risolvere il problema.

Attività

Assicurati che ogni città si trovi nel paese corretto e che ogni cartella delle città contenga i monumenti corretti. Fai attenzione, potresti finire ad Amsterdam cercando la Torre Eiffel.

Se ti senti VERO sicuro di questa situazione, nascondi la GUI e affronta questa sfida direttamente dalla riga di comando. Per fare tutto questo, devi mantenere la cartella generale in tutto il mondo, il che significa utilizzare percorsi assoluti quando fai riferimento a cartelle e file.

Dopo aver verificato che sia nel posto giusto, tocca a te comandare nei prossimi mesi. Fai brainstorming su nuove città, paesi e monumenti di cui hai bisogno per visualizzarli e aggiungerli all'albero dei file.

Complimenti! Hai ufficialmente imparato a parlare di computer. Vuoi fare un passo in più? Scopriamo le estensioni...

Estensioni

  1. Mescola di nuovo tutti i tuoi file, poi apri la città a tua scelta. Riorganizzare i file restando in quella città.
  2. Prova uno dei divertenti giochi a riga di comando collegati di seguito
    Terminus Game
    Advanced Game (preparati a Google)
  3. 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 può essere utilizzato il comando nc towel.blinkenlights.nl 23.

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

Pronto a evitare la ripetizione dell'utilizzo giornaliero della riga di comando? Ottimo, e io lo sono!

Contesto

Se c'è una cosa che i programmatori odiano, è la ripetizione. In qualità di informatico, è nostro compito far fare al computer tutto il lavoro possibile. La scrittura di script bash ci aiuterà a rendere più efficiente l'utilizzo della riga di comando.

Per prima cosa, che cos'è uno script bash?

Domanda GREAT. Per fortuna, il nostro amico Ryan Chadwick, di seguito, ha trovato la risposta a questo ottimo luogo in cui trovare i tutorial a riga di comando.

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

Nessuna ripetizione? È questo che sto parlando.

Tutorial

Per prima cosa, per poter eseguire lo script, devi concedere l'autorizzazione al computer. Per farlo, esegui il comando seguente.

chmod 755 myScript.sh

Bene, è il momento di scrivere il tuo primo programma. Vai a myScript.sh (controlla se puoi aprire il file dalla riga di comando). Alla fine del file, aggiungi:

echo "Hello World"

Ora esegui:

./myScript.sh

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

celebrazione

Tutto ciò che scrivi nello script bash verrà eseguito come se lo avessi digitato nel tuo terminale. Vediamo un altro esempio prima di passare alle estensioni. Per prima cosa crea un file per lo script, che può essere chiamato come desiderato, ma deve avere l'estensione .sh . Avanti assicurati di autorizzare l'esecuzione dello script digitando chmod 755, quindi il nome dello script nel terminale e premi Invio. Ogni volta che inizi un nuovo script bash, assicurati di completare questi due passaggi.

Sfida introduttiva

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

Se funziona, passa alle altre verifiche elencate di seguito. Se ti senti ancora un po' confuso, prova a guardare indietro il laboratorio in tutto il mondo e a pensare a come hai creato nuove cartelle in base al paese e alla città.

Non aver paura di usare il tutorial indicato sopra e preparati a mettere in pratica le tue migliori competenze su Google. Scrivi ed esegui script che:

Attività principali

  1. Aggiungi al comando che hai creato il comando precedente nella cartella che stai spostando nella cartella che stai creando. (Che comando utilizziamo per cambiare le directory?)
  • Indica il nome della nuova cartella. Ad esempio, il tuo programma dovrebbe creare una cartella denominata "2017-12-07my_super_cool_folder"
  1. Stampa la mia directory attuale: " seguita dalla tua directory di lavoro e "Ecco un elenco di tutti i contenuti della directory! "seguito dai contenuti della directory corrente.
  2. Scopri come dare un input allo script bash e crea un file basato su quella stringa di input. Il tutorial collegato in precedenza al lab contiene alcuni ottimi esempi nella sezione delle variabili.
  3. Chiedi all'utente il suo nome e stampalo. "Buongiorno, ci piacerebbe che invii il suo nome qui."
  • Prova a chiedere ulteriori informazioni all'utente e a creare un messaggio personalizzato.

CONTESTO

La riga di comando (o terminale) fornisce un'interazione diretta con il sistema operativo del computer, ossia tutto ciò che fa l'interfaccia utente grafica (GUI), ma tramite comandi di testo, dalla navigazione alla creazione di nuovi file, fino 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

Accesso al terminale

Scorciatoia Mac:

  • Apri Spotlight con Comando + Barra spaziatrice.
  • Digita Terminale in 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

Creazione di 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

Spostamento di file e cartelle

Spostamento di 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 di 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

Spostamento in corso

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 delle 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 non pensi di averne bisogno. Con il tempo guadagnerai di più.
  • La chiave tab completerà automaticamente il nome del file o della cartella (potrebbe fare distinzione tra maiuscole e minuscole).
  • Se è rimasto un solo file o una cartella, il completamento verrà completato automaticamente.
  • Se sono presenti più file o cartelle corrispondenti, premi due volte il tasto Tab per visualizzare un elenco delle corrispondenze rimanenti.
  • La Freccia su / giù ti consente di scorrere la cronologia dei comandi in modo da non dover digitare di nuovo i comandi.
  • Utilizza il comando clear per cancellare i dati nella finestra Terminale. In questo modo manterrai il tuo lavoro precedente: scorri verso l'alto per visualizzarlo.
  • Utilizza reset per riavviare il terminale. In questo modo il tuo lavoro precedente non verrà mantenuto sullo schermo, ma potrà 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.
  • Spostare 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 directory di lavoro attuale?

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

Domanda 2

Come cambieresti di due livelli dalla directory di lavoro corrente?

  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 nessun'altra informazione.
  3. Questa è una domanda trucco, non genera un errore.
  4. Il trasferimento di un file richiede almeno due argomenti: una destinazione e una destinazione

Domanda 5

Cosa fa il comando cd ~?

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

Domanda 6

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

  1. Perché 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 funzionerà?

  1. Perché touch non è in grado di creare nuovi file.
  2. Perché .py non è un'estensione di file valida.
  3. Perché verranno creati due file, uno chiamato "my" e uno chiamato "script.py" anziché uno solo.
  4. Perché non è possibile creare nuovi file dalla riga di comando.

Domanda 1

Cosa useresti per identificare la tua directory di lavoro attuale?

pwd

Domanda 2

Come cambieresti di due livelli dalla directory di lavoro corrente?

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

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 dei 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

Cosa fa il comando cd ~?

Questa operazione cambia la directory di lavoro nella directory home. 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 rimandare alla cartella della home page.

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 è corretto. tab richiede una potenza di elaborazione (spesso trascurabile) di scansione per individuare le cartelle che cercano il nome del file da completare automaticamente, ma fa risparmiare tempo ed evita errori di ortografia 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 funzionerà?

Verranno creati due file anziché uno solo. Il comando touch creerà nuovi file. Negli spazi dei terminali 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 modificare le 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

Quali comandi utilizzi per rinominare un file o una cartella?

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

Domanda 6

Di quale flag hanno bisogno i comandi rm e cp per funzionare sulle cartelle?

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

Domanda 7

Quale comando deve andare vuoto per spostare projects in ~/Documents e rinominarlo in Projects?

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

Cosa farà il seguente comando?

rm -r projects

  1. Elimina un file denominato projects
  2. Elimina una cartella denominata projects
  3. Rinomina un file denominato projects
  4. Cerca i contenuti della directory corrente per projects

Domanda 1

Il comando del terminale per modificare le directory è:

Il comando del terminale per la modifica delle directory è cd. Il comando stesso è un'abbreviazione di "change 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 crea i due file. In questo modo non è necessario creare virgole ed è possibile creare qualsiasi numero di file in questo modo, separati da spazi.

Domanda 5

Quali comandi utilizzi per rinominare un file o una cartella?

Anche se è l'acronimo di "move" e può essere utilizzato per spostare file o cartelle, mv può anche essere utilizzato per rinominare file e cartelle.

Domanda 6

Di quale flag hanno bisogno i comandi rm e cp per funzionare sulle cartelle?

rm e cp per i comandi è necessario che il flag -r funzioni sulle cartelle, perché il flag -r sta per "recursive" e esegue nuovamente il comando per tutti i file e le cartelle che contengono.

Domanda 7

Quale comando deve andare vuoto per spostare projects in ~/Documents e rinominarlo in Projects?

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

Dall'inizio nella home directory, dovremmo eseguire cd ~/Documents per fare in modo che il comando finale venga eseguito nella directory corretta.

Domanda 8

Cosa farà il seguente comando?

rm -r projects

Il comando eliminerà un file OPPURE una cartella denominata projects perché è chiamata con il -r o un flag ricorrente. Senza questo flag, questo comando funzionerebbe solo per eliminare un file con quel nome.