Previous Next Contents

4. Editor e configurazione

Prima di andare avanti e cominciare a portare le nostre modifiche, per la personalizzazione di linux, abbiamo bisogno di ancora un altro strumento di base, ovvero un editor di testo che ci consenta di modificare agevolmente i nostri file di configurazione.

L'editor standard che si usa in Linux si chiama vi.

La domanda che spessissimo viene posta dai neoutenti è: ``Possibile che non esista qualcosa di meno complicato di vi per scrivere?'' La risposta è: ``Si, esistono altri buoni editor, ad esempio joe o jed che sono anche più semplici di vi.''

Tuttavia vi, grazie alla sua flessibilità e potenza, rimane lo standard per quanto riguarda i sistemi *nix. Quando avrete fatto un po' di abitudine ai suoi comandi, vi accorgerete di non poterne fare assolutamente a meno, conosco molta gente che lo ha ricompilato anche in una versione per dos al fine di poterlo usare anche per quel sistema operativo.

4.1 L'editor vi

vi è un editor a tutto schermo, che risponde alla ben precisa esigenza di poter lavorare su un terminale anche in remoto, e come tale non dispone di nessuna delle funzionalità grafiche o di formattazione spesso comuni a molti WP, in realtà pur rispondendo a molte delle caratteristiche di un WP, per possibiltà di ricerca e manipolazione del testo, esso rimane e sempre rimarrà un Editor se pur molto potente, editor che fra le altre cose come già detto deve rispondere anche alla caratteristica di poter essere usato in remoto.

L'editor vi può essere richiamato a linea di comando in molti diversi modi:

vi

parte semplicemente l'editor con un buffer vuoto

vi miofile

parte l'editor, il buffer viene riempito con il contenuto di nomefile. Se nomefile non esiste allora viene creato.

vi miofile tuofile

tratterà sequenzialmente prima miofile e poi tuofile.

A riga di comando possono essere dati anche altri comandi come ad esempio la riga in cui l'editor si deve piazzare inizialmente o la parola su cui l'editor si deve piazzare e molti altri. Come al solito si consiglia ``man vi''.

Vi accorgerete subito che appena entrati nell'editor non vi sarà concesso di fare alcuna operazione.

vi infatti funziona con diverse modalita:

La modalità comando vi consente di compiere alcune operazioni, quali ad esempio rimuovere una riga o un carattere. Questa modalità può essere usata direttamente.

Premendo il tasto [i] entrerete in modalità testo, a questo punto sarete in grado di scrivere, ma non sarete ad esempio in grado di cancellare un carattere, cancellare una frase, o cercare una parola.

Si esce dalla modalità testo premendo il tasto [Esc].

Premendo a questo punto il tasto lsqb;:] entrerete nella modalità due punti, che è quella che vi consente di compiere la maggior parte delle operazioni, quali la ricerca del testo (anche con espressioni regolari), la sostituzione e molto altro.

Ecco un elenco dei comandi di base di vi:

i

entra in modalità inserimento prima della posizione corrente del cursore

a

entra in modalità inserimento dopo la posizione corrente del cursore

I

entra in modalità inserimento all'inizio della linea

A

entra in modalità inserimento alla fine della linea

O

sposta il testo seguente di una riga verso il basso e si posiziona nella riga vuota

o

come O solo che la riga vuota viene creata dopo la riga corrente

dw

cancella 1 parola

ndw

dove n è un numero, cancella n parole

dd

cancella una riga

ndd

dove n è un numero, cancella n righe

(Il testo cancellato dal comando dd, finisce in un buffer, e può essere re-incollato nel documento tramite il comando p)

x

cancella un carattere

nx

dove n è un numero, cancella n caratteri

u

annulla l'ultimo comando

/{pattern}

ricerca un pattern nel testo corrente in avanti

?{pattern}

come / ma la ricerca avviene all'indietro

n

trova il prossimo pattern indicato nella stringa di ricerca

ZZ

salva ed esce

cw

sostituisce una parola

cc

sostituisce una linea

Vediamo ora la modalità due punti:

:w nomefile

salva il file, nomefile è opzionale, se non viene inserito il file viene salvato con il nome corrente

:q

esce

:wq

scrive ed esce

:r nomefile

inserisce un file all'interno del documento corrente

:s/pattern1/pattern2

sostituisce tutte le occorrenze della stringa pattern1 con la stringa pattern2

Con questi comandi iniziali, dovreste essere già in grado di compiere moltissime operazioni.

Tuttavia vi è diventato lo standard nel mondo *nix non solo grazie a queste semplici cose, ma anche e soprattutto per l'uso avanzato, che comporta ad esempio la conoscenza delle espressioni regolari.

A questo punto del programma non ci conviene perderci nella spiegazione dell'uso delle espressioni regolari, e tuttavia ci riserviamo di dedicare all'uso avanzato di vi un intero capitolo in seguito.

4.2 Carichiamo la tastiera italiana

Abbiamo già visto che la prima cosa che ci apparirà dopo il bootstrap del sistema operativo è:

Welcome to Linux 1.3.56.

darkstar login:

e sappiamo anche che dal momento che attualmente l'unico user disponibile è il supervisore del sistema, root. Pertanto a tale domanda sappiamo di dover rispondere con ``root''.

Una volta compiuta questa operazione, ci troveremo all'interno dell'OS e avremo nelle nostre mani il potere del superuser, ovvero l'utente destinato alla manutenzione del sistema.

Beh, appare logico che una volta entrati con questo potere, vorremo almeno compiere alcune operazioni di base, ad esempio caricare la tastiera italiana.

Dovreste essere già in grado di farlo da soli, senza l'ausilio del programma culturale, sappiamo infatti che il file che contiene i comandi locali all'OS e che tipicamente viene consultato al bootstrap del sistema è /etc/rc.d/rc.local, quindi tipicamente metteremo lì (a meno dell'esistenza di specifici script) i comandi che vogliamo che il sistema esegua al bootstrap.

Il comando che richiama i codici di descrizione della tastiera è loadkeys.

Il formato di loadkeys e':

loadkeys [options] path/filename

dove options sono una serie di opzioni che possono essere date al comando, per l'uso delle quali vi consiglio: ``man loadkeys''.

path/filename, invece, è obbligatorio e specifica il percorso e il nome del file che contiene la descrizione della tastiera.

Tipicamente i file che contengono la mappa dei caratteri si trovano in /usr/lib/kbd/keytables/ pertanto ad esempio il comando

loadkeys /usr/lib/kbd/keytables/it.map

richiama i codici della tastiera italiana.

Se come è ovvio vogliamo che tali codici siano richiamati ogni volta al bootstrap, allora non ci resta che inserire questo comando in /etc/rc.d/rc.local

vi /etc/rc.d/rc.local
i
echo "Sto caricando la tastiera italiana .... "
/usr/bin/loadkeys /usr/lib/kbd/keytables/it.map
[Esc]
:wq

4.3 I file profile e .profile

Altra operazione che probabilmente vorremo compiere la prima volta che ci logghiamo al nostro sistema è quella di cambiare il path (percorso di ricerca) e il prompt del nostro OS.

Tipicamente le variabili di sistema comuni a tutto l'ambiente vengono definite nel file /etc/profile, quindi è in questo file che dovremo andare a guardare se vogliamo modificare le variabili d'ambiente quali ad esempio PATH e PROMPT, diamo dunque un'occhiata

cat /etc/profile

PS1=$LOGNAME'\w''/$>'
export MINICOM="-c on"
export MANPATH=/usr/local/man:/usr/man/preformat:/usr/man:/usr/X11/man:/usr/openwin/man
export HOSTNAME="`cat /etc/HOSTNAME`"
export LESSOPEN="|lesspipe.sh %s"
export COLUMNS=80
alias shut='shutdown -t15 -rfn now'
export TERM=linux
PATH="$PATH:/usr/X11/bin:/usr/andrew/bin:$OPENWINHOME/bin:/usr/games:."
if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then
 TERM=linux
fi
PS2='> '
ignoreeof=10
export PATH DISPLAY LESS TERM PS1 PS2 ignoreeof
umask 022

Come vedete oltre alla definizione del PATH

PATH="$PATH:/usr/X11/bin:/usr/andrew/bin:$OPENWINHOME/bin:/usr/games:."

e del prompt

PS1=$LOGNAME'\w''/$>'

ci sono altre variabili interessanti che vengono definite al livello di sistema.

Ognuna di queste variabili ha un significato particolare, per approfondimenti vedere ``man bash'', si tratta di una lettura interessante anche per tantissime altre cose.

Per quanto riguarda le variabili di sistema, vi accorgerete subito che ne esistono moltissime e la ridefinizione di ognuna comporta un notevole grado di personalizzazione dell'OS.

Ma torniamo alla ridefinizione del path, la variabile che si occupa di questo è PATH, la cui sintassi non mi sembra cosi complessa.

PS1 è già un po' più interessante, si tratta della variabile che individua il prompt principale del sistema,

PS1=$LOGNAME'\w''/$>'

io l'ho definito come segue:

  
$LOGNAME indica l'utente che attualmente è loggato al sistema

\w       indica la directory corrente di lavoro, 

/$>      è semplicemente un separatore che voglio sia messo per
         dividere il prompt dalla linea di lavoro.

Altri interessanti simboli sono ad esempio:

  
\t     L'orario corrente, nel formato HH:MM:SS 
\d     La data corrente, nel formato
       ``Giorno, Mese, datadelgiorno'' (es., ``Tue May 26'')
\n     Carattere di fine linea 
\s     Il nome della shell corrente 
\w     La directory di lavoro corrente
\u     Il nome dell'utente corrente
\h     L'hostname
\nnn   il carattere corrispondente al numero ottale nnn 
\\     backslash
\[     Inizia una sequenza di caratteri non stampabili che ad esempio
       possono servire a definire il colore del prompt 
\]     Termina la sequenza di caratteri non stampabili. 

Possiamo ridefinire il prompt a nostro piacimento.

Al termine modificheremo il file /etc/profile, con vi aggiungendo la parola export davanti alla ridefinizione della variabile, ad esempio

export PS1='\u''\w''/$>'

la parola export farà sì che la variabile PS1 venga esportata come variabile d'ambiente a tutti gli utenti che si loggano al sistema.

In alternativa a /etc/profile si può usare il file ~/.profile.

La ``~'' indica la home dir di un utente, .profile è il nome di un file, il fatto che sia preceduto dal puntino indica che il file è nascosto.

I file .profile risiedono nella home dir dell'utente e vengono consultati solo quando quell'utente si logga nel sistema.

Ad esempio il mio è:

clear
echo ' '
echo 'Benvenuti nel sistema Linux di Fabio Farnesi'
echo ' '
date
echo ' '
ls
echo ' '

che come vedete non fa niente di eccezionale, tranne cancellare lo schermo, darmi il benvenuto e mostrarmi data corrente ed elenco delle directory ogni volta che mi loggo come root.


Previous Next Contents