linux & emacs - unipdaceccato/intro_2011_2012/lezione_linux... · organizzazione ad albero i...
TRANSCRIPT
11
Linux & EmacsLinux & EmacsLinux & EmacsLinux & Emacs
22
• Il software può essere diviso in due grandi classi: i programmi di sistemaprogrammi di sistema, che gestiscono le funzionalità del
sistema di calcolo i programmi applicativiprogrammi applicativi, che risolvono i problemi degli utenti
• L’insieme dei programmi di sistemaprogrammi di sistema viene comunemente identificato con il nome di Sistema OperativoSistema Operativo (SO)(SO)
• Definizione:Definizione: Un sistema operativo è un programma che Un sistema operativo è un programma che controlla l’esecuzione dei programmi applicativi ed agisce controlla l’esecuzione dei programmi applicativi ed agisce come interfaccia fra le applicazioni e l’hardware del come interfaccia fra le applicazioni e l’hardware del calcolatorecalcolatore
Cos’è un sistema operativo Cos’è un sistema operativo
Struttura del SOStruttura del SO
Interfaccia nucleo verso l’esterno
hardware
File system Gestore I/O Gestore processi
Gestore memoria
Gestore processori
Servizi richiesti dagli utenti al SO
nucl
eo
Struttura di un SOStruttura di un SO
Elementi principali di un SO: Shell (interfaccia SO e utente) Kernel (insieme di programmi che realizzano
le funzioni di base di un calcolatore)
Sistema operativo: Sistema operativo: shellshell Shell (guscio): interfaccia tra SO e utenti E’ il programma che permette agli utenti di
comunicare con il sistema e di avviare I programmi
Di solito grafica (GUI – Graphical User Interface), ma anche testuale
Sistema operativo: Sistema operativo: kernel kernel
Kernel (nucleo): programmi per le funzioni base del calcolatore
Kernel suddiviso in moduli Ogni modulo ha una funzione diversa Funzioni piu’ importanti:
gestione processigestione processigestione processorigestione processorigestione memoria (principale e secondaria)gestione memoria (principale e secondaria)gestione dispositivi di I/Ogestione dispositivi di I/O
Struttura del SOStruttura del SO
Interfaccia nucleo verso l’esterno
hardware
File system Gestore I/O Gestore processi
Gestore memoria
Gestore processori
Servizi richiesti dagli utenti al SO
nucl
eo
88
• Poiché la memoria principale è volatile e troppo piccola per contenere tutti i dati e tutti i programmi in modo permanente, il computer è dotato di memoria secondariamemoria secondaria In generale, la memoria secondaria è data da hard disk e
dischi ottici• Il SO garantisce una visione logica uniforme del processo di
memorizzazione: Astrae dalle caratteristiche fisiche dei dispositivi per definire
un’unità di memorizzazione logica − il filefile Ciascuna periferica viene controllata dal relativo device driver,
che nasconde all’utente le caratteristiche fisiche variabili dell’hardware: modalità e velocità di accesso, capacità, velocità di trasferimento
La gestione della memoria secondaria La gestione della memoria secondaria −− 1 1
99
• Il SO è responsabile delle seguenti attività riguardanti la gestione della memoria secondaria:
Allocazione dello spazio
Gestione dello spazio libero
Ordinamento efficiente delle richieste di accesso al disco
La gestione della memoria secondaria La gestione della memoria secondaria −− 2 2
1010
• Il file è l’astrazione informatica di un archivio di dati Il concetto di file è indipendente dal mezzo sul quale viene
memorizzato (che ha caratteristiche proprie e propria organizzazione fisica)
• Un file system è composto da un insieme di file• Il SO è responsabile delle seguenti attività riguardanti la
gestione del file system: Creazione e cancellazione di file Creazione e cancellazione di directory Manipolazione di file e directory Codifica del file system sulla memoria secondaria
La gestione del file system La gestione del file system
FileFile
Per ogni file vengono memorizzate varie ulteriori informazioniidentificatore: nomefile.estensionedata di creazione e ultima modificadimensioneposizione effettiva dei dati nella memoria di massadiritti di accessoetc
Estensioni dei fileEstensioni dei file
.exe : programma eseguibile
.txt : file di testo
.doc : file di Microsoft Word
.xls : file di Microsoft Excel
.jpg, .gif : file di immagini
.wav, .mp3 : file di suoni
.mpg, .avi : file di filmati
.c, .cpp, .java : file di programmi C, C++, Java
Operazioni su fileOperazioni su fileCreazioneAperturaChiusuraCancellazioneCopia RinominaVisualizzazioneLetturaScritturaModifica…
Organizzazione dei fileOrganizzazione dei fileI file sono organizzati logicamente in modo gerarchico.
la organizzazione logica permette l'astrazione dalla loro organizzazione fisica nella memoria di massa.
L'unità principale di raggruppamento si chiama directory: un insieme di file e altre directory.
Organizzazione ad albero
● I dischi fissi sono divisi in partizioni.● Ogni partizione e' organizzata gerarchicamente come un albero rovesciato (come quello genealogico).● Ogni nodo dell'albero è file o directory.● I nodi sono organizzati per livelli e legati con relazioni del tipo padre-figlio.● Un figlio ha un solo padre.● Un padre potrebbe avere più figli.● Directory: un nodo che può avere figli.● File: un nodo senza figli.● Il padre più in alto = radice
directoryfile
A
ED
CB
F
d e
a
b c
hgf
/A/c
radice
/A/C/D/f
/A/C/E/h
/
Linux: Organizzazione dei file
directory
file
/a
path (percorso): la sequenza di nodi dalla radice “/” fino ad un certo nodo
Percorso relativo e assolutoPercorso assoluto: un percorso che specifica la posizione di un file a partire dalla radice:
Esempio: percorso assoluto del file d: /A/B/d (inizia per “/”)
Percorso relativo: la posizione di un file a partire da una posizione all' interno dell'albero dei file (solitamente da una “directory corrente”)
Esempio: direttory corrente: /A percorso relativo del file d:B/d (inizia senza “/”)
Vari sistemi operativiVari sistemi operativiUnix La sua storia inizia nel 1969Sistema portabile scritto in linguaggio CSO multi-utente, multi-tasking, time-sharingDosProgettato da Microsoft nel 1980 per IBMSO mono-utente,mono-taskingInterfaccia a linea di comandoWindowsProgettato da Microsoft nel 1985SO multi-utente,multi-tasking, time-sharingInterfaccia grafica a finestreMac OSProgettato dalla Apple a partire dal 1984è il sistema operativo per i computer Macintosh
Linux: permessi sui fileLinux: permessi sui fileOgni file ha una serie di permessi associati che indicano chi puo’ eseguire operazioni sui file e che tipo di operazioniGarantisce la sicurezza delle attivita’ degli utenti e del sistema stessoTipi di permessoLettura, scrittura, esecuzioneDestinatariProprietario, gruppo di utenti, altri
Linux: permessi sui fileLinux: permessi sui fileI permessi• rwx-xr-x
• I permessi sono (fino a) 9 caratteri, raggruppati per 3, che indicano rispettivamente i permessi perl'owner, per il gruppo e per gli altri utenti.
Linux: permessi sui fileLinux: permessi sui file--- nessuna autorizzazione--x esecuzione-w- scrittura-wx scrittura, esecuzione r-- lettura r-x lettura,esecuzione rw- lettura, scrittura rwx lettura, scrittura, esecuzione
Linux: interfaccia grafica eLinux: interfaccia grafica e shellshell
Interfaccia graficapermette di lavorare graficamente con l’utilizzo di finestrePer essere piu’ intuitivo e semplice da usareRicorda l’interfaccia di Windows
• Barra delle applicazioni• Menu di avvio• Visualizzazione del file system attraverso icone
Shell l’interfaccia testuale tramite la quale l’utente puo’ operare con il sistema
Linux: interfaccia graficaLinux: interfaccia grafica
Per aprire una shell:
Cliccare su ‘Applicazioni’ nel menu di avvio dove si trovano tutti gli applicativi del sistema
Cliccare su ‘Terminale’
Linux: comandiLinux: comandi
Sintassi generale di un comando (dalla shell)nome_comando [opzioni] [argomento1…argomentoN]
Tra parentesi quadre vengono poste le stringhe che non sono necessariamente usate
Le stringhe vanno separate da spaziI nomi dei comandi vanno specificate con lettere
minuscole (Linux e’ case sensitive)
Linux: comando pwdLinux: comando pwd
Indica la posizione attuale nel file system con il percorso completo pwd
Esempio: pwd /home/aceccato
Esercizio: visualizzare la posizione all’avvio della shell
Linux: comando lsLinux: comando lsVisualizza il contenuto di una cartella o i file ls [opzione] [nome_directory] [nome_file]
Opzioni: -a
• elenca tutti i file compresi quelli nascosti- l
• per ogni elemento della lista fornisce informazioni aggiuntive-R
• discende ricorsivamente anche tutte le sottodirectory-t
• Elenca gli elementi in ordine temporale
Esercizio: visualizzare il contenuto della home con l’ausilio delle varie opzioni
Linux: comando cdLinux: comando cdUtilizzato per spostarsi tra directory all’interno del file systemcd [nome-directory]
• Entra nella directory specificata • Esempio: cd documenti
cd .. • Si sale di un livello nell’albero, posizionandosi nella
directory del livello immediatamente superiorecd
• Si ritorna all propria home
Esercizio: spostarsi nella cartella Desktop visualizzarne il contenuto e poi ritornare alla home
Linux: comando mkdirLinux: comando mkdirUtilizzato per creare directorymkdir [opzioni] nome_directory
Nomi utilizzabiliCaratteri alfabetici e numerici, _, -, .
Esempiomkdir intro1112
Esercizio: creare una directory ‘programmi’ e una directory ‘documenti’ nella propria homecrerare una directory ‘programmi2’ nella directory ‘programmi’ posizionarsi nella directory ‘documenti’
Linux: comando touchLinux: comando touchCrea un file vuototouch nome_file
EsempioTouch file.txt
Esercizio: creare un file vuoto ‘prova.txt’ nella directory ‘documenti’creare un file vuoto ‘prog1.txt’ nella directory ‘programmi’
Linux: comando cpLinux: comando cpCopia il file nella directory indicatacp [opzioni] file_origine nome_directory
nel file di destinazionecp [opzioni] file_origine file_destinazione
Esempio: cp file1.txt file2.txt
Esercizio 1: copiare il file ‘prova.txt’ che si trova nella directory ‘documenti’ nel file ‘prova2.txt’
Esercizio 2: copiare il file prova2.txt nella directory ‘programmi’
Linux: comando rmLinux: comando rmCancella i file specificati (non le directory)rm [opzioni] nome_file
Esempio: rm file1.txt
Esercizio: creare un sottodirectory ‘corso’ nella directory ‘programmi’copiare nella directory ‘corso’ il file ‘prova2.txt’ presente nella directory ‘programmi’rimuovere il file ‘prova2.txt’ dalla directory ‘programmi’
Linux: comando rmdirLinux: comando rmdirCancella una directory se e’ vuotarmdir nome_directory
Esempio: rmdir programmi
Esercizio: creare il file vuoto ‘nuovo.txt’ nella directory ‘corso’ e poi rimuovere la directory ‘corso’
Linux: comando picoLinux: comando picoSemplice editor di testo dalla shellPermette di creare, leggere o modificare file di testopico nome_file
Comandi principaliCtrl O salva fileCtrl X esce
Esercizio: aprire con pico il file ‘prova.txt’, che si trova nella directory ‘documenti’ , scrivere ‘Ciao’, salvare il file e uscire
Linux: comando manGuida per i comandi di Linuxman nome_comandoIndicaCome si usa il comandoTutte le opzioni permesse per i varia comandiSi naviga attraverso le frecceTasto q per chiudere il manuale
Esempio: man mkdir, man ls
Linux: comando moreLinux: comando more• Il comando:>> more nome_file
stampa a schermo il contenuto del file “nome_file”, una videata alla volta. Per scorrere alla prossima pagina si usa la barra spaziatrice, per terminare la visualizzazione si usa il tasto q
Linux: comando lessLinux: comando less• Il comando:>> less nome_filestampa a schermo il contenuto del file “nome_file” epermette di scorrere la visualizzazione per riga utilizzando i tasti “freccia in alto” e “freccia in basso”.
• Per terminare la visualizzazione si usa il tasto “q”(quando finisce esce comunque da solo)
Il contenuto viene visualizzato una videata alla volta. Per scorrere alla prossima pagina si usa la barra spaziatrice, per terminare la visualizzazione si usa il tasto q
Linux: comando topLinux: comando toptop [opzioni] Top produce un output a monitor diviso in una parte alta,
che contiene informazioni generali sul sistema, e in una parte sottostante, che mostra i processi e il loro utilizzo di CPU
Opzioni:- k + numero processo, termina il processo in questione.- r + numero processo, modifica il valore nice di un processo; cioè la
sua priorità, da -20 (massima priorità) a 19 (minima priorità). Quindi un valore nice negativo migliora le prestazioni di esecuzione di un processo rispetto ad uno positivo.
Uscite da 'top' premendo il tasto q.
EMACS
EMACS
• E' un editor di testo ma anche un ambiente di sviluppointegrato, cioè è possibile utilizzarlo sia per scrivereun programma che per compilare quest'ultimo edeseguirlo rimanendo all'interno di Emacs.
• Inoltre è altamente personalizzabile ed è presente intutte le installazioni di Linux.
EMACS
Emacs fa un uso di combinazioni di più tasti. I tasti di cui Emacs fa maggiore uso sono normalmente abbreviati nella documentazione come C (per Control o Ctrl) e M per (Meta) (Alt).
Mentre le più moderne tastiere di PC hanno uno o più tasti etichettati come Ctrl, poche ne hanno uno etichettato come Meta. Ingenerale il tasto Alt corrsiponde al tasto Meta.
Tasti di controllo
• C-x f, significa “premere control-x e poi, dopo averrilasciato control, premere f”.
• C-x Cs, significa “premere control-x e poi, senzarilasciare control, premere s”.
• M-x shell significa “premere alt-x e digitare la parolashell”.
Buffer e file A differenza di alcuni editor, quando aprite un file in Emacs
questo non sta ``aperto'' tutto il tempo in cui lavorate con esso. Al contrario, Emacs legge il file in un buffer in memoria.
Mentre state editando il buffer e lavorando con i dati, niente è cambiato sul disco. Solo quando di fatto salvate il buffer, allora il file sul disco viene aggiornato.
Buffer significa ``una copia del file che si trova attualmente in memoria''. Un buffer non deve sempre essere riferito ad uno specifico file sul disco. Spesso Emacs creerà dei buffer come risultato dei comandi che lancerete. Questi buffer potranno contenere il risultato dei comandi, una lista di selezioni da cui scegliere e così via.
Avviare EMACS• Il modo comune per avviare Emacs è tramite ilcomando di shell
>>emacs• E' utile avviare Emacs in modalita' background, ovvero in una finestra diversa dalla shell, utilizzando il comando>>emacs &
In questo modo, non si tiene occupata la shell ed essa può quindi essere usata per avviare altri comandi. Appena si seleziona la finestra di Emacs è possibile iniziare a digitare comandi.
Avviare EMACS
• Un'altro modo di avviare Emacs e' tramite il comando>> emacs nomefile &che avvia Emacs visualizzando il file che ha il nome nomefile, se esiste, o visualizzando un nuovo file vuoto denominato nomefile se questo non esiste.• Ad esempio, per creare il file vuoto “prova” utilizzeremo ilcomando>> emacs prova &
Uscire da EMACS
• Esistono due comandi per uscire da Emacs, poiché vi sono due tipi di uscita, che consistono nel sospendere Emacs e nel chiuderlo.• Sospendere significa fermare temporaneamente Emacs e ridare il controllo al processo che lo ha avviato (solitamente la shell), permettendo in seguito di riprendere il lavoro nella stessa sessione di Emacs con gli stessi buffer, la stessa lista degli appunti, le stesse informazioni sulle modifiche, etc.
C-z Sospende Emacs
Uscire da EMACS• Chiudere Emacs significa terminare definitivamente il programma. È possibile riavviarlo nuovamente in seguito, ma si otterrà un Emacs nuovo: non c'e` modo di ripristinare esattamente la stessa sessione dopo che esso è stato chiuso.
C-x C-c Chiude Emacs
• Alla chiusura Emacs offre la possibilità di salvare tutti i buffer modificati che contengono dei file. Ogni modifica non salvata verrà persa definitivamente.
RIGA DI STATO• L'ultima riga di ogni finestra di testo è chiamata riga di stato, e descrive brevemente lo stato della finestra Stessa. -cs:ch buffer (modalita')--linea--posizione------- Ch Se il buffer è stato modificato, ch contiene due asterischi **,
altrimenti contiene --. Se il buffer è a sola lettura, ch contiene %* se esso è stato modificato, %% altrimenti.
buffer è il nome del buffer associato alla finestra. Nella maggior parte dei casi, è lo stesso nome del file su cui si sta lavorando. Il buffer visualizzato nella finestra selezionata (la finestra in cui si trova il cursore) è anche il buffer selezionato, ovvero quello in cui è possibile effettuare modifiche. Quando si parla delle modifiche che un comando apporta al buffer, ci si riferisce al buffer correntemente selezionato.
RIGA DI STATO
linea è una L seguita dal numero di riga ove si trova il cursore. La posizione informa se vi è altro testo che precede o che segue quello visualizzato nella finestra. Se il buffer è piccolo ed è completamente visibile nella finestra, posizione appare come All. In caso contrario, è Top se si sta guardando l'inizio del buffer, Bot se si sta guardando la fine, oppure n%, dove n è la percentuale del buffer che si trova prima del testo attualmente visualizzato in finestra.
Area dei messaggiLa riga in fondo alla finestra (subito sotto alla riga di stato) viene chiamata area messaggi: essa viene usata per mostrare brevi messaggi testuali.
Se un comando non può essere eseguito, esso può produrre un messaggio d'errore nell'area messaggi. I messaggi d'errore sono accompagnati da un suono o da un lampeggio dello schermo.
Alcuni comandi mostrano nell'area messaggi delle informazioni: il messaggio contiene informazioni sulle modifiche che il comando ha prodotto, specie se esse non sono evidenti guardando il testo su cui si sta lavorando (es. wrote file se avete salvato un certo file).
Area Messaggi
I messaggi che compaiono nell'area messaggi sono conservati in un buffer chiamato *Messages* .
Se si è perso qualche messaggio che è comparso brevemente sullo schermo, è possibile passare al buffer *Messages* per rivederlo.
L'area messaggi viene inoltre usata per mostrare il minibuffer, una finestra che serve per introdurre gli argomenti da passare ai comandi, come ad esempio il nome di un file da aprire.
Quando il minibuffer è in uso, l'area messaggi presenta del testo che solitamente finisce con due punti (:), ed in essa compare il cursore (visto che in quel momento il minibuffer è anche la finestra selezionata). È sempre possibile uscire dal minibuffer (e da ogni esecuzione di un comando) digitando C-g.
BARRA MENU'
Ogni finestra di Emacs ha (in prossimità del margine superiore) una barra dei menù che può essere usata per effettuare una serie di operazioni piuttosto comuni. E' possible usare il mouse per scegliere un comando dalla barra dei menù.
Alcuni dei comandi nella barra dei menù sono associati a delle sequenze di tasti
Alcune combinazioni di tasti
TASTI FUNZIONE DESCRIZIONEC-x C-s Save Buffer Salva il buffer corrente sul
disco
C-x u oppure C-x _ Undo Annulla l'ultima operazioneC-c C-f Find file Apre un file dal discoC-s isearch-forward Cerca una stringa in avanti in
modo incrementale
C-r isearch-backward Cerca una strina in dietroC-h t Help with tutorial Usa la guida interattivaC-h x Describe key Mostra cosa fa una sequenza
di caratteri
Ricerca di stringhe
• Emacs puo' effettuare la ricerca di stringhe in posizione sia successiva (C-s) che precedente (C-r) alla posizione del cursore.• Cercare una stringa e' un comando che provoca lo spostamento del cursore: lo porta dove la stringa compare.• Il comando di ricerca di Emacs e' "incrementale“: La ricerca avviene proprio mentre si scrive la stringa da cercare.• Premendo C-s (o C-r) compare il messaggio "I-search" nell'area messaggi (l’ultima riga della finestra Emacs).
Ricerca di stringhe
• Durante una ricerca incrementale Emacs va al punto successivo in cui compare la stringa scritta fino a quel momento. Per raggiungere il punto successivo (precedente) in cui compare di nuovo la parola bastapremere C-s (C-r) di nuovo.• Se durante una ricerca incrementale si preme il tasto <Delete> l'ultimo carattere della stringa da cercare scompare e la ricerca torna all'ultimo risultato trovato prima che questo carattere fosse scritto.
Sostituzione di stringhe
• Emacs vi permette anche di sostituire tutte le ripetizioni di una stringa con qualche altra stringa. Per farlo, richiamate il sottomenu' replace dal menu' edit. • Ad esempio se volete sostituire tutte le ricorrenze di “hello” con “ciao”, nell'area messaggi, dopo le parole “Query replace'' digitate “hello” e premete invio; vi viene richiesto nuovamente dell'input, e dovete inserire “ciao”. Emacs quindi scorrerà il testo, si fermerà ad ogni ricorrenza della parola “hello”, e vi chiederà se volete sostituirla con “ciao”. Premete y o n ogni volta, per “yes” o “no”.
Salvare il file
• C-x C-s Salva il file• Questo copia il testo contenuto in Emacs nel file su disco. La prima volta che si effettua questa operazione Emacs dà un nuovo nome al file originale in modo da conservarlo. Il nuovo nome è ottenuto aggiungendo un carattere "~" alla fine del nome originale. Quando il salvataggio è terminato Emacs mostra il nome del file appena scritto, con il messaggio "Wrote ...nomefile" nella parte bassa dello schermo.
Salvare il file
• C-x C-s Salva il file• Se si apportano delle modifiche ad un file ma questo non e’ ancora stato salvato, queste modifiche potrebbero essere perse se il sistema si bloccasse. Quindi Emacs scrive periodicamente un file di salvataggio automatico per ogni file che viene modificato. Il nome del file di salvataggio automatico ha un carattere # all' inizio e alla fine: ad esempio se il file si chiama "pippo.txt" il nome del file di salvataggio automatico sarà "#pippo.txt#". Quando poi il file viene salvato nel modo consueto Emacs cancella il file di salvataggio automatico.
Compilatori in Linux
•
Compilatori in Linux
•
Editor in Linux
•
Editor in Linux
•
Editor in Linux
•
Compilatori in Windows
•
Compilatori in Windows
•
Compilatori in Windows
•
Compilatori in Windows
•
Editor in Windows
•
Compilatori in Mac
•
Per iniziare
L'accoppiata migliore per iniziare è formata da:L'accoppiata migliore per iniziare è formata da:
• • un editor a scelta tra un editor a scelta tra jEdit ejEdit e Emacs Emacs perché tali perché talieditor sono disponibili per tutti i sistemi operativieditor sono disponibili per tutti i sistemi operativi
(inoltre se passate da un sistema all’altro i vostri file(inoltre se passate da un sistema all’altro i vostri file
sono portabili)sono portabili)
• • GCC GCC come compilatore perché in questo modo sicome compilatore perché in questo modo siimparano a compilare i programmi da console, conimparano a compilare i programmi da console, con
l'enorme vantaggio di esperienza rispetto all'utilizzol'enorme vantaggio di esperienza rispetto all'utilizzo
di sistemi automatici (IDE) come Dev-C++ o Kdevelop.di sistemi automatici (IDE) come Dev-C++ o Kdevelop.
CYGWIN
MINGW
EMACS
EMACS
EMACS
EMACS