linux & emacs - unipdaceccato/intro_2011_2012/lezione_linux... · organizzazione ad albero i...

Post on 16-Aug-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related