File - VivoScuola
Transcript
File - VivoScuola
StarShell Linux Architettura ed Uso StarShell Indice Collegarsi a Linux Architettura di Linux Il Filesystem I Files Permessi sui files Utenti e Gruppi Manualistica Il Sistema Grafico X Utilities Avanzate Editors di Linux 3 21 45 73 83 92 102 107 144 151 2 StarShell Collegarsi a Linux 3 StarShell Storia di Unix 1969 Unix Research AT&T Bell Labs. 1980 1981 Berkeley Standard Distribution Unix System V AT&T circa 1994 FreeBSD OpenBSD Irix Tru64 Linux Aix HP-UX Solaris 4 StarShell Distribuzioni di Linux – Necessità di integrazione di sistema – Supporto fisico e metodo di installazione – Amministrazione e supporto Red Hat SuSE – Novell Slackware Debian Ubuntu 5 StarShell Unix: Diagramma a Cipolla Gli applicativi colloquiano col Kernel tramite Chiamate di Sistema L!essere umano è all!esterno del diagramma E! una API in linguaggio C Applicativi L!umano interagisce con gli applicativi Kernel System Calls Il Kernel fornisce i servizi comuni del sistema operativo Hardware Shell L!umano interagisce con un!interfaccia a caratteri (Shell) o grafica (GUI) per lanciare gli applicativi StarShell Device Drivers Interfacce Grafiche (GUI) Il Kernel comunica col l!Hardware tramite i Device Drivers Gli applicativi non possono interagire direttamente con l!Harware 6 Interazione con UNIX Applicativi Command Line CLI Interface Shell sh csh ksh bash Kernel HW device drivers system calls Graphical User GUI Interface Desktop Environment Common Desktop Environment (CDE) KDE Gnome Java Desktop System (JDS) 7 StarShell Collegamento a Unix Benvenuto (issue) Nome utente Password non visualizzata Welcome to master.starshell.sh Login: user Password: xf57ht Sistema di sviluppo. [master:user]$ Command Line Interface (CLI) collegamento a caratteri “console” Graphical User Interface (GUI) collegamento grafico “desktop” • login tramite Display Manager • CLI su GUI tramite finestra “terminale” Message of the Day (MOTD) “Pronto” $ utente generico # amministratore (superuser, “root”) Uscita dalla sessione di lavoro CLI comando exit o logout GUI apposito bottone o voce menù 8 StarShell Linux – Qualche comando • • • • • • • • • • id – identità personale who – chi è collegato whoami – chi sono io tra i collegati tty – nome del mio terminale hostname – nome della mia macchina date – data ed ora corrente pwd – directory corrente ls – lista directory corrente ls -l – lista lunga man ls – (q: uscire, spazio: avanti, b: indietro) 9 StarShell Cambiamento password passwd • Comando di cambiamento password. Richiede – vecchia password • richiesta per verificare l'utente – nuova password • richiesta 2 volte • non visualizza niente durante la digitazione • Complicatezza minima – almeno 6 caratteri, di cui almeno 1 non alphanum – non simile a login o parole dizionario – determinata da PAM (Pluggable Authentication Modules) policies di sicurezza 10 StarShell Interruzione comandi sleep 5 – attende 5 secondi prima di ridare il pronto sleep 10000 ^C (control-C) – interrompe il comando corrente stty -a stty intr “^A” sleep 20000 ^A (control-A) – Solo in questa sessione di terminale .bash_profile == autoexec.bat 11 StarShell Utilizzo di UNIX Console Non necessita di interfacce grafiche LAN W A N Workstations di Rete Supporta interfacce grafiche distribuite in rete X Window System UNIX Box Non necessita di amministrazione continua Non necessita di frequenti reboot Terminali Seriali Particolarmente adatto alla connettività di rete Utilizzi principali: •Application Server •Database Server •Communication Server 12 StarShell Parametri di Connessione stty Param. Tasti Effetto intr ^C terminazione semplice stop^\ terminazione con core dump susp ^Z sospensione Situazione Classica collegamento seriale asincrono Unix Box UNIX Parametri di connessione: velocità parità bit di start e stop Box controllo di flusso Disciplina di linea: carattere di cancellazione carattere di abort carattere di kill .... Terminale Obsoleti per connessione di rete Ancora validi 13 StarShell Comandi, argomenti e opzioni tar -cvf arch1.tar *.c *.h makefile comando opzioni argomenti argomento dell'opzione f – Il comando è il primo elemento – Le opzioni sono precedute dal trattino • -a -b -c = -abc = -bc -a – Convenzione (non sempre osservata) • -bar = -b -a -r sono tre opzioni • --bar è una singola opzione – Ogni comando ha opzioni diverse 14 StarShell La Shell Interprete di comandi per sessioni CLI • interattivo - esecuzione immediata • linguaggio di programmazione di “script” (procedure shell) - esecuzione immediata o differita Shell Anno Bourne 1971 C-Shell 1981 Korn 1986 Bash 1994 Comando Commenti sh primitiva, supportata su ogni Unix csh da Berkeley ksh AT&T, copyright bash da Linux “migliore” per la programmazione Programmazione sh csh <> sh ksh >= sh bash >=sh bash <> ksh “migliore” per l’interattività alias storia comandi modifica comandi precedenti completamento comandi e file ‘Bourne again shell’ (battuta di spirito) 15 StarShell Variabili d'ambiente – Personalizzano il comportamento di comandi ed utilities printenv • lista le variabili d'ambiente correnti export VAR=valore • crea una variabile di nome VAR e dato valore e la esporta all'ambiente • per convenzione le variabili d'ambiente hanno nome maiuscolo • tutti i comandi successivi la conoscono unset VAR • cancellare una variabile – Non tutte le variabili d'ambiente potenzialmente utili sono già settate 16 StarShell Procedure shell automatiche – Nella directory di login dell'utente • Tipicamente files nascosti: iniziano con . (punto) .bash_profile • Comandi eseguiti al login con la Bourne shell .bashrc • Comandi eseguiti al lancio della Bourne shell (p.es. nuova finestra di terminale) .ssh • Directory con i settaggi dell'utility ssh ls -a • Listare i file nascosti source ./.bash_profile • Rieseguire la procedura .bash_profile dopo un cambiamento 17 StarShell Comandi utente - base • Informazioni – id, who, hostname, pwd, date, df, password • Gestione directory – cd, ls, mkdir, rmdir • Gestione files – cp, ln, rm, mv, chmod, cat • Gestione processi – ps, kill • Manualistica – man, whatis, apropos 18 StarShell Architettura di Linux 19 StarShell Componenti Linux • Kernel • Parte centrale del sistema • Squadra di programmazione, rif. Linus Thorvalds • Applicativi GNU • Molte centinaia di progetti Open Source • Idee originali di Richard Stallman • X Window System • Sistema grafico – non indispensabile • X Consortium, quindi Xorg 20 StarShell Concetti Fondamentali • MultiUtenza – Piu’ utenti utilizzano contemporaneamente le stesse risorse di sistema – Filosofia di Cooperazione e Amichevolezza • MultiTasking – La/le CPU sono impegnate in parallelo in più lavori distinti – Percezione umana di simultaneità dei Task • MultiProcessing – Più task appartenenti a più utenti o al sistema – Time Sharing (condivisione della risorsa Tempo) 21 StarShell Kernel Monolitico e Modulare Monolitico Modulare Processi del Kernel Processi del Kernel Supporto a system calls Supporto a system calls Moduli Device driver Device driver Device driver Device drivers Device driver Device driver Device driver 22 StarShell Moduli del Kernel lsmod – lista dei moduli caricati modprobe -a – lista di tutti i moduli disponibili cat /etc/modprobe.conf – file di configurazione di alcuni moduli modprobe modulo – caricamento manuale modulo (privilegiato) rmmod modulo – eliminazione manuale modulo (privilegiato) uname -a – identificazione della versione del kernel 23 StarShell Componenti Essenziali – Due componenti del Sistema • Processi Esclusive ed esaustive Sorta di fondamentalismo religioso – Componente Dinamica – Esecuzione di un programma (istanza) – Possiede stato, risorse, permessi Analogia con la filosofia della Programmazione Orientata agli Oggetti • Files – Componente Statica – Rappresentazione, storaggio e transito dei dati – Ciò che viene utilizzato tramite le System Calls dei files Definizione Funzionale Vi sono Files e File Systems anche molto esotici 24 StarShell Proprietà di un Processo – – – – – – – PID - Process Identifier univoco PPID - Identificativo del processo padre Utente possessore Terminale di controllo Permessi effettivi Vettore di lancio Locazioni occupate in memoria • Regioni, segmenti, librerie dinamiche, memoria condivisa, ... – Stato di esecuzione – Risorse • Files, buffers, segnali, eventi, code, ... 25 StarShell Gestione della Memoria RAM sys Kernel usr Memoria Utente Processi del kernel Tabelle del kernel Moduli Processi utente Buffer di I/O Caches interfaccia delle i system call n t – Gestione diversa e separata e – Le due regioni r di memoria non sono necessariamente contigue 26 StarShell Segmenti di un Processo Indirizzi Virtuali text Indirizzi Reali Memory Mapping Unit Segmenti data Memoria Reale (RAM) stack u_area StarShell Memoria Virtuale 27 Tabella dei Processi text data Regioni del Processo slot Tabella dei Processi (Kernel) PID PPID permessi u_area stack u_area 28 StarShell Il Comando 'ps' ps • Processi locali dell'utente ps w • Formato 'largo' ps l • Formato 'lungo' – informazioni architettoniche ps a • Tutti i processi – anche di altri utenti ps ax • Anche i processi senza terminale di controllo ps wax oppure ps lax • Rapporto completo 29 StarShell Opzioni di 'ps' 30 StarShell Esempio di ps lax 31 StarShell Processi in Background $ sleep 2000 & [1] 7145 $ – manda il processo in background – ritorna subito il pronto – il processo continua a leggere e scrivere su terminale, se ne ha bisogno • --> redirezioni – il processo ha • Job ID (JID) – locale al terminale • Process ID (PID) – globale di sistema 32 StarShell Stato dei Processi $ sleep 10000 & $ sleep 20000 & $ ps Lancio in background Solo processi dell’utente $ ps w $ ps l Rapporto “wide” $ ps wx $ ps wax $ ps lax Tutti i processi dipendenti da terminale Rapporto “long” Anche i processi indipendenti da terminale $ ps -l Rapporto stile System V precedenti: stile Berkeley 33 StarShell Job Control comando comando & fg %n Foreground Background bg %n susp ^z intr Stopped kill %n ^c kill %n Terminated Non con /bin/sh jobs Lista job attivi stty tostop Ferma processi che producono output 34 StarShell Generare Core Dumps ulimit -a ulimit -c unlimited Per esaminare i 'core dump' occorre un debugger appropriato, p.es. gdb 35 StarShell Terminale di Controllo $ sleep 1234 & $ ps wax | grep 1234 notare PPID e terminale di controllo TTY logout login di nuovo $ ps wax | grep 1234 Terminale dell’utente Shell dell’utente Non trovato: il processo è morto al logout $ nohup sleep 1234 & $ ps wax | grep 1234 notare PPID e terminale di controllo TTY logout login di nuovo $ ps wax | grep 1234 notare PPID e terminale di controllo TTY Processo ‘init’ Disabilita ricezione del segnale di HANGUP Processo sopravvissuto al logout: demone Non c’è 36 StarShell Generazione di Processi Comando: $ ls •La funzione fork() ritorna: • al figlio il valore 0 • al padre il PID del figlio sh 3510 Valore di ritorno: fork() 3517 sh 3510 La funzione wait() viene • chiamata dai processi in foreground • NON chiamata dai processi in background 0 sh' 3517 exec() La funzione wait() sospende il processo chiamante finchè il processo indicato non termina “Il padre attende la morte del figlio” wait(3517) ..... if ((p=fork())==0) execve(....); else wait(p); ..... ls 3517 37 StarShell Schedulazione dei Processi READY + risveglio schedulazione caricamento run queue prelazione context switch CPU return RUN usr SLEEP + - sys call RUN sys - evento esterno ZOMBIE Priorità dinamica 38 StarShell Temporizzazione comandi time comando Total (wall) time CPU time in User mode CPU time in System mode 39 StarShell Priorità dei Processi priorità alta Indice di Priorità 0 128 Non tutto il range è usato in ogni variante di Unix Componenti: dinamica statica priorità bassa dipende dalla storia del processo offset assegnato dall’utente nice Colonne PRI e NI $ nice -10 sleep 2222 & # nice --10 sleep 3333 & $ ps l -20 0 20 Solo superuser Anche: renice Valore algebrico Indicatore di opzione 40 StarShell Demand Paging sys usr RAM pagine (4 kb) page stealing daemon (Least Recently Used) Demand paging Swap Area File System DISCO 41 StarShell Uso dei Buffer sys usr proc buffers operazioni logiche •Aggiornamento quando: • i buffer sono pieni • comando sync • a intervalli regolari (~2 min) RAM write behind read operazioni ahead fisiche File Per spegnere il sistema: •comando shutdown Disco 42 StarShell vmstat intervallo di campionamento (secondi) numero di campionamenti Processi running blocked swap Memoria (pagine) Attività di Swap swap-in free buffer cache swap-out Attività di I/O blocchi in Attività di sistema interrupt blocchi out context switches Attività di CPU user mode sys mode waiting idle 43 StarShell top 44 StarShell Il Filesystem 45 StarShell Disco Fisso Piatti Testine Settori Cilindri Schema Logico Cilindro 0 boot Linux root Partizioni Windows Area di Swap •vuota •area di swap •filesystem 46 StarShell File Systems riconosciuti • • • • • • • • • • • Minix – antico FS Linux Ext2 – FS standard Ext3 – FS standard con journalling (Red Hat) Reiser – nuovo FS con journalling (Slackware) GFS – Global FS (Red Hat – per clusters) ISO9660 – CD e DVD FAT – vecchio Windows NTFS – nuovo Windows UFS – Unix FS (Solaris) XFS – Silicon Graphics JFS - IBM 47 StarShell File System Disco Partizione Una partizione può contenere: • niente • un'area di swap • un file system File System I-Nodes SuperBlocco Blocchi Dati (Unità di Allocazione) Organizzazione logica a basso livello dello storaggio dati 48 StarShell I-Node I-Number Dati Informazioni generali: possessore, permessi, dimensioni, link, date, ecc. Dati Dati Dati puntatori Dati Puntatori diretti Dati Primo punt. indiretto puntatori puntatori Dati Secondo punt. indiretto Terzo punt.indiretto Dati puntatori puntatori puntatori Dati 49 StarShell Directory I-Node Nome File 8197 pippo 234 rapporto5 8997 sub1/ 4712 file7.txt 3490 archivio.tar.gz Directory Entry I-Node Blocchi dati commedia.txt 8678 Nel mezzo del cammin di ... 50 StarShell Comandi – Devono avere il permesso di esecuzione per chi li invoca – Può essere: • un eseguibile binario • una procedura interpretata – Le procedure iniziano con, p.es.: • #! /usr/bin/perl hash bang eseguibile binario che interpreta la procedura corrente – Altrimenti vengono passate all'eseguibile indicato nella variabile d'ambiente SHELL 51 StarShell Percorsi – Percorso assoluto inizia con / (slash) • partendo dalla directory radice • es: /usr/share/man/man1/zsh.1.gz dirname basename – Percorso relativo non inizia con / (slash) • partendo dalla directory corrente • es: bin/try1.pl dirname – – – – basename basename: nome del file dopo ultimo / dirname: percorso prima dell'ultimo / pathname = [dirname/]basename pathname qualificato = dirname/basename 52 StarShell PATH – I comandi espressi da un pathname qualificato vengono eseguiti direttamente – I comandi espressi dal solo basename vengono sempre ricercati nelle directories espresse dalle variabili d'ambiente PATH es. PATH=/bin:/usr/bin:/usr/local/bin;export PATH – I comandi nella directory corrente non sono automaticamente trovati • Per sicurezza la directory corrente non è mai nel PATH – Esecuzione di prova, nella directory corrente ./prova – Ricerca di un eseguibile nel PATH which eseguibile (trovato ma non eseguito) 53 StarShell Gestione directories mkdir newdir rmdir dir – Deve essere vuota rm -r dir • Rimozione ricorsiva della directory e di tutto il suo contenuto (ATTENZIONE!) cd dir cd : torna alla directory di login – valore della variabile d'ambiente HOME cd - : torna alla directory precedente l'ultimo cd ls dir pwd 54 StarShell cp (copy) cp sorgente destinazione cp sorg1 sorg2 sorg3 ... destinazione • Copia singola – sorgente deve essere un file – destinazione può essere • file nella stessa directory (nuovo nome) • file in altra directory (stesso o nuovo nome) • directory (stesso nome) • Copia multipla – destinazione deve essere directory (stesso nome) File destinazione esiste: ricoperto File destinazione non esiste: creato 55 StarShell Il comando 'cp' commedia.txt Nuova.txt 8678 9784 Nel mezzo del cammin di ... Nel mezzo del cammin di ... cp commedia.txt nuova.txt 56 StarShell ln (link) ln vecchionome nuovonome – Crea un nuovo nome file per lo stesso file riferito dal nome vecchio – Il nome vecchio deve esistere – Il nome nuovo • non deve esistere • può essere directory: stesso nome del vecchio – Il nuovo nome deve essere nello stesso file system del vecchio nome – Dopo il link non si sa più qual'era il file originale (sitauazione simmetrica) 57 StarShell Il comando 'ln' commedia.txt Nuova.txt 8678 riferimenti= riferimenti+1 Nel mezzo del cammin di ... ln commedia.txt nuova.txt 58 StarShell rm (remove) rm file ... – System call: unlink() – Rimuove il nome che si riferisce al file – Decrementa il numero di riferimenti • Gli altri nomi e il file rimangono – Se il numero riferimenti nuovo è zero il file è rimosso: • • • • Blocchi del file ritornano alla lista dei blocchi liberi Il contenuto dei blocchi non viene toccato I puntatori sono azzerati L'inode è riallocabile – File non più recuperabile • (procedimenti forensi, successo incompleto) 59 StarShell Il comando 'rm' commedia.txt Nuova.txt 8678 riferimenti= riferimenti-1 se >0 il file continua ad esistere Nel mezzo del cammin di ... Se riferimenti=0: (1) lo i-node viene deallocato (2) i blocchi dati vengono ritornati alla liasta dei blocchi liberi rm commedia.txt 60 StarShell mv (move) mv sorgente destinazione mv sorg1 sorg2 sorg3 ... destinazione – Stessa sintassi di cp – Operazione combinata di ln di un nome nuovo e rm del nome vecchio – La destinazione può avere lo stesso nome se è in una directory differente – Non si può avere la destinazione in un file system diverso dalla sorgente • Ma in tal caso molte distribuzioni eseguono un cp seguito da un rm 61 StarShell Link simbolico ln -s vecchionome nuovonome – Stessa sintassi di ln – Crea un nuovo file destinazione • di tipo “link” • i blocchi dati contengono il vecchio nome – Usare il nuovo file causa una redirezione interna al vecchio file – Si possono creare in altri file systems – Situazione di “broken link” se • il file originale è stato rimosso • il file system originale è irraggiungibile – Situazione asimmetrica 62 StarShell Caratteri Jolly 63 StarShell Caratteri Jolly • ? sostituisce un singolo carattere nella posizione corrente • * sostituisce un numero qualsiasi di caratteri, anche zero, nella posizione corrente • [ ] racchiudono un numero di carartteri da cui ne viene selezionato uno solo – [12af] – un insieme di caratteri – [a-m] – un range di caratteri, inclusi i capi • [^ ] seleziona un carattere non presente tra le parentesi quadre • Non confondere i Caratteri Jolly con le Espressioni Regolari 64 StarShell Comandi e caratteri jolly cp *.txt sub1 mv chapter??.doc backup rm *.o mv *.txt *.doc Attenzione!!: $ rm * .o $ .o: not found Non esiste il comando 'rename' for i in *.txt do j=`basename $i .txt` mv $i $j.doc done Procedura shell per ottenere lo stesso effetto I caratteri jolly vengono espansi dalla shell PRIMA dell'esecuzione del comando 65 StarShell Redirezioni File Descriptor tastiera 0 stdin comando stdout 1 schermo 2 schermo file1 file2 stderr file3 Formalmente Semplificazioni comando 0< file1 comando < file1 comando 1> file2 comando > file2 comando 1> file2 2> file3 comando > file2 2> file3 comando > file2 2&>1 Merge 66 StarShell cat cat – Scrive lo standard input su standard ouput – Ammette redirezioni cat file1 file2 ... – Concatena (catenates) i file sullo standard output cat mail??.elm > archivio • Compie un 'join' di tutti i file nell'archivio cat mail99.elm >> archivio • Scrive il file in append cat > log.txt • Scrive al file quello che si digita da tastiera • Terminare con ^D (fine file di input) 67 StarShell echo echo ”Ciao a tutta l'Europa” – Invia i suoi argomenti a standard output, seguiti da un newline • Se gli argomenti contengono metacaratteri, nasconderli tra apici echo -n ”Scelta: ” – Non invia il newline echo ”Buongiorno” >> saluti • In append al file echo ”errore” 1>&2 • Redirezione su standard error 68 StarShell Metacaratteri – Caratteri del codice ASCII che vengono considerati elemanti sintattici da un interprete di comandi o da un'utility • Caratteri jolly, espressioni regolari, parentesi, ecc. – – – – La shell stessa ne ha molti Interpreti e comandi diversi hanno metacaratteri diversi Non sono metacaratteri A-Za-z0-9 Non sono metacaratteri shell . , - _ ( ) ma . come primo carattere di un nome file rende il file nascosto - come primo carattere indica un'opzione ( come primo carattere della linea di comando lancia una sottoshell 69 StarShell Nascondere i metacaratteri • Regole di quoting ” ” nascondono tutti i metacaratteri tranne $ ' ' nascondono tutti i metacaratteri \c nasconde il metacarattere c che segue • Esempi: \” \' \\ \$ `comando` (apici singoli rovesci) esegue il comando e ritorna nel contesto il suo standard output d=`date` assegna alla variabile d l'output del comando date frutta=pesche echo ”Il prezzo delle $frutta e' \$2” 70 StarShell Pipes comando1 stdin stdout pipe stdin comando2 stderr stdout stderr comando1 | comando2 • Lo standard ouput di comando1 diviene lo stanadard input di comando2 • Il Kernel sincronizza comando1 e comando2 • Sono possibili più pipes comando1 | comando2 | comando3 | comando4 71 StarShell Esempi di pipes who | wc -l • Quanti sono gli utenti collegati al sistema who -l | -w | -c [file] conta le linee, le parole, i caratteri in un file o nello standard input cat /etc/passwd | sort • Elenca gli account di sistema in ordine alfabetico 72 StarShell I Files 73 StarShell File Struttura di controllo (file table) #include <stdio.h> ... FILE *fp; ... fp = fopen( “esempio.txt”, “w”); Puntatore al byte corrente Sequenza di byte (0 a infiniti) 74 StarShell Tipi di File blocco di controllo numero magico bytes del file • UNIX cerca /usr/share/file/magic – il numero magico – primi 2 o 4 byte • tipo di file – il blocco di controllo – n bytes a seguire • dipende dal numero magico • dettagli sul tipo di file • Comando file 75 StarShell Utilities per i file • Compilare un file – cc ciao.c -o ciao • Tipo di file: file ciao • Visualizzare un file: od -c ciao numero magico dei file eseguibili 76 StarShell Utilities per i file • Stringhe in un file: strings ciao • Tabella dei simboli: nm ciao • Togliere la tabella dei simboli: strip ciao 77 StarShell Utilities per i file • Lista librerie dinamiche: ldd ciao 78 StarShell Informazioni sul file # ls -l ciao -rwxr-x--x 1 root adm 2940 Apr utente possessore permessi standard tipo di file 2 09:18 ciao numero di riferimenti (link) nome file gruppo possessore data ultimo aggiornamento dimensione in bytes 79 StarShell Nome e tipo file – Nome file • Caratteri A-Za-z0-9.-_ (altri: metacaratteri shell) • Max 252 caratteri – Limitare a 32 per portabilità su CD e in rete • Non inizia con – (trattino: indicativo opzione) • Se inizia con . (punto) è nascosto – Tipo file (tutto ciò che non è un processo è un file) - regolare d directory Speciali: b device a blocchi c device a caratteri l link simbolico s socket 80 StarShell Date di un file – MAC • Modifica • Accesso • Modifica dell'inode (inizialmente: Creazione) – Listare • ls -l : modifica • ls -lu : accesso • ls -lc : creazione – Cambiare • touch file : data corrente a modifica e accesso – se il file non c'è viene creato, oppure touch -c • touch -t [[CC]YY]MMDDhhmm[.ss] file • touch -a : solo accesso • touch -m : solo modifica 81 StarShell Files di Device – – – – – – – Nella directory /dev e sottodirectories tty* - terminali di console ptys/* - pseudo terminali, emulatori grafici ttyS* - porte seriali usbdev* - dispositivi USB parport* - porte parallele sd* - dischi SCSI o SATA – I files esistono solo se è caricato il device driver corrispondente – ambiente udev – L'inserimento di un device supportato produce • il caricamento del driver • la comparsa in /dev di un nome di device 82 StarShell Permessi sui File 83 StarShell Permessi -rwxr-x--x 1 root adm 2940 Apr 2 09:18 ciao r read w write x execute - permesso assente rwxr-x--x altri (others - o) gruppo possessore (group owner - g) utente possessore (user owner - u) 84 StarShell Cambio permessi – Il possessore può cambiare i permessi dei propri file u + r g - w x o chmod zero o più – Permessi numerici uno o più file chmod ug+w file uno rwxr-x--x 111101001 7 5 1 chmod 751 file 85 StarShell Permessi speciali – Come può un utente cambiarsi la password, che si trova nel file /etc/shadow? ls -l /etc/shadow -rw------- 1 root root 1997 Sep ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 1997 Sep 12 2008 /etc/shadow 12 2008 /usr/bin/passwd • Permessi speciali sstrwxrwxrwx Set User ID Set Group ID SUID SGID POSIX bit (sticky bit) 86 StarShell Permessi speciali • Si indicano al posto di uno dei permessi di esecuzione • Richiedono che tutti i permessi di esecuzione siano settati • Set User ID – Da all'esecutore i permessi effettivi dell'utente possessore dell'eseguibile • Set Group ID – Da all'esecutore i permessi effettivi del gruppo possessore dell'eseguibile • Impostare i permessi speciali es: chmod 4755 file rwsr-xr-x s--rwxr-xr-x 100111101101 4 7 5 5 87 StarShell Cambio possessore e gruppo – Cambio possessore chown nuovo_possessore file – Cambio gruppo di appartenenza chgrp nuovo_gruppo file – Solo root può usare questi comandi 88 StarShell Permessi di default • Umask : maschera dei permessi di default • Permessi di nuovo – file : 666 – umask – directory : 777 – umask • Cambiare: umask maschera – – – – umask umask umask umask 022 : default 002: fiducia al gruppo 007 : nessuna fiducia agli altri 077 : massima diffidenza 89 StarShell Permessi e comandi • File r leggere il file per visualizzarlo, copiarlo o muoverlo w modificare il contenuto del file, ricoprire una destinazione di cp o mv x eseguire un file binario o una procedura interpretata • Directory r listare il contenuto w creare o distruggere file nella directory x eseguire cd nella directory 90 StarShell Permessi e comandi • cp sorgente destinazione file esiste: w (file) file non esiste: w (directory) r (file) • ln sorgente destinazione w (directory) r (file) • rm file w (directory) • mv sorgente destinazione r (file) w (directory) file esiste: w (file) file non esiste: w (directory) 91 StarShell Utenti e Gruppi 92 StarShell Utenti e gruppi utenti normali pseudo-utenti superuser 93 StarShell Utenti • Utenti = Account – – – – Noti al sistema, possono possedere risorse Identificativo primario: UID – User ID – numero intero Identificativo aggiunto univoco: username – stringa Tipi di utenti per permessi operativi • • • • Superuser (UID=0) – da CLI può fare tutto Aiuti (UID=1-499) – permessi amministrativi parziali Normali (UID=500...) Nobody (UID alto) – permessi minimi – Tipi di utenti per accesso • Normali – possono compiere login • Pseudo-utenti – non possono compiere login 94 StarShell Gruppi • Un gruppo ha – nome – GID – Group ID – intero – Lista membri • Modalità d'utilizzo – Tutti gli utenti appartengono ad un gruppo primario – Gli utenti possono appartenere ad altri gruppi secondari – Gli utenti hanno i permessi di gruppo di tutti i gruppi a cui appartengono – Solo root può configurare l'appartenenza a gruppi – Alcune distribuzioni hanno il gruppo 0 (wheel) con permessi speciali – Alcuni utenti sono membri esclusivi del proprio gruppo 95 StarShell Strategie per Utenti e Gruppi • Tirannica – Solo root può amministrare; pochissimi utenti (Red Hat) • Aristocratica – Pochi utenti possono diventare temporaneamente amministratori tramite sudo; root non può accedere direttamente (Ubuntu) • Oligarchica – Alcuni pseudo-utenti definiscono “ruoli” amministrativi; fine determinazione dei poteri di ciascun ruolo. Gli utenti assumono un ruolo alla bisogna (Solaris) – Role Based Access Control • Democratica – non esiste 96 StarShell Importanza degli account • Server di rete • Infrastruttura: DHCP, DNS, NTP, Gateway, Tunnel, ... • Servizio: Web, Posta, FTP, SSH, File Server, Stampa, ... • Sicurezza: Firewall, IDS, Proxy, HoneyPot, ... – – – – Solo root è importante Pochi altri utenti: pseudo-utenti dei servizi Macchina da autonoma a completamente automatica Files di registrazione utenti sono locali • Server di cooperazione • Autonomo: IRC, Messaggistica, Calendari, Social, ... • Condiviso: con Windows, UNIX, NetWare, ... – Root è locale – Molti utenti presenti e amministrati centralmente da LDAP/Kerberos o Active Directory – Single Sign On 97 StarShell Amministrazione locale • Files /etc/passwd utenti, parte pubblica /etc/shadow utenti, parte privata /etc/group gruppi – Files in formato dbm • • • • ogni linea è un record campi di lunghezza variabile separatore di campo: due punti primo campo univoco come eventuale indice – Uso di comandi per la modifica • Pongono lock e forzano l'accesso singolo • Mantengono backup • Eventualmente rigenerano l'indice 98 StarShell /etc/passwd – nome di login – password • non più utilizzata – User ID – Group ID del gruppo primario – commento • Campo “Gecos” - può avere una struttura – home directory – shell • • • • eseguito in seguito a login di successo quando termina: logout prevista da /etc/shells può essere /sbin/nologin 99 StarShell /etc/shadow – – – – – – – – nome di login password crittografata data ultimo cambiamento password durata minima - giorni durata massima – giorni tempo di avvertimento - giorni tempo di inattività – giorni data scadenza finale – Le date sono in giorni progressivi dalla data di riferimento: 01/01/1970 100 StarShell /etc/group – – – – nome del gruppo password (obsoleta) Group ID lista utenti – Anticamente un utente apparteneva ad un gruppo solo per volta. Per cambiare gruppo occorreva dare un comando che chiedeva una password – secondo campo di group – Ora un utente ha tutti i permessi di tutti i gruppi a cui appartiene 101 StarShell Manualistica 102 StarShell Manuale standard di Unix – /usr/share/man • Sezioni standard 1 2 3 4 5 6 7 8 – comandi utente – system calls – altre librerie – files di configurazione – altri files di configurazione - giochi – device drivers – comandi di amministrazione e di rete • Possono esistere altre sezioni e sottosezioni 103 StarShell Comandi di manualistica man passwd • Pagina del comando passwd (sezione 1) man 5 passwd • Pagina del file /etc/passwd (sezione 5) whatis passwd • In quali sezioni si trovano pagine col titolo passwd apropos password • Quali pagine esistono che contengano la stringa password nel titolo o nella descrizione breve • Database whatis – Ricreare con makewhatis • Scandisce le directory di manualistica standard o quelle della variabile d'ambiente MANPATH se esiste 104 StarShell Manualistica – Le pagine di manuale sono compresse – Scritte in linguaggio troff (GNU groff) • Linguaggio descrizione pagine (antenato di HTML) – Il comando man • decomprime la pagina • compie la resa a video, interpretando il troff • compiono la paginazione a video con less o col paginatore indicato dalla variabile d'ambiente PAGER troff pagina sorgente tbl testo formattato postscript troff driver di resa paginatore macro man terminfo PAGER pic eqn video 105 StarShell terminfo • Database di proprietà dei terminali – Riferimento a terminfo entry tramite variabile d'ambiente TERM – Proprietà (capabilities) • numeriche: cols#80 • booleane: xon • stringhe di controllo terminale (sequenze di escape): clear=\E[H\E[J$<50> capability – Query della entry escape sequence infocmp vt100 – Aggiunta di nuova entry al database tic file_descrittore terminfo compiler 106 StarShell Il Sistema Grafico X 107 StarShell Sviluppo di X Window (W) The ‘X’ Window System Massachussetts Institute of Technology X10 X11 X11R2 X11R6 XFree Xorg 108 StarShell X Window System DISPLAY=nodorete:display.schermo schermo 1 Client •Display Server: nome X • >= 1 schermi • 1 tastiera • 1 puntatore schermo 0 1 2 display 0 nodo di rete DISPLAY=lara:0.0 Semplificato lara:0 Applicativo distribuito Client-Server (l'umano interagisce col Server, non col Client) Localmente :0.0 oppure :0 109 StarShell Architettura di X Window ISO OSI Applicazione 7 Presentazione Display Server Client 6 Xlib Sessione X Protocol 5 Protocolli 4 di Rete ChaosNet DECNet TCP/IP Porta 6000 3 Interfacce 2 Fisiche IEEE 1 110 StarShell File di configurazione grafica ServerLayout Screen Device Videocard InputDevice Keyboard InputDevice Mouse • /etc/X11/xorg.conf – Sezioni • identificativo • attributi 111 StarShell /etc/X11/xorg.conf Generazione manuale: X -configure 112 StarShell Test del server /usr/bin/X Solo il server /usr/bin/xinit Il server e il client xterm 113 StarShell Lancio del Server X – A Run Level 5 parte automaticamente il Server X e il Display Manager, che gestisce il login all'ambiente grafico – A Run Levels 2 o 3 lanciare startx • Front end a xinit – Files di configurazione di lancio • .xinitrc nella directory di login dell'utente • /etc/X11/xinit/xinitrc – Mappa di modifica tasti e mouse • $HOME/.Xmodmap oppure /etc/X11/Xmodmap – Mappa di modifica tastiera • $HOME/.Xkbmap oppure /etc/X11/Xkbmap – Files di risorse • $HOME/.Xresources oppure /etc/X11/Xresources 114 StarShell Toolkit Applicativi Client Toolkit: Widget Set Toolkit: Intrinsics Xlib X Protocol 115 StarShell Toolkits – Athena - MIT – Open Look - Sun – Motif – OSF – gtk - Gnome – Qt – KDE – Troll Tech – Intrinsics: utilities comuni • connessione al server, gestione errori – Widget Set: elementi grafici • scrollbar, bottoni, menù, pannelli, ... • Determinano il Look and Feel del toolkit – Insieme di opzioni supportate da tutti i toolkit 116 StarShell Geometria delle Finestre +0,+0 -0,+0 y Finestra Applicativo x Finestra Radice height width depth (bytes per pixel) +0,-0 -0,-0 Angoli di Riferimento xclock -geom 300x400-10+120 & 117 StarShell Rappresentazione del testo schermo glyph codice dei simboli font file x keysym 0x0078 keycode 15 keymap tastiera 118 StarShell Mappa di tastiera • Se il server X usa l'estensione XKEYBOARD (default) • E' settata nel file di configurazione /etc/X11/xorg.conf • E' gestita da strutture nella directory /usr/share/X11/xkb • Se il server non usa l'estensione XKEYBOARD – Lanciato con l'opzione -kb – Carica la mappa di tastiera $HOME/.Xkbmap oppure /etc/X11/Xkbmap (default US) – Caricare un'altra tastiera col comando xmodmap file xmodmap -pk > file vi file xmodmap file – Modificare alcuni tasti col comando xmodmap – Il comando xmodmap funziona anche se l'estensione XKEYBOARD è attiva 119 StarShell xmodmap -pk – Mostra la mappa di tastiera corrente 120 StarShell Metodo di input – Ad ogni keycode della keymap sono associati più simboli – Singolo tasto : carattere primario associato – Altri tasti con modificatori • Più tasti simultaneamente • Più tasti in sequenza • Esempio: mappa italiana MacIntosh – Simultanei • • • • Normale Shift + tasto : secondo carattere Modificatore1 (alt) + tasto : terzo carattere Modificatore2 (shift+alt) + tasto : quarto carattere x X † ‡ – Sequenziali • alt+u,u -> ü alt+n,n -> ñ • alt+9,aeiou -> accentata grave • alt+8,aeiou -> accentata acuta 121 StarShell xmodmap -pm – Mappa dei modificatori 122 StarShell xlsfonts – Lista di tutti i font disponibili 123 StarShell xfontsel – Per selezionare interattivamente un font • Selezionare le varie proprietà del font • Viene indicato quanti font corrispondo alla selezione effettuata finora • Viene mostrato un esempio grafico del font • Il bottone 'select' copia la scelta effettuata nel clipboard 124 StarShell xev – Per testare i keycode e i keysym 125 StarShell Window Manager – Operazioni sulle finestre: • • • • • Ridimensionamento Spostamento Iconizzazione Stacking Attivazione (fuoco di input) – Comunicazione tra finestre (applicativi) • Cut & Paste • Drag & Drop Inter Client Communication Convention Manual (ICCCM) – Non ha una finestra sua (ha la finestra radice) – Fornisce • Decorazioni alle finestre (bordi, bottoni, barra) • Look & Feel dell'interazione utente 126 StarShell Decorazioni Decorazioni del Window Manager (BlueCurve) Barra del Titolo (movimento) Bottone Menù Bottone Iconizzazione Bottone Massima Espansione Bottone Chiusura Bordo di Espansione Angolo di Espansione 127 StarShell Window Managers • Basati su un toolkit – twm (Tom's Window Manager): Athena – mwm (Motif Window Manager) : Motif – enlightenment: gtk • Indipendenti da toolkit – BlueCurve : Red Hat 128 StarShell Desktop Environment • Sistema grafico integrato – Window Manager – Session Manager • Mantiene stato tra sessioni di lavoro diverse – Librerie di icone – Utilities dall'aspetto e comportamento integrato – Utilities di gestione e personalizzazione – – – – Gnome – GNU KDE – Troll Tech - Norvegia CDE – Common Desktop Environment – UNIX JDS – Java Desktop System - Sun 129 StarShell JDS 130 StarShell Common Desktop Environment 131 StarShell twm 132 StarShell gnome 133 StarShell KDE 134 StarShell XDMCP Clients (diversi sistemi operativi) Server X Display Manager Communication Protocol – Client-Server tradizionale (non come X) – Collegamento da più stazioni di lavoro – Singolo stile di login • ottenere Cookie di Xauth – Equivalente di Terminal Server 135 StarShell XDMCP – Attivazione Server System -> Administration -> Login Screen -> Remote Eventualmente configurare XDMCP (tuning – non necessario) 136 StarShell XDMCP - Client X -query 192.168.3.198 – collegamento diretto al server specificato X -broadcast – collegamento al primo server che risponde X -indirect 192.168.3.198 – richiesta di intermediazione – il server specificato compila una lista di tutti i server disponibili e la presenta in una finestra detta “Chooser” – selezionando un server della lista viene aperto un collegamento diretto 137 StarShell xlogin Finestra di login Opzioni di sessione Opzioni di lingua 138 StarShell XDMCP Finestra di Chooser 139 StarShell VNC Architettura VNC Client VNC Server Rete VNC Client updates del framebuffer VNC Client comandi mouse e tastiera – Virtual Netwwork Computing • Xvnc è il server di X Window System (vncserver) • Vari client per vari sistemi operativi (vncviewer) 140 StarShell vncserver - CLI vncserver :1 -name remote -geometry 800x600 Display number : corrisponde a porta 5901 Directory di configurazione : .vnc passwd : file con la password di accesso • settare con vncpasswd xstartup : comandi di inizializzazione 141 StarShell vncserver - GUI System -> Preferences -> Remote Desktop 142 StarShell Client VNC vncviewer (Linux) Chicken of the VNC (MacIntosh) 143 StarShell Utilities Avanzate 144 StarShell grep grep [opzioni] espress_regolare [file] – Seleziona le linee del file che contengono l'espressione regolare indicata (slice orizzontale) – Se il file non è indicato, tratta lo standard input • egrep – più espressioni, meno velocità • fgrep – meno espressioni, più velocità • grep – medio espressioni e velocità Opzioni principali -v – inverte ricerca: linee non contenenti espress. -c – conta solo le linee trovate -f file – legge le espressioni dal file -n – mostra i numeri di linea -i – ignora se maiuscole o minuscole 145 StarShell cut – Seleziona dal file sezioni indicate (slice verticale) cut -c lista [file] – lista di caratteri cut -dc -f lista [file] – lista di campi, delimitati dal carattere c (default: tab) – lista • numeri separati da virgole • range separato da – (trattino) – Se il file non è indicato legge da standard input 146 StarShell bc – Calcolatrice da linea di comando – Versione intera – Uscire con ^D (control-D) 147 StarShell bc con Redirezione di input 148 StarShell tr – Copia l'input all'output con sostituzioni o cancellazioni di singoli caratteri • Esempi cat file1 | tr ”a” ”b” • cambia le a in b tr ”[:lower:]” ”[:upper:]” < file1 • cambia tutte le minuscole in maiuscole tr -cd ”[:print:]” < file 1 • rimuove tutti i caratteri non stampabili dal file -c complementa l'azione ai caratteri non specificati -d rimuovi (delete) • Per le classi di caratteri vedere Espressioni Regolari 149 StarShell split split -b100k achivio.tar • Spezza il file archivio.tar in files da 100kB ciascuno e chiama i pezzi xaa, xab, xac, ... split -b99m archivio.tar archivio. • Spezza il file archivio.tar in files da 99MB ciascuno e chiama i pezzi archivio.aa, archivio.ab, ... split -l50 testo.txt • Spezza il file testo.txt ogni 50 linee split -l30 • Spezza lo standard input ogni 30 linee 150 StarShell Editors di Linux 151 StarShell Editors di Linux vi sed ed emacs ex vim ed: editor sed: stream editor ex: extended editor vi: visual editor vim: vi improved nano 152 StarShell nano 153 StarShell vi • “visual” – Editor destinato ai programmatori – Non è un word processor • linea e carattere corrente, non paragrafo – Spesso implementato da Vim – Vi Improved • vi [opzioni] [file] – Il nome file può essere deciso in seguito view file – apri in modo read-only vi -r file – recupera un file dopo un crash 154 StarShell vi: Modi di Lavoro vi file Comando A a I i O o Esc Esc Editazione 155 StarShell vi: Terminologia colonna zero cursore Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura che la diritta via era smarrita linea corrente carattere corrente primo carattere significativo bordo sinistro 156 StarShell vi: Comandi di inserimento a A Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura O che la diritta via era smarrita o i I 157 StarShell vi: Comandi di movimento Inizio file 1G Movimento unitario: k 0 $ ^ + Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura che la diritta via era smarrita b h l j e w Linea 55 Fine file 55G G Possibili ripetizioni: 3w 5+ 2b 8e ...... 158 StarShell vi: Movimento Avanzato Comando Azione W avanti a inizio prossima parola delimitata da spazi E avanti a fine parola delimitata da spazi B indietro a inizio parola delimitata da spazi Solo su riga corrente: fx cursore sul seguente carattere x Fx cursore sul precedente carattere x tx cursore prima del seguente carattere x Tx cursore prima del precedente carattere x ; ripeti ultima ricerca f F t T in avanti , ripeti ultima ricerca f F t T all’indietro Posizionamento su schermo: H prima riga M riga di mezzo L ultima riga Orientati a frasi: ]] sezione successiva [[ sezione precedente ( inizio frase corrente ) fine frase corrente { inizio paragrafo } fine paragrafo 159 StarShell vi: Comandi di salvataggio Comando :w :w altro :q :q! :wq :wq! :e :e! :e! file Azione Altri comandi salva salva con altro nome esci (testo non modificato) esci senza salvare salva ed esci :x ZZ override protezioni di scrittura riedita (testo non modificato) riedita e elimina cambiamenti correnti esci senza salvare e edita altro file Il file corrente non cambia nome Sempre efficace solo se si è ‘root’ Cambia la data di aggiornamento solo se il file è cambiato Da ultimo salvataggio effettuato 160 StarShell vi: Operazioni sul file File vero File temporaneo vi file :w Schermo Finestra di editazione Scrolling ^F forward 1 schermo ^B backward 1 schermo ^U up 1/2 schermo ^D down 1/2 schermo :w altro directory temporanea nome univoco Altro file (copia) 161 StarShell vi: Ricerche nel file Comando Azione /stringa cerca stringa in avanti (wrap a fine file) ?stringa cerca stringa all’indietro (wrap a inizio file) / ripeti ultima ricerca in avanti ? ripeti ultima ricerca all’indietro n ripeti ultima ricerca nello stesso senso di prima In generale: /espressione/ cerca espressione regolare in avanti ?espressione? cerca espressione regolare all’indietro Semplici Espressioni Regolari /stringa$/ stringa a fine riga /^stringa/ stringa a inizio riga /^ *stringa/ stringa preceduta da spazi a inizio riga /^$/ riga vuota 162 StarShell vi: Segnalini (markers) Da a fino a z Marcano linee Non è visibile se e quali linee siano marcate ma marca linea corrente con a ’a vai a linea marcata con a ’ ’ vai a linea prima dell’ultimo movimento ma ’’ ’a 163 StarShell vi: Salvataggio avanzato :w file :1,5w file :1,.w file :.,+5w file :.,’aw file :r file salva tutto il file corrente con altro nome salva da riga 1 a 5 salva da riga 1 a riga corrente salva da riga corrente fino a 5 righe dopo salva da riga corrente a riga marcata con a inserisci file esterno dopo riga corrente 164 StarShell vi: Comandi di cut (delete) d + comando di movimento Esempi: dw cancella fino a inizio parola successiva de cancella fino a fine parola d^ cancella fino a inizio riga d$ cancella fino a fine riga File d’a cancella fino a riga marcata con a d3+ cancella fino a tre righe dopo dG cancella fino a fine file dd cancella intera riga viene Ammettono ripetitori: cancellato 10dw 10 volte dw (come d10w) 5dd5 volte dd (anche d5d) 3dd u buffer (senza nome) Undo In vi: singolo livello di undo u undo/redo In vim: multiplo livello di undo u undo (più volte) :redo redo (più volte) 165 StarShell vi: Comandi di paste (put) p P dal buffer a dopo il carattere o la linea corrente dal buffer a prima del carattere o della linea corrente File 3dd viene cancellato p P linea corrente buffer (senza nome) viene inserito viene inserito 166 StarShell vi: Comandi di copia (yank) y + comando di movimento Esempi: yw copia fino a inizio parola successiva ye copia fino a fine parola y^ copia fino a inizio riga y$ copia fino a fine riga y’a copia fino a riga marcata con a y3+ copia fino a tre righe dopo yG copia fino a fine file yy copia intera riga Ammettono ripetitori: 10yw 10 volte yw (come y10w) 5yy 5 volte yy (anche y5y) File 3yy rimane buffer (senza nome) 167 StarShell vi: Comandi di modifica (change) c + comando di movimento + versione nuova + Escape Nel mezzo della via di nostra vita prima Nel mezzo della vi$ di nostra vita c2w Nel mezzo del cami$ di nostra vita c2w del cam Nel mezzo del cammin di nostra vita c2w del cammin Nel mezzo del cammin di nostra vita dopo Escape Comando . (punto) Azione ripeti ultimo cambiamento o cancellazione File c2w vecchia versione viene cambiato buffer (senza nome) 168 StarShell vi: Cancellazione o modifica avanzate Comando Azione x cancella singolo carattere corrente D cancella fino a fine riga (= d$ ) C cambia fino a fine riga (= c$ ) Y copia fino a fine riga (= y$ ) rc rimpiazza carattere corrente con c R entra in modalità “replace”: ogni carattere successivo sostituisce il carattere corrente. Terminare con Escape ~ Cambia carattere corrente da maiuscolo a minuscolo o viceversa e avanza a carattere successivo 169 StarShell vi: Formule magiche this is hte time xp this is the time deep dopo A very Christmas Happy A very Happy Christmas int i,a,j; for (i=0;i<NUM;i++){ a=2; j=j*a; } prima prima ddp prima dopo int i,a,j; a=2; for (i=0;i<NUM;i++){ j=j*a; } dopo 170 StarShell vi: Buffer con nome Nomi da a alla z Preceduti da ” (doppio apice) Prima di comandi delete, yank, change, put Esempi ”adw cancella parola a buffer a ”zy’c copia da qui a linea marcata con c e poni nel buffer z ”zp paste dal buffer z ”a ”b ”c ”d ”z ”c3dd ”cp 171 StarShell ed – Editor orienato alla linea – Pochi comandi • singola lettera • contesto di applicazione – Ideale per l'inserimento in procedure shell 172 StarShell ed - simboli di indirizzamento . - linea corrente $ - ultima linea del buffer n – la linea n - o ^ - linea precedente -n o ^n – n linee prima della corrente + - linea seguente +n – n linee dopo la corrente , o % - tutto il buffer ( come 1,$ ) ; - da linea corrente a fine buffer ( come .,$ ) /re/ - avanti a linea con espressione regolare re ?re? - indietro alla linea con re 'm – alla linea precedentemente marcata con m 173 StarShell ed – comandi principali – Singola lettera con modificatori, poi Enter – Molti ammettono un range di linee a cui applicare il comando, poste prima e senza spazi • default tra parentesi (.)a – append dopo linea corrente (.)i – insert prima di linea corrente . - termina insert o append (.,.)d – elimina linea (.,.)c – elimina linea e inserisci (cambia linea) (.,.+1)j – unisce linea seguente a corrente (.,.)m(.) - muove a linea indicata (.,.)t(.) - copia a linea indicata 174 StarShell ed – comandi con file (1,$)w – salva il file corrente (1,$)w file – scrive il buffer al file (rimpiazza) il file corrente non cambia nome (1,$)W file – append del buffer al file q – quit; se il file è modificato, la ripetizione del q abbandona senza salvare Q – quit senza salvare (1,$)wq file – salva ed esce (1,$)w !comando – scrive il buffer allo standard input del comando ($)r file – inserisce nel buffer il file ($)r !comando – inserisce nel buffer lo standard output del comando 175 StarShell ed – comandi con file e file – edita il file; dopo il salvataggio E file – quit senza salvare ed edita il file e !comando – edita lo standard input del comando f file – cambia nome al file corrente (.,.)p – lista (stampa a video) le linee indicate (.,.)l – lista le linee (--More-- se più schermi) (.,.)n – lista con numeri di linea 176 StarShell ed – comandi di sostituzione – (.,.)s/re/nuova_stringa/ - rimpiazza l'espressione regolare con la nuova stringa (prima occorrenza sulla linea trovata) – (.,.)s/re/nuova_stringa/n – nesima occorrenza sulla linea trovata – (.,.)s/re/nuova_stringa/g – tutte le occorrenze sulla linea trovata – (.,.)s – ripete l'ultima sostituzione – u – undo dell'ultimo comando di modifica (singolo) – (.,.)g/re/comando_ed – applica il comando alle linee contenenti l'espressione regolare indicata – (.,.)v/re/comando_ed - applica il comando alle linee non contenenti re 177 StarShell Espressioni Regolari - simboli stringa – la stringa indicata • non contiene caratteri riservati c – ogni singolo carattere c non riservato . - ogni singolo carattere [xyz] – singolo carattere tra quelli indicati [x-y] – singolo carattere nel range (Locale 'C') [:classe:] - carattere della classe indicata [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:] [^:classe:] - carattere non nella classe indicata ^ - inizio linea $ - fine linea 178 StarShell Espressioni regolari - ripetitori • Ripetitori, seguono il carattere ? - zero o una ripetizione + - una o più ripetizioni * - zero o più ripetizioni {n} – esattamente n ripetizioni {n,} - n o più ripetizioni {m,n} – tra m ed n ripetizioni • Sottoespressioni \(re\) \n – numero della sottoespressione sulla linea • p.es.: \([xy]\)\1 – xx oppure yy 179 StarShell StarShell 180 StarShell
Documenti analoghi
Lord Shinva DiGiTAL::ALLiANCE C : 0 . N : F . E : D . E
Se usate Netscape lo troverete nella directory del browser con l'innocuo nome di "cookies.txt".
Non è altro che un semplice file di testo, come
questo che state leggendo. Basterà eliminarlo dopo og...
Amministrazione di un Sistema UNIX in Rete
I sistemi UNIX.............................................................................................. 7