Il mio primo giorno in Laboratorio di Calcolo... - Informatica
Transcript
Il mio primo giorno in Laboratorio di Calcolo... - Informatica
Il mio primo giorno in Laboratorio di Calcolo... Disclaimer: alcune delle istruzioni che seguono potrebbero ledere la dignità di qualche lettore. Tuttavia l'esperienza acquisita negli anni passati ci ha insegnato a non dare nulla per scontato. ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ Il computer dovrebbe essere già acceso; se lo schermo è nero è perché lo schermo è in standby (in tal caso il led del monitor sarà arancione) o perché, sempre lo schermo, è spento (in tal caso il led sarà spento). Per riattivare lo schermo in standby basta muovere il mouse o premere qualche lettera a caso della tastiera. Per accendere lo schermo...a voi il compito di capire come. Potrebbe capitare che la macchina sia effettivamente spenta. In tal caso...accendetela ma ricordate: I COMPUTER (DEL LABORATORIO) NON DEVONO ESSERE SPENTI QUANDO SI SMETTE DI USARLI, quindi chi ha usato la macchina prima di voi ha sbagliato! Prima di poter utilizzare username e password (le stesse della posta elettronica di ateneo, senza il suffisso “@studenti.unimi.it”) per accedere alle macchine di laboratorio dovete registrarvi a quest'ultimo accedendo, da un qualsiasi computer dotato di accesso a Internet, alla pagina: https://registrazione.fisica.unimi.it/cgi-sec/autentica.cgi e seguendo le istruzioni lì date. ✓ ✓ ✓ Chi di voi avesse già ottenuto lo username e la password e provveduto a registrarsi attraverso la procedura descritta sopra, immetta tali dati quando richiesti: fate attenzione alle lettere maiuscole/minuscole e controllate che il CAPS-LOCK (quello che fa scrivere tutte le lettere maiuscole) non sia stato accidentalmente premuto. Coloro i quali, invece, fossero temporaneamente sprovvisti, per qualsiasi ragione, di username e password convalidati, possono temporaneamente utilizzare • • USERNAME: studente PASSWORD: ChiBenComincia ✓ Le macchine del laboratorio usano il sistema operativo Fedora, appartenente alla famiglia Linux. Quello che vedete davanti a voi è il Desktop (o scrivania). Nella parte alta del monitor compare la barra dei comandi (analoga a quella di Windows) con dei Menu (Applications ecc..) e delle icone. Cliccando sui Menu potrete vedere le varie voci che contengono. Fermando invece il puntatore su una icona (senza cliccare) vedrete comparire un'etichetta che spiega quale programma è associato all'icona. Le icone che compaiono possono cambiare da utente a utente (mistero del Laboratorio) e possono essere personalizzate (fatelo a tempo perso). ✓ ✓ Oltre ai Menu e alle icone compaiono nella barra altre informazioni (data e ora) e altri oggetti irrilevanti ai fini della vostra produttività. ✓ Chi di voi avesse già familiarità con Linux e i comandi di shell può ignorare quanto segue di questa dispensa e cominciare ad adattare il proprio ambiente di lavoro alle proprie esigenze. Gli altri non si spaventino: Linux fornisce una interfaccia con l'utente estremamente simile a quella di Windows (finestre, cartelle, funzioni associate ai tasti del mouse) e, per l'uso che ne farete durante questo corso, non sarà necessario entrare nei dettagli del sistema. Tuttavia doverete imparare ad usare un oggetto scomparso da tempo dai sistemi Windows: la shell di sistema. La shell di sistema, o semplicemente shell, è un programma che consente di dare comandi al computer. I comandi che introdurremo in questa dispensa sono: • Comandi per l'esplorazione del file system (cd, ls, pwd) • Comandi per la copia, lo spostamento e la cancellazione di files (cp, mv, rm) • Comandi per l'accesso a computer in rete (ssh) e copia di file tra computer in rete (scp) NOTA: molte delle operazioni che vedremo possono essere fatte utilizzando direttamente l'interfaccia grafica, come in Windows. Tuttavia, conoscere questo insieme di comandi è utile in vista dell'utilizzo del sistema per la compilazione di programmi. ✓ • • • • Durante una giornata tipo in Laboratorio utilizzeremo i seguenti programmi di uso comune: Editor di testi: nedit Browser Internet: Firefox (ad esempio perché non mi ricordo la sintassi dell'istruzione printf, vado a controllarla su http://www.cplusplus.com/reference/clibrary/cstdio/printf.html ). Chi di voi non avesse dimestichezza con questi strumenti è pregato di acquisirne un po' quanto prima in modo da potersi concentrare sui problemi di programmazione anziché sull'ABC ✓ Alla fine di una sessione di lavoro dobbiamo scollegarcidal calcolatore (E NON SPEGNERE). Per far questo clicchiamo sul menu System, selezioniamo la voce Logout... e l'opzione Log Out. Esplorazione del file system. L'insieme dei files contenuti nel disco fisso di sistema è organizzato in cartelle (directory). Ciascuna directory può contenere files o altre directory. Tale organizzazione dei files contenuti nel computer è chiamata file system. Per fare un esempio concreto e contingente, vediamo come è organizzato il file system di un sistema Linux come Fedora. La totalità dei files e delle cartelle è contenuta in una cartella chiamata root. Sotto la cartella root (che si indica con lo slash /) si trovano un insieme di sottocartelle contenti tutti i programmi e i files necessari al computer per funzionare (usr, bin, proc,...) e tutti i dati degli utenti che utilizzano il computer (home). Come risultato di questa organizzazione, ciascun file (o cartella) è univocamente identificato dal suo nome completo, ovvero dal percorso che conduce dalla root alla cartella contente il file (o la cartella) più il nome del file (o cartella). Ad esempio, il nome completo della cartella linus, nella cartella home, a sua volta sottocartella della cartella / è /home/linus. In Linux ad ogni utente viene assegnata una cartella personale, chiamata home directory, avente tipicamente come nome il nome dell'utente. Tutte le home directories degli utenti si trovano nella cartella home. Nella figura qui a fianco è mostrato un esempio di struttura del file system a partire dalla home directory /home/leslie. Negli esempi che seguono faremo riferimento a questo pezzo di file system. Comando cd (change directory): Sintassi: cd nome_directory Descrizione: consente di accedere ad una sottocartella della cartella in cui mi trovo. Esempio: mi trovo nella cartella props. Dando il comando cd customers mi porto nella sottocartella customers della cartella props. Sintassi: cd nome_completo_directory Descrizione: consente di accedere ad una qualsiasi cartella. Esempio: mi trovo nella cartella leslie. Dando il comando cd /home/leslie/customers (ricordiamo che tutte le home directory si trovano tutte sotto la catrella /home) mi porto nella sottocartella customers della cartella props. Sintassi: cd .. Descrizione: mi porta alla cartella contenente la cartella in cui mi trovo. Esempio: facciamo riferimento alla figura qui sopra:sono attualmente nella cartella props della figura. Dando il comando cd .. mi porto nella cartella leslie. Comando ls (list) : Sintassi: ls Descrizione: consente di visualizzare il contenuto della cartella in cui mi trovo. Esempio: mi trovo nella cartella props. Digitando il comando ls vedrei comparire (approssimativamente) customers progetto1 progetto2 Il comando ls accetta delle opzioni; quella per noi più interessante è l'opzione -l (quindi il comando complessivo: ls -l) che consente di visualizzare tutte le informazioni rilevanti sui file contenuti nella directory (data di creazione, modifica, permessi di accesso, proprietario). Comando pwd (print working directory): Sintassi: pwd Descrizione: consente di visualizzare il nome completo della directory in cui mi trovo. Esempio: mi trovo nella cartella props. Digitando il comando pwd ottengo: /home/leslie/props NOTA: Lavorando con la shell di sistema capita spesso di dimenticarsi in quale punto del file system mi trovo: imparerete molto presto ad apprezzare questo comando. Copia, Spostamento e Cancellazione di Files. Passiamo ora alla descrizione dei principali comandi per la manipolazione dei files e delle cartelle. Prima di procedere è necessaria una precisazione. Come detto poco fa, ogni file (e directory) è identificata univocamente dal suo nome completo. Tuttavia, quando il file che mi interessa è nella cartella in cui mi trovo o in una sua sottocartella, è sufficiente specificare solo il percorso relativo alla cartella in cui mi trovo. Esempio: mi trovo nella cartella props. Il nome customers/jones.new è equivalente al nome / home/leslie/props/customers/jones.new. Comando cp (copia): Sintassi: cp nome_file_da_copiare nome_directory_in_cui_copiare Descrizione: consente di copiare un file in un'altra cartella. Il file copiato avrà lo stesso nome dell'originale. Esempio: mi trovo nella cartella props. Digitando il comando cp progetto1 customers ottengo la creazione della copia del file progetto1 nella sottocartella customers. Sintassi: cp nome_file_da_copiare nome_file_in_cui_copiare Descrizione: consente di creare una copia del file avente però un nome diverso. Esempio: mi trovo nella cartella props. Digitando il comando cp progetto1 customers/ progetto1nuovo ottengo la creazione della copia del file progetto1nuovo nella sottocartella customers. Attenzione: se vogliamo copiare directory è necessaria l'opzione -r (recursive) Sintassi: cp -r nome_directory_da_copiare nome_directory_in_cui_copiare Descrizione: consente di copiare una directory e tutto il suo contenuto in un'altra cartella. Comando mv (move): Sintassi: mv nome_originale_file nuovo_nome_file Descrizione: consente di rinominare un file in un'altra cartella. Ovviamente è possibile spostare un file cambiandone il nome completo. Esempio: mi trovo nella cartella props. Digitando il comando mv progetto1 progetto_bello rinomino il file progetto1. Invece con il comando mv progetto1 customers sposto progetto1 nella sottocartella customers. NOTA: a differenza della copia, il comando mv si applica alle directory senza modifiche. Comando rm (remove): Sintassi: rm nome_file (rm -r nome_directory) Descrizione: consente di eliminare un file (o una directory). Esempio: mi trovo nella cartella props. Digitando il comando rm progetto1 elimino il file progetto1. Invece con il comando rm -r customers elimino sottocartella customers e tutto il suo contenuto. ATTENZIONE: se eliminiamo erroneamente un file (o una cartella) con il comando di shell rm il file sarà definitivamente eliminato e non messo nel Cestino. Quindi attenti a non cancellare per sbaglio giornate di lavoro! Comando mkdir (make directory): Sintassi: mkdir nome_directory Descrizione: consente di creare una directory Esempio: mi trovo nella cartella props. Digitando il comando mkdir nuovadir creo la directory nuovadir nella cartella props. La nuova cartella, ovviamente vuota, è una sottodirectory della cartella props. Accesso a calcolatori in rete e copia di file in rete. Potrà capitarvi di lavorare su diversi computer, per esempio una macchina in laboratorio e il vostro PC personale, e di dover trasferire files da una macchina all'altra. Uno dei sistemi più semplici e diffusi è la chiavetta USB, capace sostituto del dischetto. Ciò richiede però l'accesso fisico ad entrambi i computer. Inoltre, motivi tecnici legati alla sicurezza del sistema informatico, non consentono operazioni comuni come la copia dei files dalla vostra cartella a quella del collega con cui, per esempio, avete condiviso il computer a lezione. Un metodo alternativo per la copia diretta è la copia in rete. Il file system del laboratorio di calcolo, e quindi anche la vostra home directory, sono in rete. Questo significa che, conoscendo le coordinate giuste, potrete accedere ad esso da qualsiasi macchina collegata ad “internet”. Vediamo qui due comandi di shell che consentono di manipolare files in remoto. Comando ssh (secure shell): Sintassi: ssh [email protected] Descrizione: consente di collegarsi al Laboratorio di Calcolo e di accedere ai propri files, come se la shell da cui avete lanciato il comando fosse la shell del computer del laboratorio. Per accedere dovrete ovviamente fornire la vostra password quando richiesta. Comando scp (secure copy): Sintassi: scp nome_file_da copiare [email protected]:nome_file_destinazione Descrizione: siete fuori dal Laboratorio e volete copiare un file nella vostra home directory. Il file specificato verrà copiato nella locazione indicata. Modificando il comando in scp -r è possibile copiare directory. Sintassi: scp [email protected]:nome_file_da copiare nome_file_destinazione Descrizione: siete fuori dal Laboratorio e volete copiare un file dalla vostra home directory. Il file specificato verrà copiato nella locazione indicata. NOTA: per copiare directory si usano gli stessi comandi con l'opzione -r (quindi scp -r). Come anticipato, è necessario usare il comando scp anche per copiare e directory nella home dei vostri colleghi, anche se state usando entrambi lo stesso computer. Voi, infatti, non siete autorizzati a farlo. Il vostro collega, usando la vostra shell, dovrà digitare scp nome_file_da_copiare nome_file_destinazione con la solita opzione -r in caso dovesse copiare una directory. Dovrete quindi comportarvi come se voleste trasferire files tra computer distanti tra loro attraverso la rete. A differenza di quanto succede quando state lavorando in remoto, però, non sarà necessario specificare l'indirizzo del Laboratorio in rete (tolab.fisica.unimi.it): si applica un ragionamento analogo a quello valido per il comando cd....ma questa è un'altra storia....