LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle...

40
1 LINUX liv. utente UdB – Dip. Informatica LINUX a livello di utente Questi lucidi sono stati prodotti sulla base dei seguenti riferimenti: Corso UNIX di Roberto Polillo dellUniversità di Milano Corso Unix di Marco Liverani dellUniversità di Roma Corso di Laboratorio di sistemi Operativi – Dip. Informatica dellUniversità di Bari a cura di De Carolis, Pizzutilo, Bianchi. Corso di Linux di Paolo Torroni LINUX liv. utente UdB – Dip. Informatica Breve storia di UNIX Sviluppato inizialmente, a partire dal 1969, da Ken Thompson e Dennis Ritchie del gruppo di ricerca dei Bell Laboratories. Incorporò caratteristiche di altri sistemi operativi (es. MULTICS). La terza versione, scritta in C, fu sviluppata ai Bell Labs appositamente per supportare UNIX. La più significativa delle versioni UNIX non-Bell fu sviluppata alla University of California at Berkeley (Berkeley Software Distributions). Sviluppato per il VAX, 4.3BSD è una delle versioni più importanti e ne è stato fatto il porting su varie piattaforme. 4BSD UNIX è il risultato di un finanziamento DARPA per lo sviluppo di uno standard UNIX ad uso governativo. Vari progetti di standardizzazione hanno tentato di consolidare le varianti di UNIX, per ottenere ununica interfaccia di programmazione verso il sistema.

Transcript of LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle...

Page 1: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

1

LINUX liv. utente UdB – Dip. Informatica

LINUX

a livello di utente

Questi lucidi sono stati prodotti sulla base dei seguenti riferimenti: •  Corso UNIX di Roberto Polillo dell’Università di Milano •  Corso Unix di Marco Liverani dell’Università di Roma •  Corso di Laboratorio di sistemi Operativi – Dip. Informatica

dell’Università di Bari a cura di De Carolis, Pizzutilo, Bianchi. •  Corso di Linux di Paolo Torroni

LINUX liv. utente UdB – Dip. Informatica

Breve storia di UNIX Ø  Sviluppato inizialmente, a partire dal 1969, da Ken Thompson

e Dennis Ritchie del gruppo di ricerca dei Bell Laboratories. Incorporò caratteristiche di altri sistemi operativi (es. MULTICS).

Ø  La terza versione, scritta in C, fu sviluppata ai Bell Labs appositamente per supportare UNIX.

Ø  La più significativa delle versioni UNIX non-Bell fu sviluppata alla University of California at Berkeley (Berkeley Software Distributions). Ø Sviluppato per il VAX, 4.3BSD è una delle versioni più

importanti e ne è stato fatto il porting su varie piattaforme. Ø 4BSD UNIX è il risultato di un finanziamento DARPA

per lo sviluppo di uno standard UNIX ad uso governativo. Ø  Vari progetti di standardizzazione hanno tentato di consolidare

le varianti di UNIX, per ottenere un’unica interfaccia di programmazione verso il sistema.

Page 2: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

2

LINUX liv. utente UdB – Dip. Informatica

Storia delle versioni UNIX

LINUX liv. utente UdB – Dip. Informatica

Architettura di UNIX

•  Kernel: tutto ciò che si trova sotto l’interfaccia delle system-call e sopra l’hardware fisico. Fornisce il file system, lo scheduling della CPU,

la gestione della memoria ed altre funzioni di SO, tramite le chiamate di sistema (system call);

•  Programmi di sistema: impiegano le chiamate di

sistema, supportate dal kernel, per fornire funzioni utili, come compilazione e manipolazione di file.

Come molti sistemi operativi, UNIX consiste di 2 parti separate:

Page 3: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

3

LINUX liv. utente UdB – Dip. Informatica

UNIX È un sistema operativo: Ä Multiuser Ä Multitask : multiprocessing - multithreading Ä Time-sharing

kernel

shell

tools

LINUX liv. utente UdB – Dip. Informatica

UNIX : Sistema Operativo multistrato

Librerie standard di sistema

gui Xwindow

HARDWARE

utente

Programmi di utilità (shell, editor, compilatori ed interpreti,…)

KE

RN

EL

Page 4: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

4

LINUX liv. utente UdB – Dip. Informatica

Gestione dei processi La rappresentazione dei processi è il principale problema di

progetto di un sistema operativo. •  UNIX si distingue dagli altri sistemi operativi per la

semplicità con cui processi multipli possono essere creati e manipolati.

•  I processi vengono raprresentati in UNIX per mezzo di vari blocchi di controllo (control blocks).

–  I blocchi di controllo associati ad un processo vengono memorizzati nel kernel.

–  L’informazione contenuta nei blocchi di controllo viene utilizzata dal kernel per controllare i processi ed effettuare lo scheduling della CPU.

LINUX liv. utente UdB – Dip. Informatica

System Call •  Le chiamate di sistema definiscono l’interfaccia del

programmatore verso UNIX. •  L’insieme dei programmi di sistema disponibili definisce

l’interfaccia utente. •  Le interfacce del programmatore ed utente definiscono il

contesto che deve essere supportato dal kernel. •  Si hanno, approssimativamente, tre categorie di system call

in UNIX: –  Manipolazione di file (le stesse chiamate di sistema

supportano anche la manipolazione dei dispositivi). –  Controllo dei processi. –  Manipolazione dell’informazione.

Page 5: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

5

LINUX liv. utente UdB – Dip. Informatica

Controllo dei processi -1 ü  Un processo è un programma in esecuzione identificato univocamente

dall’identificatore di processo (un intero).

ü  . Un processo necessita di alcune risorse per assolvere il proprio compito: tempo di CPU, memoria, file e dispositivi di I/O.

ü  Il SO è responsabile delle attività di gestione dei processi: q Creazione e cancellazione di processi. q Sospensione e riattivazione di processi. q Fornire meccanismi per:

§  sincronizzazione di processi §  comunicazione fra processi

ü  System call per il controllo dei processi: Fork, execve, exit, wait….

ü  Processo zombie: processo terminato dopo il padre.

LINUX liv. utente UdB – Dip. Informatica

System call di gestione dei processi

Stati di un processo

Ready pronto ad essere eseguito, ma non in esecuzione

running in esecuzione

waiting in attesa di un evento o di un dato

Page 6: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

6

LINUX liv. utente UdB – Dip. Informatica

Controllo dei processi — 2 •  I processi comunicano fra loro attraverso pipe, code di

byte che sono accessibili tramite un descrittore di file. •  Tutti i processi utente sono figli di un unico processo,

init. •  init crea un processo getty, che inizializza i parametri della linea del terminale e attende il login name dell’utente per passarlo al processo login. •  Login confronta l’user identifier per verificarne i diritti di accesso al sistema.esegue una shell che crea sottoprocessi per ciascun comando utente.

LINUX liv. utente UdB – Dip. Informatica

Gruppi di processi

•  In ogni istante, un unico gruppo di processi può utilizzare un certo terminale di I/O. –  Il processo (unico) in foreground si svolge sotto gli occhi

dall’utente al terminale. –  I processi in background realizzano il loro compito senza

interagire direttamente con l’utente. •  Ciascun processo eredita il proprio terminale di controllo dal

processo padre.

Un insieme di processi correlati che concorrono alla realizzazione di un task comune.

Page 7: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

7

LINUX liv. utente UdB – Dip. Informatica

Comunicazione tra processi ð  La maggior parte dei sistemi UNIX non permette la condivisione della

memoria in quanto l’hardware nativo PDP-11 non la incoraggiava. ð  La pipe è il meccanismo IPC più caratteristico di UNIX, che garantisce un

flusso unidirezionale affidabile di byte tra due processi. ð  Nel 4.3BSD, le pipe sono implementate come un caso speciale del

meccanismo delle socket, il quale non fornisce un’interfaccia generale solo a funzioni tipo pipe, che sono locali su una macchina, ma anche a funzioni di rete.

Ø  L’interfaccia delle chiamate di sistema in UNIX viene supportata ed ampliata da una notevole collezione di routine di libreria.

Ø  I file header forniscono la definizione di strutture dati complesse impiegate nelle chiamate di sistema.

Ø  Librerie addizionali sono fornite per funzioni matematiche, accesso alla rete, conversioni di dati, ecc.

Routine di libreria

LINUX liv. utente UdB – Dip. Informatica

Interfaccia utente

ü Programmatori ed utenti interagiscono prevalentemente con programmi di sistema già esistenti: Le chiamate di sistema richieste sono incorporate nel programma e non devono essere conosciute dall’utente.

ü I programmi di sistema più comuni sono orientati alla gestione di file e directory. §  Directory: mkdir, rmdir, cd, pwd §  File: ls, cp, mv, rm

ü Altri programmi sono relativi a editor (e.g., emacs, vi) formattatori di testo (e.g., troff, TEX), e altro.

Page 8: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

8

LINUX liv. utente UdB – Dip. Informatica

Shell e comandi Ä Shell o interprete dei comandi – il processo utente che esegue i

programmi. Ä Viene chiamata shell perché “ingloba” il kernel. Ä La shell indica che è pronta ad accettare un nuovo comando

visualizzando un prompt e l’utente introduce comandi su una singola linea.

Ä La shell naviga attraverso il percorso di ricerca per trovare il file relativo al comando, che viene in seguito caricato ed eseguito.

Ä Le directory /bin e /usr/bin (che contengono la maggior parte dei comandi) sono quasi sempre nel percorso di ricerca.

Ä La shell normalmente sospende la propria esecuzione fino al termine del comando.

LINUX liv. utente UdB – Dip. Informatica

Standard I/O

•  La maggior parte dei processi, quando iniziano la loro esecuzione, si aspettano di poter disporre di tre descrittori di file aperti: –  standard input – il processo può leggere cosa viene scritto

dall’utente –  standard output – il processo può inviare l’output sullo schermo

dell’utente –  standard error – uscita dell’errore

•  Molti programmi possono anche utilizzare file (piuttosto che un terminale) per lo standard input e lo standard output.

•  Redirezione dell’I/O: Le shell più comuni dispongono di una semplice sintassi per cambiare i file aperti per l’I/O standard di un processo.

Page 9: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

9

LINUX liv. utente UdB – Dip. Informatica

Classi di comandi

•  Amministrazione di sistema •  Gestione files •  Elaborazione testi •  Sviluppo software •  Comunicazione •  ….

LINUX liv. utente UdB – Dip. Informatica

Pipeline, Filtri, e Shell Script Ø I singoli comandi possono essere “accodati” per mezzo

di una barra verticale | (pipe). In questo modo, l’output del comando a sinistra della pipe costituisce l’input per il comando alla sua destra.

% ls | pr | lpr Ø Filtro – un comando che passa il proprio standard input

allo standard output, compiendo qualche elaborazione (es. pr).

Ø Programmare una nuova shell personalizzata, con sintassi e semantica diverse, cambia la visione dell’utente, ma non modifica il kernel o l’interfaccia del programmatore.

Ø XWindow è un’interfaccia utente a icone molto diffusa sui sistemi UNIX.

Page 10: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

10

LINUX liv. utente UdB – Dip. Informatica

Redirezione dell’I/O standard Comando Significato del comando % ls > file_a dirige l’output di ls sul file file_a % pr < file_a > file_b input da file_a e output su file_b % lpr < file_b input da file_b %% make program > & errs salva sia lo standard output che lo

standard error su un file

LINUX liv. utente UdB – Dip. Informatica

Manipolazione di file

ü  Un file è una sequenza di byte; il kernel non impone ai file nessuna struttura.

ü  I file sono raccolti in directory, organizzate ad albero. ü  Le directory sono file che contengono informazioni su come reperire

altri file. ü  Path name (nome di percorso): identifica un file specificando un

cammino che, attraverso la struttura a directory, raggiunge il file. §  Un path name assoluto inizia nella radice del file system. §  Un path name relativo inizia nella directory corrente.

ü  System call per la manipolazione di file: create, open, read, write, close, unlink, trunc.

Page 11: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

11

LINUX liv. utente UdB – Dip. Informatica

Struttura delle directory in UNIX

LINUX liv. utente UdB – Dip. Informatica

Shell Interfaccia di alto livello tra utente e SO

•  Processore comandi evoluto: • interpreta e mette in esecuzione comandi da:

•  standard input •  file comandi

•  linguaggio comandi con elevato potere espressivo

- Negli anni '60: Dennis Ritchie e Ken Thompson di AT&T ⇒UNIXTM: ? creazione di uno strumento con cui gli utenti potessero interagire con questo nuovo sistema. - Altri S.O. utilizzavano interpreti di comandi. - Nacque la Bourne shell (nota semplicemente come sh), creata da S.R. Bourne. - Sviluppate diverse shell, come la C shell (csh) e la Korn shell (ksh).

Bourne Again Shell o bash: per saperne di più sulla bash, leggete la relativa pagina man, che comparirà digitando man bash. bash è installata di default con Red Hat Linux.

Page 12: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

12

LINUX liv. utente UdB – Dip. Informatica

Shell Unix - Linux accesso al sistema

•  Un utente può attivare piu’ shell, anche diverse: tcsh, csh, bash,... •  Shell di login (shell particolare)

•  fornisce un accesso al sistema a ciascun utente

La shell è rappresentata da un processo assegnato

all’utente

INIT

Shell (Paolo)

Shell (Anna)

LINUX liv. utente UdB – Dip. Informatica

Accesso a Linux: login e password Prerequisiti

• Un "account" utente per l'accesso a tale sistema • La "password" per tale "account"

Entrare nel sistema (login) L'accesso ad un sistema Linux richiede il "login" : l'operazione con la quale si

specifica al sistema il proprio "account" utente e la propria "password".

Attenzione: il "case" delle lettere ha importanza. Assicurative che il "led" della tastiera con la dicitura Caps Lock sia spento prima di digitare i vostri dati.

Login: nomeutente password: ********* Prompt

[nomeutente@nomepc nome]$ _ se utente normale

[root@nomepc nome]# _ se utente root Prompt personalizzabile attraverso la variabile d’ambiente PS1

Page 13: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

13

LINUX liv. utente UdB – Dip. Informatica

Accesso a Linux: login e password Il sistema (in realtà un programma che si chiama login) controlla che esista un utente con il nome dato username e che la password corrisponda a quella registrata nel file /etc/passwd A questo punto, avete una "identità” o username, a cui corrisponde uno userid (o uid) numerico e appartenete ad alcuni gruppi, a cui corrispondono dei groupid (o gid) numerici. Nota: Questa "identità" spesso viene chiamata "account"

<login> do {

<ricevi comando dal file di input> <interpreta il comando> <esegui comando>

} while (!EOF); <logout>

INIT esegue GETTY

GETTY visualizza “Login:” ed attende un input utente

LOGIN Effettua il riconoscimento utente. Esegue file di configurazione “profile”

La SHELL prende il controllo

SHELL termina INIT e, si risveglia e fa partire un altro GETTY

Password corretta Password non corretta

LINUX liv. utente UdB – Dip. Informatica

Shell di login •  La shell di login viene attivata automaticamente all'atto di login. •  Interpreta prima di tutto uno script uguale per tutti gli utenti e scritto dal sistemista: /etc/profile. •  Successivamente esegue uno script definito dall'utente, nella propria home directory. Il nome di questo script varia a seconda del tipo di shell. Per la bash, esegue solo il primo script fra: ~/.bash_profile, ~/.bash_login, ~/.profile •  L'utente puo' quindi "personalizzare" il suo ambiente di lavoro usando lo script di login. •  Inoltre, anche alla sua attivazione la shell esegue automaticamente lo script ~/.bashrc , sempre con operazione source. •  All'uscita della sessione viene eseguito lo script ~/.bash_logout.

Page 14: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

14

LINUX liv. utente UdB – Dip. Informatica

Shell

u Sistema multiutente ⇒ problemi di privacy (possibili interferenze): necessità di proteggere / nascondere informazione Ø  Concetto di gruppo (es. staff, users, root, ...): possibilità di lavorare sugli

stessi documenti; Ø  Ogni utente appartiene a un gruppo ma può far parte anche di altri a

seconda delle esigenze e configurazioni: Ø  Per iniziare una sessione bisogna essere in possesso di una combinazione:

·username (es. soa01001, soa01002, ...) ·password (es. dfh@2#q, **a890, aPP&x., ...) ;

Ø  nota: maiuscole / minuscole sono caratteri diversi!! (la password **a890 è diversa da **A890).

LINUX liv. utente UdB – Dip. Informatica

Livelli di esecuzione (runlevels) •  0 – halt •  1 – single-user mode •  2 – multi-user senza servizi di rete (NFS) •  3 – multi-user •  4 – non usato •  5 – multi-user con interfaccia grafica (X11) •  6 – reboot • “/etc/inittab” è il file di configurazione dei run level • “/etc/rc.d/” contiene gli script di inizializzazione per ciascun livello Ogni runlevel è una particolare configurazione del kernel in cui certe cose

sono permesse ed altre no.

Page 15: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

15

LINUX liv. utente UdB – Dip. Informatica

•  Per default l'installazione definisce il livello 3 come initdefault: •  alla partenza il sistema operativo e' in multiuser mode ed attiva tutti i

servizi di rete previsti. •  Non e' attivo l'X-server (evocabile con il comando 'startx') previsto con

il livello 5. •  Per definire un diverso initdefault e' necessario modificare il file /etc/

inittab. Per esempio, modificando il record id:3:initdefault: in id:5:initdefault: al prossimo reboot il sistema attivera' automaticamente anche l'X-server.

•  Il processo di BOOT carica e inizializza tutti i servizi (daemon) •  INIT legge quali cose fare da /etc/inittab dove e' segnato il runlevel

iniziale (solitamente il 3), e cosa fare per ogni runlevel. •  Esiste la directory /etc/rc.d che contiene tutti gli script opportuni,

divisi per runlevel. •  Chiaramente un certo daemon puo' essere presente in piu‘ runlevel

(tipicamente nel 2 e nel 3).

Livelli di esecuzione (runlevels)

LINUX liv. utente UdB – Dip. Informatica

"runlevel" di Linux. Il runlevel 3 e' quello che vi permette di avviare il sistema in modalita' testo (ovvero vi verra' offerta una semplice schermata di login). Il runlevel 5 invece e' quello grafico, che avvia il server X subito. Le due "modalita'" non sono esclusive, si può sempre avviare il server grafico dalla modalita' console oppure passare a una semplice console da Kde o Gnome.

Se si entra in LINUX in modalita' console (da LILO: linux 3), dopo il login scrivete startx per avviare il server X. Se invece entrate in modalita' grafica (o di default oppure da LILO: linux 5) si può: a) passare alle console di login premendo CTRL+ALT+F1 (fino a F6), per tornare

alla grafica CTRL+ALT+F7. b) aprire una shell di root all'interno dell'ambiente grafico. basta clickare sull'icona che assomiglia a uno schermo nero con davanti una

conchiglia (shell) nel Panel di kde. A questo punto avrete una shell dell'utente con cui siete entrati in kde.

Page 16: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

16

LINUX liv. utente UdB – Dip. Informatica

Utenti - Gruppi Username: a cui corrisponde un nome identificativo dell’account (massimo 8 caratteri)

userid (o uid): numero intero univoco: un database separato fuori del kernel collega username a uid (file etc/passwd) . Se due o più utenti hanno lo stesso uid è come se fosse lo stesso utente ma con due nomi diversi.

gruppi, a cui corrispondono dei groupid (o gid) numerici:

Un gruppo permette distinzione tra gli utenti. Ogni utente deve risiedere in un gruppo. Se esso non risiede in un gruppo particolare, lo stesso utente formerà un gruppo a sé stante, di cui egli è il solo membro.

Tramite i gruppi è possibile definire delle azioni che sono concesse a più utenti facenti parte di uno stesso gruppo.

LINUX liv. utente UdB – Dip. Informatica

/etc/passwd Contiene informazioni sugli utenti definiti Schema: username:password:UID :GID:‘comment’: home directory : login command

/etc/shadow Contiene informazioni sulle password crittografate degli utenti definiti schema: username : encrypted password : last change of password : minimum days that the password should exist without changing : maximum days of the password's existance : days until the user gets a message that his password will expire : number of days that the account will stay out of order before it can be totally deleted : exact date of password's expiration

/etc/group

contiene informazioni sui gruppi definiti schema: group name : password : GID : users of the group

Page 17: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

17

LINUX liv. utente UdB – Dip. Informatica

Shell: utilizzo delle pagine man

man spazio nome del comando Es: man su, compare la pagina man del comando su. Scorrere Avanti = Barra spaziatrice; Scorrere Indietro= premete b. Uscire = il tasto q.

Uno dei modi più semplici per scoprire come utilizzare molti comandi e applicazioni è tramite il comando man (abbreviazione di "manuale”). In un formato estremamente condensato, le pagine man forniscono il riassunto delle funzionalità del comando, le opzioni disponibili e la sintassi utilizzata per eseguire il comando.

LINUX liv. utente UdB – Dip. Informatica

Shell: stampa delle pagine man

Es: per stampare una pagina man per man: man man | col -b | lpr

comando parametro pipe filtro comando di stampa Nel dettaglio: il comando invia l'output della pagina man attraverso il filtro di col, che formatta adeguatamente l'output per la stampante rimuovendo i caratteri di formattazione video.

Questo metodo è chiamato piping. Uno dei modi più semplici per scoprire come utilizzare molti comandi e applicazioni

è tramite il comando man (abbreviazione di "manuale”) In un formato estremamente condensato, le pagine man forniscono il riassunto delle funzionalità del comando, le opzioni disponibili e la sintassi utilizzata per eseguire il comando.

Page 18: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

18

LINUX liv. utente UdB – Dip. Informatica

Formato Comandi Nome comando -opzioni argomenti Esempio: ls -l temp.txt Sintassi:

•  se un opzione/argomento può essere omesso si mette tra [opzione]

•  se due opzioni/argomento sono mutuamente esclusivi, vengono separati da | .. Ad es: arg1 | arg2

•  quando un arg può essere ripetuto n volte si aggiungono i puntini arg...

LINUX liv. utente UdB – Dip. Informatica

Comandi di controllo dell’ambiente

•  Logout per uscire da una login •  Passwd per cambiare password dell’utente •  Stty per impostare le opzioni per il terminale •  Finger per visualizzare le informazioni sugli utenti •  Ps per visualizzare i processi del sistema •  Env per visualizzare i parametri di configurazione

dell’ambiente •  Set per “settare” i parametri di configurazione •  Alias per definire abbreviazioni o nuovi nomi di un

comando, •  History per visualizzare gli ultimi comandi digitati.

Page 19: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

19

LINUX liv. utente UdB – Dip. Informatica

Shell passwd cambia la password dell'utente corrente ps visualizza i processi del sistema es:ps -x Process Identifier terminale stato del processo tempo di CPU nome comando

PID TT STAT TIME COMMAND 7032 p1 S 0:00 -csh 7120 p1 D 0:00 find/-name test 7231 p1 R 0:00 ps

su lancia una shell con i privilegi dell'utente indicato. Es: su root Questo comando lancia una shell con i privilegi di superuser.

LINUX liv. utente UdB – Dip. Informatica

Shell: variabili d’ambiente Visualizzare le variabili di ambiente digitando al prompt della shell:

env Viene visualizzato elenco di variabili di ambiente della bash. Ognuna di queste variabili contribuisce a personalizzare l'ambiente.

Ad es. PATH definisce ciò che viene chiamato il percorso di default.

Per il vostro account la variabile path può somigliare a :

PATH=/usr/local/bin:/usr/X11R6/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/pippo/bin

…ed indica dove il sistema può trovare i programmi.

Page 20: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

20

LINUX liv. utente UdB – Dip. Informatica

History Ripetizione veloce su linea di comando Quando si vuole ripetere un comando che si è digitato prima, è sufficiente premere il tasto con la freccetta in su. In questa maniera si accede alla history dei comandi. Se l'history dei comandi digitati è troppo lunga e/o si ricordano le prime lettere del comando, si può richiamarlo direttamente anteponendo ad esso il punto esclamativo. Ad esempio se si è digitato il comando: % ls -lR| grep fortune |sort +4n per trovare i file "fortune" ordinati per grandezza e lo si vuole richiamare, è sufficiente dare il comando: % !ls oppure % !l Questa funzionalità é particolarmente utile quando si devono riscrivere comandi molto lunghi. In pratica quando gli si passa qualcosa del tipo "!nome" la shell interpreta il comando "Esegui l'ultimo comando digitato, che si trova nella history, che inizia con nome".

LINUX liv. utente UdB – Dip. Informatica

Se poi il problema è la cattiva digitazione di un comando (sempre sulla linea di comando), è possibile correggere l'errore senza doverlo riscrivere. Ad esempio : % ls -lR| grep fortune |sort +4n con il comando '^ra^re' viene sostituita la stringa 'ra' con 're' e viene eseguito automaticamente il comando risultante.

% ^ra^re ls -lR| grep fortune |sort +4n ./fortune-0.2/debian: ./fortune-0.2: ./fortune.it-1.51: -rw-r--r-- 1 8044 users 429 Oct 26 1998 fortune.lsm -rw-r--r-- 1 8044 users 514 Oct 24 1998 fortune.6 -rw-r--r-- 1 501 150 1733 Jan 9 1998 fortune.it-1.51.lsm drwxr-xr-x 2 501 150 4096 Jan 9 1998 fortune.it-1.51 drwxr-xr-x 3 8044 users 4096 Jul 16 17:05 fortune-0.2 -rw-r--r-- 1 8044 users 5179 Oct 25 1998 fortune.c -rwxr-xr-x 1 root root 10080 Jul 16 17:05 fortune

Page 21: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

21

LINUX liv. utente UdB – Dip. Informatica

Shell last last indica gli ultimi accessi al sistema. es: last -n 20 Mostra gli ultimi 20 accessi es: last -x -n20 Mostra gli ultimi 20 Shutdown e cambi di run-level

LINUX liv. utente UdB – Dip. Informatica

System level user command •  Who visualizza chi è “loggato” sul sistema in un dato momento •  Whatis cmd descrive brevemente il comando specificato come parametro •  Which cmd fornisce informazione sull’alias del comando specificato •  Whereis cmd fornisce il path del comando specificato •  Date visualizza la data e l’ora corrente di sistema •  Cal visualizza il calendario •  Bc attiva una calcolatrice con le operazioni aritmetiche base •  Wc file conta le linee, le parole ed i caratteri di un file •  Spell segnala errori di spelling •  Lpr file invia allo spool di stampa un file •  Lpq mostra lo stato della coda di stampa •  Lprm job rimuove job dalla coda di stampa

Page 22: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

22

LINUX liv. utente UdB – Dip. Informatica

Shell date date imposta la data e l'ora del sistema es: date Eseguendo semplicemente il comando date, riporta la data e l'ora corrente. es: date -s '02 May 2000 10:55:10' Questo esempio setta la data al 2 Maggio 2000, e l'ora alle 10:55:10, omettendo l'ora si setta automaticamente all'ora 00:00:00 es: date --date '20 days ago' Stampa la data di 20 giorni fa es: date --date '3 months ago' Stampa la data equivalente al giorno corrente di 3 mesi fa. es: date --date '1 month 1 day' Stampa la data corrispondente a quella fra un mese ed un giorno. es: date --date '1 month 1 day ago' Stampa la data di un mese ed un giorno fa. es: date +'%T' Stampa l'ora corrente nel formato ore:minuti:secondi

LINUX liv. utente UdB – Dip. Informatica

Comandi esempi di comandi nadja@std05a:~$ whoami!

!nadja!!nadja@std05a:~$ date! !Fri Apr 20 12:48:24 CEST 2001!!nadja@std05a:~$ who!

!root tty1 Apr 9 14:02!!root ttyp1 Apr 12 17:11 (:0.0)!!nadja ttyp2 Apr 17 12:21 (gaia!

!!

Page 23: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

23

LINUX liv. utente UdB – Dip. Informatica

pwd: determinare la directory in cui si trova l’utente

Il comando pwd significa print working directory.

Quando si digita pwd, si chiede al sistema Linux la posizione corrente. Il sistema risponde "mostrando" sul monitor la directory in cui ci si trova, conosciuto anche come standard output.

LINUX liv. utente UdB – Dip. Informatica

Comandi di base per il file system

• ls elenca file • cd cambia directory corrente • pwd mostra la directory corrente • mkdir crea directory • cp copia • rm rimuovi • mv sposta • chown cambia il proprietario • chmod cambia i permessi di accesso • ln crea un collegamento • cat mostra il contenuto di un file

Page 24: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

24

LINUX liv. utente UdB – Dip. Informatica

Uso dei metacaratteri I metacaratteri servono a specificare un pattern per identificare un insieme di nomi di file già esistenti. La shell provvede a sostituire i metacaratteri con i nomi di file. · * sta per qualsiasi sequenza (anche vuota) di caratteri: es. *.java, file.* · ? sta per esattamente un carattere: es. file.do? · [ ] specificano una lista o un intervallo di caratteri

(es. [a-c], [A-Za-z]: file.do[ct]) · gli apici possono essere usati per indicare che eventuali metacaratteri non

vanno espansi Esempio:

ptorroni@lab3-linux:~$ ls Xrootenv.0 f12.txt hw temp vi.txt f1.txt f2.txt p.c

temp.c ptorroni@lab3-linux:~$ ls f?.txt f1.txt f2.txt ptorroni@lab3-linux:~$ ls f*.txt

f1.txt f12.txt f2.txt ptorroni@lab3-linux:~$ ls [f-t]*.*

f1.txt f12.txt f2.txt p.c temp.c

LINUX liv. utente UdB – Dip. Informatica

ls Sintassi (sempl): ls [-opzioni…] [file…] opzioni: - l (long format): per ogni file una linea che contiene i diritti, il numero di link, il proprietario del file, il gruppo del proprietario, l’occupazione di disco (blocchi), la data e l’ora dell’ultima modifica o dell’ultimo accesso, e il nome - t (time): la lista ordinata per data dell’ultima modifica - u: la lista ordinata per data dell’ultimo accesso - r (reverse order): inverte l’ordine - a (all files): fornisce una lista completa (i file che cominciano con il punto non vengono visualizzati file nascosti) - F (classify): aggiunge al termine del nome del file un carattere che ne indica il tipo (eseguibile:*, direttorio: /, link simbolico: @, FIFO: |, socket:=, niente per file regolari)

Page 25: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

25

LINUX liv. utente UdB – Dip. Informatica

Esempio: ls nadja@lab3-linux:~$ ls –l!!total 3!-rw-r-r- - !1 nadja staff !57 apr 1 13:00 !f1.txt!-rw-r-r- - !1 nadja staff 1024 apr 4 12:00 !f2.txt!!!tipo di file diritti(user,group,others)

link propietario gruppo dimensione(byte) data ultima modif nome

LINUX liv. utente UdB – Dip. Informatica

Shell cd

serve per muoversi attraverso le directory. Esempio: albero delle directory: /home/antonio/documenti/personali/fattura10.txt posizione corrente: /home/antonio per portarsi nella directory dove si trova il documento fattura 10, digitare il seguente comando: cd documenti/personali. Per portarsi nella propria directory home digitare il comando cd mentre per portarsi nel primo livello dell'albero delle directory digitare cd / mentre con cd .. si va alla directory superiore.

Page 26: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

26

LINUX liv. utente UdB – Dip. Informatica

Risposte ai Comandi

echo "Hello World" il sistema operativo rispondera' con: Hello World Linux ripete quello che è stato specificato come parametro. Il comando echo risultera' fondamentale per gli script di shell.

LINUX liv. utente UdB – Dip. Informatica

File System Dati e Programmi sono organizzati mediante una struttura di files e directories:

file: collezione di dati directory: collezione di file o di directory Il file system possiede un insieme di utilities per creare, modificare, riprodurre, distruggere ecc. files o dir.

FILE = Flusso indifferenziato di byte ("byte stream") che può contenere informazioni qualsiasi – (dati, programmi sorgente, programmi oggetto,...) – File di tipo testo (formati da linee di caratteri ASCII)

caratteri - newlines - eof – File binari: sequenze di codici binari

000110001….. Il sistema non impone nessuna struttura alla sequenza di byte •  Un file è identificato da un nome (max 256, car alfabetici, numerici e underscore) •  Nomi di file riservati: / (slash) root directory - . (period) directory attuale - .. (double period)

directory padre - ~ (tilde): home directory •  Non può iniziare con un numero o con un punto (?) •  Estensione: (.estensione) raggruppa file in base al loro contenuto.

Page 27: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

27

LINUX liv. utente UdB – Dip. Informatica

file file cerca di determinare l’uso che ne può essere fatto.

od legge contenuto file bytexbyte (file dump).

LINUX liv. utente UdB – Dip. Informatica

Stampa Stampa file:

lpr nomefile[s] Tecnica di spool: inserite in una coda ed eseguite in background Visualizza coda dei job di stampa

lpq Cancellare un job di stampa dalla coda:

lprm Idjob opzione -P

Page 28: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

28

LINUX liv. utente UdB – Dip. Informatica

Link I link sono particolari file ordinari che puntano ad altri file o directory. •  + flessibilità della struttura gerarchica del FS •  consentono condivisione file tra dir diverse, no duplicazione Utilizzo dei link: la struttura del FS diviene un grafo aciclico La condivisione di un file è ottenuta mediante la primitiva LINK oppure tramite il comando ln ln /usr/user1/prog/a link_a

Il file a è identificato mediante due cammini differenti: /usr/user1/prog/a /usr/user2/prog/link_a

LINUX liv. utente UdB – Dip. Informatica

Link

Hard-link o fisici:quelli visti finora - non possono essere usati tra FS differenti Soft-link o simbolici: informazioni sul percorso per trovare il file

opzione -s

Page 29: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

29

LINUX liv. utente UdB – Dip. Informatica

Come riconosco un link •  Hard-link o fisici:

i-node •  Soft-link o simbolici:

LINUX liv. utente UdB – Dip. Informatica

DIRECTORY

dir: etc home ecc file ordinario: README

/ radice (root) ramo

etc home bin dev nodo

users web bash dir corrente

README foglie

Sono sequenze di byte, come i file ordinari. A differenza dei file ordinari : – Non contengono dati ma un elenco di nomi di file e relativi riferimenti ad altre strutture dati del file system – Non possono essere scritte da programmi ordinari

Una directory è un indice contenente i riferimenti (i-number) di tutti i file memorizzati nella directory stessa

Page 30: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

30

LINUX liv. utente UdB – Dip. Informatica

Comandi per la gestione del FS pwd,cd, rm, cp, mv, mkdir, rmdir

Tipiche dir del FS

/bin comandi eseguibili /dev files speciali (I/O devices) /etc files per l’amministrazione del sistema, /lib librerie di programmi /tmp area temporanea /home home directory degli utenti

Ad ogni utente viene assegnata, da parte del system administrator, una directory di sua proprietà (home directory) che ha come nome lo username dell’utente stesso. In essa, l'utente potrà creare tutti i file (o subdirectory) che desidera. Spesso, ma non sempre, le home directory sono sotto la directory di sistema /home Per denotare la propria home directory si può usare l'abbreviazione "~“.

LINUX liv. utente UdB – Dip. Informatica

File Speciali Ogni device di I/O viene visto, a tutti gli effetti, come un file (file speciale)

– A blocchi: associati a dispositivi che presentano blocchi di informazione accessibili direttamente (es. dischi) – A caratteri: associati a dispositivi che presentano un flusso di caratteri in ingresso o uscita (es. terminali, stampanti)

Richieste di lettura/scrittura da/a file speciali causano operazioni di input/output dai/ai device associati

–Tutte le operazioni di I/O relative ai dispositivi fisici vengono effettuate applicando le normali primitive definite per file normali, sui corrispondenti file speciali

cp file /dev/lp Copia file sulla stampante, producendone la stampa

Page 31: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

31

LINUX liv. utente UdB – Dip. Informatica

File Speciali

Vantaggi: Trattamento uniforme di file e device

File & device independence: programmi portabili e facilmente interfacciabili con ogni tipo di device

LINUX liv. utente UdB – Dip. Informatica

File e directory: permessi Ad un file possono essere attribuiti i seguenti permessi:

–Lettura (r-ead) –Scrittura (w-rite) –Esecuzione (e-x-ecute)

I permessi sono definiti per: – utente proprietario (user) – gruppo (a cui appartiene il proprietario) (group) – altri (others)

Al momento della creazione di un file o di una dir: vengono assegnati i permessi di lettura e scrittura al proprietario

Page 32: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

32

LINUX liv. utente UdB – Dip. Informatica

File e directory: permessi Per i file ordinari: r: leggere il contenuto w: modificare il contenuto x: eseguire il file (ha senso solo se il file contiene un programma)

NB: i permessi definiti su un file dipendono dai permessi della directory che contiene il file

Per i file speciali: r: leggere dal device (input) w: scrivere sul device(output) x: non significativo

Per le directory: r: leggere il contenuto directory (es.: ls, con x abilitato) w: modificare la directory, rimuovere files (con x abilitato) x: accesso (scansione) della directory (per leggere, modificare, eseguire un file in essa contenuto)

LINUX liv. utente UdB – Dip. Informatica

chmod chmod [ugoa][+-][rwx] filename Permette di cambiare i permessi di accesso (lettura, scrittura, esecuzione) su un file; il comando può essere eseguito solo dall’utente proprietario (o dal superuser)

Page 33: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

33

LINUX liv. utente UdB – Dip. Informatica

chmod

Una volta stabilita questa corrispondenza i permessi possono essere dedotti o impostati utilizzando un numero ottale. Combinazione di 3 numeri ottali: rwx

LINUX liv. utente UdB – Dip. Informatica

chown

chown newuserid file... change owner: cambia l’utente propietario di un file L’utente identificato da newuserid diventa il nuovoproprietario dei file Il comando può essere eseguito solo dal proprietario "cedente” (o dal superuser)

chgrp

chgrp newgid file... change group: cambia il gruppo propietario di un file Il gruppo identificato da newgid diventa il nuovo gruppo proprietario dei file Il comando può essere eseguito solo dal proprietario "cedente” (o dal superuser)

Page 34: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

34

LINUX liv. utente UdB – Dip. Informatica

I FILTRI ü SED editor non interattivo basato sulla individuazione del testo da modificare tramite le espressioni

regolari fornite dall’utente. Es. sed –e ‘1,100d’ filetesto > file.1

sed –e ‘3s /unix/UNIX/g’ filetesto ü GREP ricerca sullo standard input l’occorrenza di una espressione regolare fornita dall’utente e,

se trova una linea che concorda con questa, la copia sullo standard output Es: grep “mario” file.txt oppure grep ‘[A-Z].*’ file.txt ps –ef | fgrep sendmail (fgrep=fast grep su stringhe fisse di testo) ls –l |grep ‘^d’

ü AWK linguaggio di programmazione interpretato, utilizzbile nell’information retrieval, nella generazione di report, nella manipolazione di testi, ecc… Es: awk ‘begin { fs=“:”} $7 == “/usr/bin/csh” {csh++}END \ {print “utenti con shell:”,csh} etc/passwd

awk ‘/^[pP]ippo/’ file.txt ü FIND effettua la scansione ricorsiva della directory alla ricerca di un file che soddisfi l’espressione

riportata Es: find / -user Pippo find . –name “core” -print

ü SORT effettua l’ordinamento di uno o più file o di linee sullo standard output Es: sort /etc/passwd

ü VI editor

LINUX liv. utente UdB – Dip. Informatica

Operazioni su file Ricerca

Opzioni

Page 35: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

35

LINUX liv. utente UdB – Dip. Informatica

Esempi ricerca

% find . -name a.out -atime +7 -exec rm {} \;

Eliminare tutti i file nella working directory (o più sotto) di nome a.out il cui ultimo accesso è anteriore a 7 giorni

Trova tutti i file nella working directory (o più sotto) di nome a.out il cui ultimo accesso è anteriore a 7 giorni

% find . -name a.out -atime +7

LINUX liv. utente UdB – Dip. Informatica

Esempi ricerca

Page 36: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

36

LINUX liv. utente UdB – Dip. Informatica

Esempi ricerca

LINUX liv. utente UdB – Dip. Informatica

Esempi ricerca

Page 37: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

37

LINUX liv. utente UdB – Dip. Informatica

vi Eseguendo il comando vi si entra in un ambiente di editing. L’area di lavoro è completamente dedicata al testo da elaborare, ad esclusione dell’ultima riga in basso che mantiene, di volta in volta, indicazioni sullo stato in cui si trova l’editor. vi è stato progettato in modo da distinguere anche concettualmente l’immissione del testo dall’interpretazione di comandi che operano sul testo inserito. In qualsiasi momento, per poter inserire un comando è sufficiente tornare alla modalità comandi premendo il tasto Esc. Inoltre il tasto Esc consente di annullare un comando non completato. Premerlo più volte di seguito non ha effetti collaterali.

LINUX liv. utente UdB – Dip. Informatica

vi: Apertura di un file L’esecuzione del comando vi senza argomenti, crea un nuovo

buffer vuoto. Se invece vogliamo editare un file esistente possiamo invocare vi seguito dal nome del file da editare. vi nomefile

In alternativa, una volta avviato vi, è possibile aprire un file con il comando :e :e nomefile

Inserimento del testo Premendo il tasto i oppure Ins si passa alla modalità di inserimento del testo, in cui è possibile digitare del testo normalmente. Solitamante questa modalità è identificata dalla presenza della stringa – INSERT – nella barra di stato. E` da notare che il carattere ˜ (tilde) identifica le linee vuote.

Page 38: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

38

LINUX liv. utente UdB – Dip. Informatica

Modifica del testo La pressione del tasto r attiva la modalità modifica del testo in cui il

testo inserito sovrascrive il testo esistente. L’attivazione di tale modalità è identificata dalla presenza della

stringa – REPLACE – nella barra di stato. Lo stesso risultato si ottiene premendo due volte il tasto Ins.

Cancellazione del testo Per cancellare del testo è possibile utilizzare il comando x che

cancella il carattere identificato dal cursore, oppure il comando dd preceduto da un numero n il quale, appunto, cancella n righe a partire da quella occupata dal cursore.

LINUX liv. utente UdB – Dip. Informatica

Copia ed incolla Il comando yy, eventualmente preceduto da un numero, copia in un

buffer n righe a partire da quella in cui si trova il cursore. La funzione “Taglia” in realtà viene svolta dal comando dd che non

si limita a cancellare una riga ma la copia in un buffer. Per incollare si usano i comandi p oppure P. Il primo incolla a partire

dalla riga seguente a quella in cui si trova il cursore, il secondo a partire da quella in cui si trova il cursore.

Ricerche nel testo

Per cercare una stringa all’interno di un file di testo si usa il / Tra l’altro questo comando svolge la stessa funzione in molte

situazioni (all’interno di man, less, more, ecc.). Dopo la pressione del tasto / è possibile digitare la stringa da cercare

che apparirà nella barra di stato. Per ripetere l’ultima ricerca effettuata si usa il tasto n.

Page 39: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

39

LINUX liv. utente UdB – Dip. Informatica

Salvataggio e chiusura Per salvare il testo editato, si usa il comando :w, mentre per

uscire dal programma si usa il comando :q. I due comandi possono esseri combinati ( :wq ) per salvare ed

uscire nello stesso momento. Inoltre e’ possibile forzare l’uscita senza salvare (con

conseguente perdita delle modifiche), con il comando :q!

LINUX liv. utente UdB – Dip. Informatica

Riepilogo vi  vi nomefile, apre il file in vi  Esc torna alla modalità comandi  :e (edit) apre un file  i o Ins inserisce del testo  r o due volte Ins sovrascrive il testo  [n] dd taglia n righe  [n] yy copia n righe  p incolla dopo la riga corrente  P incolla a partire dalla riga corrente  / cerca all’interno del testo  n ripete l’ultima ricerca  :w salva  :q chiude  :q! chiude senza salvare

Page 40: LINUX a livello di utentereting/linux1.pdf2 LINUX liv. utente UdB – Dip. Informatica Storia delle versioni UNIX LINUX liv. utente UdB – Dip. Informatica Architettura di UNIX •

40

LINUX liv. utente UdB – Dip. Informatica