Liberatoria

Il documento seguente è una copia gratuita, fornita così com'è, rivista e corretta, senza alcuna garanzia, né implicita, né esplicita di adeguatezza ad un uso particolare o di commerciabilità. Non mi assumo alcuna responsabilità per eventuali danni provocati da quanto segue: leggete, confrontate, scopiazzate, ma non cercatemi per portarmi in tribunale, che vi mando un virus che farà girare il vostro computer solo con Winzoz 3.1 ! =:o) BadPenguin vede e provvede!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

LINUX

 

Non sarebbe una cattiva idea stampare questa pagina........ anche xchè (in pagine normali) sono circa 74. Saluti e baci a tutti.

Index: A-B-C-D-E-F-G-H-I-K-L-M-N-P-R-S-T-U-V-W-X-Z 

 

Comandi da linea di comando (shell-bash)

A

10.2.1. adduser

Questo comando è necessario per aggiungere un utente al sistema ed è una operazione concessa unicamente all'utente root, l'amministratore. Digitate:

# adduser nome_scelto

dove nome_scelto è il nostro utente da aggiungere. Per configurare una password a questo nuovo utente fate riferimento al comando passwd a pagina 127.

10.2.2. apropos

Questo comando cerca all'interno degli elenchi whatis tutte le corrispondenze relative alla parola indicata. Esempio:

$ apropos keyboard

Verranno presentate tutte le stringhe di testo contenenti la parola "keyboard".

10.2.3. apt-cache

Questo comando è relativo alla distribuzione Debian GNU/Linux e permette di compiere determinate azioni sui pacchetti software. Tra quest'ultime segnaliamo:

$ apt-cache search rdate

rdate - Set the system's date from a remote host.

Per cercare informazioni sui pacchetti software con una specifica corrispondenza. Per ottenere maggiori informazioni su un determinato pacchetto:

$ apt-cache show rdate

Package: rdate

Priority: optional

Section: net

Installed-Size: 64

Maintainer: Herbert Xu <herbert@debian.org>

Architecture: i386

Version: 1.3-3

Replaces: netstd

Depends: libc6 (>= 2.1.2)

Filename: dists/potato/main/binary-i386/net/rdate_1.3-3.deb

Size: 7040

MD5sum: 322c5b2c859e32f342457e8e46559860

Description: Set the system's date from a remote host. Rdate displays and sets the local date and time from the host name or address given as the argument. It uses the RFC868 protocol which is usually implemented as a built-in service of inetd(1).

10.2.4. apt-get

Questo comando è relativo alla distribuzione Debian GNU/Linux. Ha funzionalità correlabili ai comandi rpm (pagina 131) e dpkg (pagina 101) aggiungendo caratteristiche ulteriori e rendendo la procedura di gestione dei pacchetti software molto più semplice per un utente della distribuzione pocanzi citata. Per eseguire l'installazione di un pacchetto .deb è necessario digitare:

# apt-get install nomefile

Se il pacchetto software è già installato nel sistema viene compiuto l'aggiornamento automatico di quest'ultimo con la nuova versione. Per procedere alla disinstallazione di un pacchetto software digitate:

# apt-get remove nomefile

Il comando è utile anche per aggiornare tutti i pacchetti software del proprio sistema sfruttando la connettività ad Internet. Questo è possibile inserendo un'apposita dicitura nel file /etc/apt/sources.list come segue:

deb ftp://ftp.debian.org/debian unstable main contrib non-free

e digitare al prompt:

# apt-get update

Quest'ultimo comando sfrutterà la connessione (se attiva) per aggiornare automaticamente la lista dei pacchetti software presenti e disponibili per l'installazione e l'aggiornamento di sistema. Una volta aggiornata quest'ultima lista è possibile aggiornare i pacchetti software presenti nel sistema con:

# apt-get upgrade

B

10.2.5. bzip2

Questo comando serve a comprimere un file tramite l'algoritmo bz2. Per comprimere un file è necessario digitare:

$ bzip2 nuovofile

Il file "nuovofile" verrà compresso e verrà rinominato come "nuovofile.bz2". Per scompattare il file presente è necessario utilizzare il comando bunzip2:

$ bunzip2 nuovofile.bz2

C

10.2.6. cal

Questo comando stampa un calendario per uno specifico mese e/o anno. Digitando il comando senza opzioni si otterrà il calendario del mese corrente:

$ cal

novembre 1999

do lu ma me gi ve sa

1 2 3 4 5 6

7 8 9 10 11 12 13

14 15 16 17 18 19 20

21 22 23 24 25 26 27

28 29 30

Un ulteriore esempio che mostra il mese di giugno (6) del 1969:

$ cal 6 1969

giugno 1969

do lu ma me gi ve sa

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30

Per mostrare l'intero calendario di un anno:

$ cal 1999

10.2.7. cardctl

Questo comando è una utilità di controllo delle schede PCMCIA disponibili per computer portatili. Vediamo alcune opzioni:

# cardctl status

Mostra lo stato attuale della scheda presente.

# cardctl config

Mostra le configurazioni della scheda presente.

# cardctl ident

Visualizza le informazioni identificative della scheda.

# cardctl suspend

Interrompe la corrente che alimenta la scheda.

# cardctl eject

Disabilita la gestione e interrompe l'alimentazione della scheda.

# cardctl insert

Avvisa i driver di gestione che la carta è stata nuovamente inserita e deve essere attivata.

10.2.8. cat

Questo comando mostra il contenuto di un file di testo e può concatenare diversi file insieme. Per aggiungere il contenuto del fileuno in coda al filedue è necessario digitare la seguente sequenza di comandi:

$ cat fileuno >> filedue

Per consultare il contenuto di un file:

$ cat fileuno

Se il contenuto di un file è ampio, durante l'esecuzione del comando potreste non visualizzare la totalità delle informazioni presenti. A tale scopo è necessario utilizzare il comando more successivamente descritto.

10.2.9. cd

Questo comando permette di spostarvi nella struttura ad albero delle directory. Quando un utente si collega al sistema viene automaticamente posizionato nella sua directory "home", usualmente nella posizione "/home/nome_utente/". Per spostarsi in una sottodirectory chiamata "Tesi" disposta nella corrente directory:

$ cd Tesi/

Per spostarsi nella directory "/home/darshan/Tesi/Cap06/" digitate:

$ cd /home/darshan/Tesi/Cap06/

Per spostarsi dalla directory attuale a quella superiore, digitate:

$ cd ..

Per spostarvi nella directory "root", digitate:

$ cd /

Per ritornare nella vostra "home" directory, digitate:

$ cd

Per ritornare nella directory precedente alla posizione attuale:

$ cd -

10.2.10. cdrecord

L'applicazione maggiormente utilizzata per masterizzare con GNU/Linux è sicuramente cdrecord, un'utility da console ben testata e potente. La prima utile operazione da compiere prima di agire è visualizzare le periferiche presenti come segue:

# cdrecord -scanbus

Cdrecord 1.9 (i686-pc-linux-gnu) Copyright (C) 1995-2000 Jörg Schilling

Linux sg driver version: 3.1.15

Using libscg version 'schily-0.1'

scsibus0:

0,0,0 0) 'SONY ' 'CD-RW CRX140E ' '1.0n' Removable CD-ROM

0,1,0 1) 'UTI ' 'CD_ROM ' 'V4.6' Removable CD-ROM

0,2,0 2) *

0,3,0 3) *

0,4,0 4) *

0,5,0 5) *

0,6,0 6) *

0,7,0 7) *

Come è possibile vedere, esiste un masterizzatore e un lettore CD. A questo punto il passo per masterizzare è semplice:

# cdrecord -v speed=4 dev=0,0,0 -data dati.iso

Cdrecord 1.9 (i686-pc-linux-gnu) Copyright (C) 1995-2000 Jörg Schilling

TOC Type: 1 = CD-ROM

scsidev: '0,0,0'

scsibus: 0 target: 0 lun: 0

Linux sg driver version: 3.1.15

Using libscg version 'schily-0.1'

atapi: 1

Device type : Removable CD-ROM

Version : 0

Response Format: 1

Vendor_info : 'SONY '

Identifikation : 'CD-RW CRX140E '

Revision : '1.0n'

Device seems to be: Generic mmc CD-RW.

Using generic SCSI-3/mmc CD-R driver (mmc_cdr).

Driver flags : SWABAUDIO

Drive buf size : 4183808 = 4085 KB

FIFO size : 4194304 = 4096 KB

Track 01: data 510 MB

Total size: 585 MB (58:01.78) = 261134 sectors

Lout start: 586 MB (58:03/59) = 261134 sectors

Current Secsize: 2048

ATIP info from disk:

Indicated writing power: 4

Is not unrestricted

Is not erasable

Disk sub type: Medium Type A, low Beta category (A-) (2)

ATIP start of lead in: -11318 (97:31/07)

ATIP start of lead out: 336225 (74:45/00)

Disk type: Short strategy type (Phthalocyanine or similar)

Manuf. index: 22

Manufacturer: Ritek Co.

Blocks total: 336225 Blocks current: 336225 Blocks remaining: 75091

Starting to write CD/DVD at speed 4 in write mode for single session.

Last chance to quit, starting real write in 1 seconds.

Waiting for reader process to fill input buffer ... input buffer ready.

Performing OPC...

Starting new track at sector: 0

Track 01: 510 of 510 MB written (fifo 100%).

Track 01: Total bytes read/written: 534798336/534798336 (261132 sectors).

Writing time: 876.092s

Fixating...

Fixating time: 61.167s

cdrecord: fifo had 8424 puts and 8424 gets.

cdrecord: fifo was 0 times empty and 8086 times full, min fill was 71%.

L'opzione "-v" per avere il maggior numero di informazioni durante l'esecuzione del comando, "speed=4" per indicare che la velocità di masterizzazione dovrà essere di 4x, "dev=0,0,0" indica il dispositivo per masterizzare e "-data dati.iso" per utilizzare una ben determinata immagine iso dati. L'esempio era relativo alla masterizzazione dati; per quel che riguarda l'audio il comando adeguato cambia ben poco:

# cdrecord dev=0,0,0 -audio traccia.cdr traccia1.cdr

La masterizzazione delle tracce audio è denominata TAO (Track At Once); sarà prodotto un cd audio dove tra una traccia e l'altra intercorrono 2 secondi di pausa. Alternativa a TAO, scelta discutibile sulla qualità finale del risultato, è DAO (Disk At Once), modalità che migliora il risultato finale ed evita la possibilità di fruscii e altri effetti indesiderati.

10.2.11. chattr

Questo comando cambia gli attributi di un file su un file system di tipo ext2 e può essere particolarmente sotto aspetti di backupt di sistema e sicurezza. Gli obiettivi del comando possono essere alquanto oscuri per un utente alla prime armi ma verranno utilizzati alcuni esempi reali per semplificare l'apprendimento.

$ chattr +i documento.txt

Il comando appena digitato rende "immutevole" il file documento.txt da modifiche, aggiunte e non si potranno creare link a quest'ultimo. Se volessimo rendere "immutevole" una directory con tutti i file presenti al suo interno avremmo dovuto digitare:

$ chattr -R +i documenti/

Ulteriori attributi da dare ad un file (o directory) sono i seguenti:

$ chattr +a documento.txt

L'attributo "a" rende il file gestibile solo in modalità append ovvero è permesso solamente apportare aggiunte al file.

$ chattr +c documento.txt

Un file con l'attributo "c" viene automaticamente compresso sul disco dal kernel. La lettura del file restituisce i dati decompressi mentre in scrittura ogni informazione viene compressa e poi scritta sul disco.

$ chattr +d documento.txt

L'attributo "d" candida un file per il backup tramite il comando dump .

$ chattr +s documento.txt

Per ulteriori informazioni si consiglia la guida in linea:

$ man chattr

Abbiamo visto che per aggiungere attributi è stato utilizzato il carattere "+". Per toglierli dobbiamo alternativamente utilizzare il carattere "-" come nell'esempio seguente:

$ chattr -i documento.txt

10.2.12. chmod

Questo comando cambia i permessi associati per ogni file presente nel vostro sistema. Di seguito viene mostrata la serie di informazioni relative ad un singolo file. Il comando in questione agisce sulla prima decade di lettere, quelle che specificano i "diritti".

-rw-r-r- 1 root root 133444 Sep 1 21:14 gsg.tex

La forma di utilizzo è la seguente:

chmod {a, u, g, o} {+/-} {r, w, x} <file>

dova "a" rappresenta tutti gli utenti ("all"), "u" l'utente proprietario del file, "g" il gruppo proprietario, "o" gli altri utenti di sistema che non siano ne il proprietario ne il gruppo di riferimento. Il comando può essere anche espresso in forma ottale come in lettere come segue:

$ chmod 700 gsg.tex

Il comando ha la stessa valenza della forma seguente:

$ chmod u+rwx,go-rwx gsg.tex

Il file considerato cambierà i permessi nel seguente modo:

-rwx--- 1 root root 133444 Sep 1 21:14 gsg.tex

Per capire come funzionano i permessi su un file consultare la tabella 8.1.

10.2.13. compress

E' un comando storico per la compressione dei dati per Unix. Esempio di compressione di un file:

$ compress nomefile

Ogni file viene compresso e rinominato con l'aggiunta del suffisso ".Z". Per decomprimere un file di questo tipo è necessario digitare:

$ compress -d nomefile.Z

E il file verrà rinominato senza l'estensione ".Z".

10.2.14. cp

Questo comando serve per copiare dei file, preservare gli originali e crearne una copia identica. Se già disponete di un file digitate:

$ cp gsg.tex Documenti/gsg.tex

Nel caso sopracitato ho copiato un file presente nella directory corrente nella sottodirectory "Documenti/". Se nella directory dove ho copiato il file ci fosse stato già un documento con quel nome lo avrei sovrascritto. Per evitare questo aggiungo la seguente opzione:

$ cp -i theGimp.tex Documenti/gsg.tex

L'opzione attiva una modalità interattiva che mi comunica particolari situazioni come quella descritta.

10.2.15. cpio

E' un archiviatore di file simile al comando tar (pagina 135). Per lungo tempo tar e cpio erano gli archiviatori maggiormente utilizzati, poi con l'avvento di GNU/Linux il primo ebbe il sopravvento. Numerose sono le opzioni di questo comando ma ci limiteremo alle due sole principali, la creazione e l'estrazione di un archio cpio. Per la creazione la forma è la seguente:

# cpio -o < file/ > file.cpio

Per l'operazione inversa, l'estrazione di un archivio cpio, la forma è questa:

# cpio -i --make-directories < file.cpio

La vera utilità di questo comando risiede nell'utilizzo combinato con rpm2cpio (pagina 132).

10.2.16. cron

Questo applicativo è utile quando si vuole automatizzare l'esecuzione di determinati processi di sistema a scadenze temporali ben definite. Per il suo funzionamento è necessario avere attivato il demone crond che controlla i file di configurazione e si occupa di eseguire le operazioni indicate nei limiti delle impostazioni indicate. Per verificare rapidamente se è attivo digitate:

$ ps -ax|grep cron

In caso positivo apparirà quanto segue:

$ ps -ax|grep cron

559 ? S 0:00 crond

563 pts/1 R 0:00 grep cron

In caso negativo (non esiste il processo crond attivo) potete attivarlo sul momento. Per fare questo è necessario essere utente root, l'amministratore di sistema, colui che ha i diritti necessari per lanciare il demone1 nel sistema. Digitate:

$ su -

Verrà chiesta la password di root e una volta autenticati potrete lanciare il demone crond con:

2

# /etc/rc2.d/S89cron start

e poi ritornate all'utente precedente con

# exit

Il prompt dei comandi ritornerà come era. A questo punto non resta altro che modificare il file di configurazione per eseguire i processi ad una data scadenza temporale:

$ crontab -e

Il comando edita un file (utilizzando l'editor vi, pag. 139) dove andranno impostate le vostre preferenze nella forma seguente:

minuti ora gg del mese mese gg settimanale applicativo

data comando

Per eseguire il comando pon alle 18,30 di ogni giorno la configurazione da aggiungere al file di cron sarà la seguente:

30 18 * * * /usr/bin/pon

Gli asterischi "*" indicano che il processo dovrà essere eseguito ogni giorno del mese, ogni mese, ogni giorno della settimana. A questo punto non vi resta altro che salvare il file e ritornare al prompt dei comandi iniziale. Per visualizzare il file appena modificato digitate:

$ crontab -l

1demone, processo che viene attivato nel sistema e procede in background, ovvero senza disturbare lo svolgimento delle ulteriori attività.

2I prompt di comandi possono cambiare tra le varie distribuzioni.

Se desiderate eliminare il vostro file di configurazione di cron:

$ crontab -r

Per maggiori informazioni digitate al prompt man cron.

D

10.2.17. date

Questo comando mostra giorno, data, ora ed anno corrente:

$ date

gio lug 6 11:14:54 CET 2000

10.2.18. df

Questo comando serve a mostrare lo spazio libero sui dischi.

$ df

Filesystem 1k-blocks Used Available Use% Mounted on

/dev/hda1 1486339 1246706 162825 88% /

/dev/hda2 694727 618131 40712 94% /home

/dev/hda3 121007 73550 41208 64% /home/redhat

Dal risultato del comando è possibile vedere lo spazio utilizzato, lo spazio disponibile, la percentuale di utilizzo e dove sono montati i dischi analizzati.

10.2.19. diff

Questo comando serve per analizzare due file e riportare le differenze.

$ diff -urN it.po it.po.new

Dopo aver digitato il comando vedrete a video le differenze tra i due file. Il comando diff viene utilizzato per la creazione di patch con le seguenti opzioni:

$ diff -urN it.po it.po.new > patch

Per creare una patch su file binari è necessario digitare quanto segue:

$ diff -a --binary bin bin.2 > patch

Per applicare i file con le differenze è necessario il comando patch (pagina 128).

10.2.20. dpkg

Questo comando è relativo alla distribuzione Debian GNU/Linux. E' principalmente utile per installare e aggiornare i pacchetti software sul proprio sistema e può essere comparato al comando rpm (pagina 131).

# dpkg -i nomefile.deb

Questo comando compie sia l'installazione che la procedura di aggiornamento se viene riscontrato un pacchetto maggiormente recente. Per compiere l'operazione opposta, ovvero la disinstallazione del pacchetto software .deb digitate:

# dpkg -r nomefile

Per evitare compromissioni del sistema è bene antecedere la seguente opzione di controllo:

# dpkg --no-act -r nomefile

Per ottenere informazioni su un pacchetto è possibile digitare quanto segue:

# dpkg -s nomefile

Per ottenere informazioni sulla provenienza di un particolare file presente sul sistema possiamo conoscere il pacchetto software relativo digitando:

# dpkg -S blackbox

Per avere la lista dei pacchetti software installati nel sistema digitate:

# dpkg -l

Una soluzione per avere una lista di pacchetti software da replicare su una nuova macchina o sulla stessa in caso di ripristino è la seguente riga di comandi:

# dpkg --get-selections > pacchetti.txt

Creato il file potremo recuperare lo stato dei pacchetti software come segue:

# dpkg --set-selections < pacchetti.txt

# dpkg deselect-upgrade

Alternativa a dpkg è apt-get (pagina 93) che offre numerose caratteristiche aggiuntive e maggiore semplicità di utilizzo.

10.2.21. du

Volete sapere quando spazio disco è occupato? Utilizzate il comando seguente:

$ du

Dopo aver digitato il comando ed essere stati colti da dubbi esistenziali si consiglia la variante successivamente esposta del comando:

$ du -h -s

32M

L'opzione "-h" vi mostra il risultato del comando in un modo "umanamente comprensibile" mentre l'opzione "-s" per ottenere unicamente la somma delle dimensioni dei file considerati.

10.2.22. dvipdfm / dvipdf

Questo comando converte un file in formato .dvi in formato .pdf. Digitare:

$ dvipdfm -o documento.pdf documento.dvi

Dove l'opzione "-o" indica il nome finale del file nel nuovo formato. Per maggiori informazioni relative consultare pagina 117.

10.2.23. dvips

Questo comando converte file in formato .dvi in formato .ps (Postscript3).

$ dvips -o documento.ps documento.dvi

L'opzione "-o" indica il nome finale del file postscript che verrà generato. Esistono numerose opzioni consultabili tramite la propria pagina manuale ma quelle interessanti nell'uso comune possono essere le seguenti:

$ dvips -A -o pgpari.ps documento.dvi

$ dvips -B -o pgdispari.ps documento.dvi

Dove le opzioni aggiuntive "-A" e "-B" indicano rispettivamente di creare il file pgpari.ps con le pagine pari dell'originale documento e pgdispari.ps con le pagine dispari. Quest'ultime opzioni possono risultare utili se si dispone di una comune stampante per poter stampare su entrambe i lati dei fogli. Per maggiori informazioni relative consultare pagina 117.

E

10.2.24. echo

Il comando echo serve esclusivamente a stampare sullo standard output stringhe di testo:

$ echo "Ciao Daniele"

Ciao Daniele

Un altro esempio può essere la stampa a video di alcune variabili di sistema:

$ echo $HOME

/home/darshan

Dove $HOME rappresenta la nostra directory home.

10.2.25. enscript

Se è nostra necessità convertire un file di testo in un file postscript, rtf o html, questo comando è quello che vi serve. La forma più semplice e immediata è la seguente:

$ enscript u in.txt o out.ps

3Postscript è un marchio registrato da Adobe Inc.

dove l'opzione "u" indica il file di testo e l'opzione "o" il nome del file postscript da creare. Se volessimo applicare alcune caratteristiche di "stile" come impostare il testo in n colonne basta opportunamente indicarlo come segue:

$ enscript 2 u in.txt o out.ps

Verrà generato un file postscript con il testo impaginato su 2 colonne. Per definire il formato pagina:

$ enscript M a4 u in.txt o out.ps

Dove con "M" definiamo il formato della carta (formato a4).

10.2.26. env

Questo comando mostra le variabili di ambiente della vostra sessione. Digitate:

$ env

10.2.27. export

Questo comando viene utilizzato per esportare delle variabili di ambiente, valori che permettono al sistema di funzionare come desideriamo.

$ export DISPLAY=monika:0.0

Nell'esempio appena visto si è utilizzato il comando per esportare il display di X Window dal server dada al computer monika che corrisponde ad un IP nel file /etc/hosts. I comandi che lanciano applicazioni per X verranno aperti sull'ultimo computer ma il carico di processo sarà della macchina dove vengono eseguiti (in questo caso il computer dada).

F

10.2.28. file

Questo comando indica il formato di un file indicato. Digitate:

$ file esempio

esempio: ASCII text

Verrà indicato il formato del file che si chiama "esempio".

10.2.29. find

Questo comando serve per fare ricerche di file nel sistema. Per eseguire una semplice ricerca del file "miofile.txt" nella directory corrente è necessario digitare quanto segue:

$ find . -name miofile.txt -print

Se desiderate trovare tutti i file con estensione ".txt" è necessario digitare quanto segue:

$ find . -name "*.txt" -print

In questi esempi appena visti si è utilizzato il punto "." per indicare la directory corrente. Se la nostra ricerca vuole essere estesa ad un'altra directory comportatevi come segue:

$ find /home/ -name miofile.txt -print

La ricerca andrà ad analizzare se esistono file denominati "miofile.txt" nella directory /home e mostrerà il risultato finale.

$ find / -cmin 60 -mmin 60

Con le opzioni appena viste cerchiamo i file cambiati e modificati entro l'arco di tempo di 60 minuti. 10.2.30. finger Il comando finger riporta informazioni sugli utenti di un sistema, visualizzando nome, cognome, ufficio e numero di telefono, ultimo login ed ulteriori informazioni. Di seguito un esempio di utilizzo comune:

$ finger darshan

Login: darshan

Name: Daniele Medri

Directory: /home/darshan

Shell: /bin/bash

Never logged in.

No mail.

No Plan.

Se l'utente "darshan" (preso di esempio) ha un accesso presso un server differente nella rete interna bisognerà specificarlo come segue:

$ finger darshan@erlug

La forma è nome "utente@nome server". Se l'utente ha un accesso presso un server differente e quest'ultimo esce dalla rete interna ed è dislocato su Internet, la forma diventa:

$ finger darshan@erlug.linux.it

Il nome del server è conforme alle regole canoniche di Internet.

10.2.31. fmt

Questo comando serve per formattare un documento di testo con un numero definito di colonne:

$ fmt -w 60 doc.txt > doc2.txt

Il comando esaminerà il file doc.txt, lo formatterà con un numero di 60 colonne e passerà il risultato ridirizionandolo al file doc2.txt.

10.2.32. fold

Questo comando ha funzionalità simili al comando fmt e aggiunge alcune caratteristiche. Se si decide di formattare un file con un numero definito di colonne e non ricevere parole troncate al termine di ogni riga sarà necessario digitare quanto segue:

$ fold -w 50 -s doc.txt > doc2.txt

Verrà esaminato il file "doc.txt" formattandolo con un numero massimo di 50 colonne e disabilitando la parole troncate. Il risultato verrà passato al file"doc2.txt".

10.2.33. free

Questo comando stampa sullo standard output l'utilizzo della memoria Ram e dello Swap:

$ free

total used free shared buffers cached

Mem: 95504 88308 7196 40768 7568 57640

-/+ buffers/cache: 23084 72420

Swap: 60476

Dai dati si può notare l'esistenza di 96 Mbyte di memoria Ram, e una partizione di Swap di circa 60 Mbyte.

10.2.34. ftp

Per poter trasferire dei file da un server locale ad un server remoto è necessario utilizzare questo comando. E' indispensabile avere un accesso al server remoto o utilizzare una connessione anonima. Per aprire una sessione digitate:

$ ftp

ftp>

Per conoscere l'insieme delle opzioni presenti digitare "help":

ftp> help

Per aprire una connessione ad un server:

ftp> open nomeserver

Per chiudere una connessione:

ftp> close

Si è accennato alla connessione anonima. L'unica sostanziale differenza è in fase di autenticazione:

$ ftp dada

Connected to dada.

220 dada FTP server Tue Sep 21 16:48:12 EDT 1999) ready.

Name (dada:darshan): anonymous

331 Guest login ok, send your complete e-mail address as password.

Password: **********

Quando viene richiesta la password utilizzare il proprio indirizzo di posta elettronica. Non è una richiesta obbligatoria ma è buona regola farlo se si utilizza il servizio in questione.

G

10.2.35. gpg

GnuPG è la versione GNU di PGP, un programma di crittografia per la protezione della privacy personale. Questa breve descrizione non può essere esaustiva vista la vastità delle opzioni disponibili ma sintetizzerà i passi fondamentali necessari è utilizzati comunemente. Il primo passo è la generazione della directory personale di gpg lanciando il comando:

$ gpg

gpg: /home/darshan/.gnupg: directory creata

gpg: /home/darshan/.gnupg/options: creato un nuovo file delle opzioni

Come secondo passo è necessario generare le proprie chiavi (pubblica/privata) lanciando il comando seguente:

$ gpg --gen-key

Verrà avviata una procedura interattiva che vi aiuterà a creare la chiave chiedendovi alcune configurazioni e alcuni vostri dati personali (nome, cognome, email, commenti). Quando tutti i dati saranno confermati dovrete digitare la vostra passphrase, o frase segreta e proseguire nella creazione delle chiavi. Per visualizzare la vostra chiave pubblica:

$ gpg --export -a

Per copiare la chiave su un file di testo è necessario aggiungere la seguente opzione:

$ gpg --export -a -o chiave_pubblica.asc

Il file chiave_pubblica.asc è la vostra chiave pubblica che potete rendere disponibile in rete. Se volete importare la chiave pubblica di altre persone nella vostra e ampliare il livello di sicurezza dovrete digitare quanto segue:

$ gpg --import altra_chiave_pubblica.asc

Per conoscere le chiavi importate:

$ gpg --list-keys

Fingerprint Il fingerprint, o "impronte digitali" sono informazioni univoche e invariabili tratte da ogni chiave, informazioni che non cambiano importando ulteriori chiavi. Servono ad identificare la chiave di una persona e la sua validità. Per conoscere il proprio fingerprint:

$ gpg --fingerprint

E' utile copiare questi dati e utilizzarli nella propria firma delle vostre email in modo che sia pubblica e rapidamente confrontabile. Crittografia/Decrittografia Per utilizzare gpg per spedire un messaggio segreto ad una persona conosciuta è necessario digitare il seguente comando:

$ gpg -e -a messaggio_segreto.asc

L'opzione "-e" significa encrypt e l'opzione "-a" è necessaria per esportare il messaggio crittato in un file di testo. Se ora visualizziamo il file apparirà quanto segue:

$ more messaggio_segreto.asc

-----BEGIN PGP MESSAGE-----

Version: GnuPG v1.0.1 (GNU/Linux)

Comment: For info see http://www.gnupg.org

hQEOAxMnLse+b6VzEAP/cgfcbq2duvNZ3Msd/fUIjKRfOSj9yvWti

pOwrbvtTm3my2pQbr+w8iy71txPyP+okWUyPYYMyc0wZSYCxsert+

pZKkIftq9PMZO/Ef5EoMysq/kcA0j0vmrKF/O145VzAzYifMW043E

/iQ9LdZogUpH/w8/rS01af5YJmSNwn1TB7q/MI0ywQh6UNNExSerb

dekd1ssd7nV1TpxIxvC1ijlZ4V68uyxXWUJZoc8Mn1IAhwLCnza/Q

9GZN7PaJ94qFNQE69wqGz4TUOA5NWwJaqFSmwwDEmTIyyaferrerV

eue3SJGlfBqzJHJ2HsdLL4XpR3kZMcbZwzVhffdIbpI4gYDd/tLXR

-----END PGP MESSAGE-----

La sequenza di caratteri è il vostro messaggio protetto. Per visualizzarlo in forma leggibile è necessario digitare quanto segue:

$ gpg -d messaggio_segreto.asc

Vi verrà chiesto di digitare la vostra frase segreta (passphrase) e in seguito alla verifica di quest'ultima apparirà il messaggio reale. Per ulteriori informazioni visualizzate la guida in linea:

$ man gpg

oppure visitate il sito Internet ufficiale: http://www.gnupg.org.

10.2.36. grep

Questo comando è necessario per ritrarre da una fonte di ingresso (un file, standard input) una particolare serie di dati che corrisponde alle richieste poste. Una semplice forma di utilizzo può essere la seguente:

$ grep "pippo" doc.txt

Il comando visualizzerà a video tutte le righe del file doc.txt dove sarà presente la parola "pippo". La ricerca può assumere richieste particolari e a tale scopo entrano in gioco le espressioni regolari. Un esempio pratico:

$ grep '\<[a-z0-9-]\+\>' doc.txt

Verranno visualizzate solamente le righe che contengono i caratteri dalla lettera "a" alla lettera "z" e i numeri da "0" a "9". Per maggiori informazioni consultare la pagina manuale del comando.

$ man grep

10.2.37. grub / grub-install

Esistono diverse alternative al boot loader LILO che abbiamo già trattato in precedenza e tra queste grub è un'ottima scelta. Dopo aver scaricato il pacchetto software con

# apt-get install grub

la più semplice procedura di installazione è la seguente:

# grub-install /dev/hda

Al riavvio della macchina si otterà un prompt come il seguente:

GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word,

TAB lists possible command completions. Anywhere else TAB lists

the possible completions of a device/filename. ]

grub>

Premendo il tasto ! (tabulatore) si può ottenere la lista di comandi. Confusi? Posso capirvi ma non è così complicata la procedura basilare e si sintetizza come segue:

grub> root (hd0,1)

grub> kernel /boot/vmlinuz-2.4.1

grub> read-only

grub> boot

Per procedere ad un'installazione definitiva:

grub> (hd0,1)/boot/grub/stage1 d (hd0) /boot/grub/stage2 p /boot/grub/menu.lst

Non mi dilungherò ulteriormente sulla spiegazione dei comandi perchè grub, nelle distribuzioni aggiornate che lo utilizzano, viene automaticamente installato in fase di installazione e non è più necessario interagire direttamente con la shell comandi. Esiste una documentazione molto ampia a riguardo sia sul sito di riferimento del software che nella directory "/usr/share/doc/grub" del vostro sistema locale. Quello che era il file "/etc/lilo.conf" per LILO ha molte similitudini con "/boot/grub/menu.lst" di grub. Di seguito viene riportato un esempio di quest'ultimo:

#

# Sample boot menu configuration file

#

# Boot automatically after 30 secs.

timeout 30

# By default, boot the first entry.

default 0

# Fallback to the second entry.

fallback 1

# For booting Linux

title GNU/Linux-2.4.2

root (hd0,1)

#kernel (hd0,0)/vmlinuz-2.4.1 root=/dev/hda2 vga=ask apm=on

kernel (hd0,0)/vmlinuz-2.4.2 root=/dev/hda2 vga=ask

# Alternativo

title GNU/Linux-2.18

root (hd0,1)

kernel (hd0,0)/vmlinuz-2.2.18pre21 root=/dev/hda2

# For installing GRUB into the hard disk

title Install GRUB into the hard disk

root (hd0,1)

configfile (hd0,0)/grub/menu.lst

setup (hd0)

# Change the colors.

title Change the colors

color light-green/brown blink-red/blue

Una volta apportate modifiche e salvato il file, l'unica cosa necessaria da fare è riavviare la propria macchina.

10.2.38. gzip

Questo comando è utile per comprimere file. La forma tipica di utilizzo è:

$ gzip documento.tex

Per decomprimere tale file si può ricorrere al comando gunzip (pagina 110).

10.2.39. gunzip

Questo comando è utile per decomprimere file. La forma tipica di utilizzo è:

$ gunzip documento.tex.gz

10.2.40. gv

Il comando gv è un visualizzatore per documenti postscript o pdf che gira in ambiente visuale e come tale necessita del server grafico X. A prescindere dal window manager o desktop utilizzato si può lanciare l'applicazione direttamente da una console digitando:

$ gv documento.ps

Sulla scia di questa storica applicazione sono sorte recentemente versioni similari e specifiche per ogni desktop: vedi kghostview e ggv.

K

10.2.41. kill

Questo comando è utilizzato come ultima risorsa per distruggere un programma sospeso o che si desidera riavviare. Esistono diversi segnali/opzioni che si possono utilizzare con il comando kill per interrompere un programma. Nell'uso quotidiano può essere comune quanto segue:

$ kill -9 id_processo

Per visualizzare il codice identificativo di un processo è necessario utilizzare il comando ps (pagina 128).

H

10.2.42. halt

Questo comando è necessario per fermare il vostro computer. Una volta lanciato compierà diverse operazioni volte a interrompere i servizi attivi e disabilitare i dispositivi che compongono il file system.

# halt

Comando con funzionalità analoghe può essere shutdown (pagina 133).

10.2.43. hdparm

Il comando è molto utile per gestire e verificare le prestazioni dei dischi fissi ed è necessario essere l'utente root per poter eseguire determinate operazioni. Introduciamo il discorso mostrando basilari parametri relativi al vostro disco:

# hdparm -c /dev/hda

/dev/hda:

I/O support = 0 (default 16-bit)

Notiamo che il disco sono configurati a 16 bit senza DMA. Per ottenere una statistica digitiamo:

# hdparm -t /dev/hda

/dev/hda

Timing buffered disk reads: 64 MB in 17.58 seconds = 3.64 MB/sec

Ora provvediamo ad attivare il supporto 32 bit e il DMA:

# hdparm -c 1 -d 1 /dev/hda

/dev/hda

setting 32-bit I/O support flag to 1

setting using_dma to 1 (on)

I/O support = 1 (on)

using_dma = 1 (on)

Verifichiamo ora se c'è stato un incremento di prestazioni in seguito all'attivazione di questi parametri:

# hdparm -t /dev/hda

/dev/hda

Timing buffered disk reads: 64 MB in 11.77 seconds = 5.44 MB/sec

Dal confronto risulta un incremento di circa 2 MB/sec in aggiunta di trasferimento dati. Non male! Come ulteriore aggiungiamo l'opzione seguente:

# hdparm -k 1 /dev/hda

/dev/hda

setting keep_settings to 1 (on)

keepsettings = 1 (on)

A questo punto, se vogliamo giovare dell'aumento di prestazioni ogni qual volta si utilizzi il proprio computer possiamo aggiungere quanto segue al file "/etc/rc.d/rc.local", letto da init in fase di avvio del sistema:

#!/bin/sh

# aumento prestazioni del disco

hdparm -c 1 -d 1 -k 1 /dev/hda

A questo punto non ci rimane che salvare il file e riavviare. Per maggiori informazioni sul comando si consiglia di consultare la pagina manuale (man hdparm).

10.2.44. history

Come è stato citato in precedenza (pagina 112), la Bash offre la possibilità di memorizzare la sequenza di comandi utilizzati da un utente. Per visualizzare lo storico dei comandi basta digitare quanto segue:

$ history

Con maggiore utilità se l'output video viene rediretto al comando more o direttamente in un file di testo. Rispettivamente:

$ history | more

$ history > storico.txt

10.2.45. hwclock

Questo comando vi permette di gestire l'orologio hardware di sistema apportando modifiche a piacimento. Il primo utilizzo illustrato è quello ovvio:

# hwclock --show

Sat Jul 15 13:19:14 2000 -0,888683 seconds

Questa è l'ora presente nell'orologio di sistema. Per cambiarla è necessario aggiungere i seguenti parametri:

# hwclock --set --date='7/15/2000 16:45:05'

Esistono due modalità di gestione dei dati: localtime, macchina locale, o utc (Universal Coordinated Time). Se non viene specificato la modalità è quella locale mentre per configurare l'impostazione nel secondo tipo è necessario indicarlo:

# hwclock --set --date='7/15/2000 16:45:05' --utc

Gli orologi in un sistema GNU/Linux Esistono due principali tipi di orologi: l'orologio hardware e l'orologio di sistema. Il primo è indipendente da ogni programma di controllo e rimane attivo anche a computer spento. Spesso viene definito con diverse terminologie: rtc (Real Time Clock), BIOS clock, CMOS clock. L'orologio di sistema è il sistema di gestione presente in ogni kernel di ogni sistema operativo; al momento dell'avvio della macchina vengono consultati i dati dell'orologio hardware e l'orologio di sistema si configura rispettando i timezone indicati, le fasce del fuso orario. Nei sistemi Unix l'orologio di sistema ha come data iniziale l'ora 00:00:00 del 1 Gennaio 1970 UTC. Nota di carattere generale Quando si parlava di millenium bug, il baco di fine millennio che doveva colpire i computer di tutto il mondo, si considerava una forma di inadeguatezza degli orologi hardware come degli orologi di sistema dei vari sistemi operativi che poteva creare problemi nello svolgimento delle normali attività esecutive.

I

10.2.46. ifconfig

Con questo comando è possibile configurare e monitorare le interfacce di rete. Se non vengono dati parametri aggiuntivi, il comando mostra le interfacce attive in quel preciso istante:

# ifconfig

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:3904 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

Notiamo l'esistenza dell'interfaccia lo, ovvero il Loopback con IP 127.0.0.1 Se si dispone di una scheda di rete ed è già stata configurata, possiamo "alzare"4 l'interfaccia di rete e assegnarle un indirizzo IP specifico come segue:

4slang per amministratori di rete che indica l'attivazione.

# ifconfig eth0 192.168.0.1

Il risultato sarà quanto segue:

# ifconfig

eth0 Link encap:Ethernet HWaddr 00:50:DA:69:43:7C

inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:382 errors:0 dropped:0 overruns:0 frame:0

TX packets:629 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

Interrupt:10 Base address:0x6800

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:3904 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

Come si nota è stata attivata l'interfaccia eth0 e le si è assegnato un indirizzo IP determinato. Per disabilitare eth0:

# ifconfig eth0 down

Per maggiori dettagli si consiglia la lettura del capitolo relativo alle soluzioni di rete, successivamente trattato in questo testo.

10.2.47. insmod

E' un'utilità per il kernel modulare di Linux che permette di inserire un modulo in memoria e aggiungere funzionalità ulteriori. Quest'ultimi sono genericamente presenti nella directory:

/lib/modules/<versione del kernel utilizzato>

che in termini pratici può concretizzarsi in

/lib/modules/2.2.17/

Per inserire un modulo è necessario digitare quanto segue:

# insmod sound

oppure il percorso assoluto

# insmod /lib/modules/2.2.17/sound/sound.o

Il comando permette l'utilizzo di numerose opzioni tra le quali le più significative sono le seguenti:

# insmod -f sound

per compiere l'inserimento del modulo "sound" in maniera forzata superando eventuali discrepanze tra versioni di kernel diversi. Se si desidera che il kernel stesso si occupi del modulo in maniera flessibile e su necessità è bene utilizzare la seguente opzione:

# insmod -k sound

Altre utilità per la gestione dei moduli sono lsmod(pag. 121), rmmod(pag. 130) e modprobe( pag.123).

10.2.48. irc

Questo comando lancia un minimale programma per la chat di tipo IRC.

$ irc irc.tin.it

Digitando il solo comando parte il collegamento in automatico con il server italiano irc.tin.it che fa parte della rete Ircnet, una delle reti più diffuse. Durante il collegamento compariranno messaggi informativi e vi verrà chiesto il nickname, ovvero il vostro "nomignolo" per la chat. Se desiderate passare quest'ultimo come parametro al lancio del programma è necessario digitare quanto segue:

$ irc nickname irc.tin.it

Una volta collegati al server specificato con il nickname scelto è necessario entrare in un "canale" di persone, piazze virtuali dove le persone si trovano per comunicare. Se sapete già in quale canale andare digitate al prompt:

/join #italia

Dove /join indica di entrare nel canale #italia. Una volta entrati potete comunicare con le altre persone collegate in quel momento. Se desiderate uscire dal canale digitate:

/leave #italia

Se desiderate ottenere la lista dei canali esistenti e aperti in quel preciso momento digitate:

/list -MIN 5 -MAX 20 -PUBLIC -NAME

Il comando /list richiede tutti i canali aperti. Le opzioni aggiunte servono a limitare il flusso di dati richiesti e cercare i canali con un numero di partecipanti che varia da 5 (MIN) a 20 (MAX) utenti, che sia aperto a chiunque (PUBLIC) e ordinati per nome (NAME). Per ottenere la lista dei comandi possibili digitate:

/help

Per la guida specifica di un comando (es. list):

/help list

Per scollegarsi dal server IRC e chiudere il programma:

/quit

E' possibile ottenere la lista dei parametri del comando irc digitando al prompt:

$ irc -help

In recenti distribuzioni GNU/Linux, questo comando non è presente perchè sostituito con client IRC grafici come xchat o kvirc, o l'insuperabile bitchx per la console.

10.2.49. ispell

Per effettuare dei controlli ortografici è molto utile questo comando. Viene genericamente distribuito in diversi pacchetti divisi per le lingue disponibili. Buona scelta potrebbe essere installare i seguenti pacchetti software:

ispell (applicazione base)

iitalian (dizionario delle parole in italiano)

ibritish (dizionario delle parole in inglese)

iamerican (dizionario delle parole in americano)

Per configurare il correttore in prima istanza:

$ ispellconfig

Please wait while I search for ispell dictionaries...

[1] italian

[2] british

[3] american

Select the number of the default dictionary [1] INVIO

Making italian the default ispell dictionary... done.

Come verificare il funzionamento? Un semplice esempio può essere il seguente:

$ echo "laboratoio" | ispell -a

@(#) International Ispell Version 3.1.20 10/10/95

& laboratoio 1 0: laboratorio

L

10.2.50. last

Ogni accesso al vostro sistema GNU/Linux viene monitorato e memorizzato nel file /var/log/wtmp visualizzabile con qualsiasi editor di testi. Malgrado questo è possibile utilizzare il comando last appositamente studiato per l'azione. La forma per l'utilizzo è la seguente:

$ last

Per visualizzare al meglio il risultato del comando è consigliabile indicare il numero di righe nel seguente modo:

$ last -10

Alternativamente è possibile ridirigere l'output del comando a more (pagina 124)in modo di visualizzare il tutto una pagina alla volta. La forma è:

$ last|more

10.2.51. latex (LATEX)

Chi già conosce questo comando sarà conscio che la sua presenza in questa lista lo riduce notevolmente di valore. Non è assolutamente quello che l'autore desidera ottenere ma è vero che spesso un utente utilizza quest'ultimo in rare occasioni con limitate opzioni; questo è il caso in esame. Cos'è LATEX? E' un insieme di macro per la formattazione e produzione di documenti scritti in TEX. La modalità comune per elaborare un documento compatibile è la seguente:

$ latex documento.tex

Se l'esecuzione del comando termina con successo potrete notare nella stessa directory dove è presente "documento.tex" il nuovo file "documento.dvi" formato pronto per la stampa. Per visualizzarlo è possibile utilizzare l'applicazione xdvi (vedi pagina 141), per la conversione in altri formati fate riferimento ai comandi dvips (pagina 103) e dvipdfm (pagina 103). Desiderosi di provare? Ok, digitate:

$ vi documento.tex

Verrà aperto l'editor vi (pag. 139). Premere il tasto i per entrare in modalità inserimento e scrivere:

\documentclass{article}

\usepackage[T1]{fontenc}

\usepackage[latin1]{inputenc}

\begin{document}

Ciao Mondo!

\end{document}

Uscite e salvate premendo il tasto ESC e i caratteri ":wq!" ed eseguite le istruzioni già date per compilare il documento e visualizzarlo con il viewer GhostView (comando gv - pag. 111).

10.2.52. ldd

I sistemi del ceppo Unix (GNU/Linux compreso) hanno un'organizzazione ottimizzata degli esecutivi e le librerie necessarie per quest'ultime. Per vedere quali librerie sono utilizzate da un particolare comando:

# ldd /usr/bin/bitchx

libncurses.so.5 => /lib/libncurses.so.5 (0x40021000)

libresolv.so.2 => /lib/libresolv.so.2 (0x4005f000)

libcrypt.so.1 => /lib/libcrypt.so.1 (0x40071000)

libm.so.6 => /lib/libm.so.6 (0x4009e000)

libdl.so.2 => /lib/libdl.so.2 (0x400bc000)

libc.so.6 => /lib/libc.so.6 (0x400bf000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

In questo esempio, il comando bitchx (un client famoso per IRC) richiede le librerie indicate per essere eseguito.

10.2.53. ln

GNU/Linux permette di creare dei link ai file per una migliore gestione. Un link vi permette di dare ad un singolo file nomi multipli. I file nel sistema sono identificati da un proprio numero inode. Una directory è una lista di numeri inode con i corrispondenti nomi dei file. Esistono due tipi di link (collegamenti): hard link e link simbolici. Entrambi sono rappresentazioni di un file ma con particolari differenze. Analizziamo ora l'utilizzo e in seguito le differenze tecniche. Per creare un semplice link (hard link) digitiamo:

$ ln doc filelink

Con il comando appena digitato troveremo nella nostra directory due file che sono la medesima cosa: doc filelink. Modificare filelink vuol dire apportare delle variazioni a doc, il file di riferimento. Per creare un link simbolico è necessario aggiungere l'opzione "s" al nostro comando:

$ ln -s doc filelink2

Analizzando il contenuto della nostra directory troviamo ora, oltre a "filelink", "filelink2", il nuovo riferimento a "doc". L'approccio è il medesimo. Modificando "filelink2" apportiamo delle variazioni a "doc".

Differenze tra hard link e link simbolici

Un hard link è un collegamento al numero inode di un file. I permessi su questo tipo di file sono gli stessi del file originale. Un link simbolico a differenza del caso precedentemente esaminato è un "collegamento ad un nome di file" e non ad un numero inode. Questa forma offre maggiore flessibilità operativa nell'uso comune ed è la scelta largamente utilizzata. Il link simbolico ha permessi differenti dal file originale di riferimento.

10.2.54. locate

Questo comando è utile per trovare file nel sistema ma ha un comportamento diverso dal comando find analizzato a pagina 104. Quest'ultimo compie una ricerca nel sistema, mentre il secondo, locate (o slocate per distribuzioni recenti compatibili con Red Hat), analizza un file di testo indicizzato migliorando le prestazioni della ricerca e riducendo il carico delle risorse utilizzate. Il file indicizzato viene creato con un processo di cron (pagina 99) generalmente in orari notturni. Se l'utilizzo del vostro computer è quello comune e saltuario potreste saltare spesso l'esecuzione del processo di aggiornamento e in tal senso è possibile agire in modi differenti, modificando il file di esecuzione del processo o lanciando quest'ultimo manualmente. Con i dovuti diritti dell'utente root digitate:

# updatedb

Al termine dell'esecuzione del comando, la modalità di utilizzo del comando locate per qualsiasi utente del sistema è la seguente:

$ locate stdio.h

/usr/include/stdio.h

/usr/include/bits/stdio.h

/usr/include/lam/stdio.h

Se da un lato la ricerca con locate risulta molto più efficiente, l'efficacia nel trovare determinate cose è relativa alla fase di aggiornamento del file indicizzato. In tal senso il comando find può risultare la scelta migliore.

10.2.55. lpc

Tramite questo comando è possibile gestire le code di stampa. Salvo particolari configurazioni è necessario essere l'utente root per poter gestire il programma e le operazioni annesse sulla coda di stampa. La forma è la seguente:

# lpc

lpc>

Come si nota viene attivato il prompt del programma. Per avere l'elenco dei comandi disponibili digitate:

lpc> ?

Commands may be abbreviated. Commands are:

abort enable disable help restart status topq ?

clean exit down quit start stop up

Potete notare le diverse soluzioni disponibili per spostare file di stampa in cima alla coda, fermare i processi e altro ancora. Il comando che probabilmente può risultare utile nei casi reali per avere un monitor sui processi in corso è il seguente:

lpc> status

lp:

queuing is enabled

printing is enabled

1 entry in spool area

lp is ready and printing

lp0:

queuing is enabled

printing is enabled

no entries

no daemon present

Per ottenere informazioni in merito ai comandi disponibili bisogna anteporre la parola "help" al comando come segue:

lpc> help clean

clean remove cruft files from a queue

10.2.56. lpr

Questo comando serve per la stampa su un sistema BSD compatibile come GNU/Linux. Per lanciare il processo di stampa di un file, digitate:

$ lpr doc

Nell'esempio appena visto si lancia in stampa il file doc. Se si desidera stampare un file con una stampante specifica è necessario digitare quanto segue:

$ lpr -Pstampante doc

Nel caso comune le stampanti sono collegate alle porte parallele dei computer comuni ed è possibile sostituire il nome della stampante con la porta stessa alla quale è collegata:

$ lpr -Plpt1 doc

Dove lpt1 rappresenta la porta parallela, il dispositivo /dev/lpt1.

10.2.57. lprm

Questo comando rientra nell'attività di stampa per rimuovere i processi di stampa accodati. Esempio di utilizzo comune per rimuovere ogni cosa:

$ lprm

Se si desidera terminare un determinato processo è necessario digitare:

$ lprm 9

Verrà terminato il processo di stampa numero "9" tra tutti quelli attivi. Per conoscere le code di stampa relative ad ogni stampante fate riferimento al comando lpq, di seguito esposto.

10.2.58. lpq

Questo comando mostra le code di stampa, ovvero i documenti messi in file per essere stampati con ordine sequenziale. Digitate:

$ lpq

10.2.59. ls

Questo comando mostra il contenuto di una directory. Digitate:

$ ls

Nei sistemi unix esistono file visibili e file nascosti. Per nascondere un file è necessario rinominarlo con un punto davanti al nome (es. .file) e per poter visualizzarlo con il comando in questione bisogna utilizzare l'opzione seguente:

$ ls -a

.

..

.nomefile_nascosto

nomefile_visibile

Se si desidera visualizzare permessi, proprietari e dimensioni dei file digitate:

$ ls -l

.

..

drwxrwxrwx 2 darshan darshan 1024 Set 18 22:32 Documenti

-rw-rw-rw- 4 darshan darshan 2056 Set 20 21:50 nomefile_visibile

10.2.60. lsmod

E' un'utilità per il kernel di Linux che permette di visualizzare i moduli caricati in memoria.

# lsmod

Module Size Used by

bsd_comp 4100 0 (autoclean)

ppp_async 6476 1 (autoclean)

parport_pc 22448 1 (autoclean)

lp 4616 4 (autoclean)

parport 26720 1 (autoclean) [parport_pc lp]

rtc 6056 0 (autoclean)

nls_cp437 4340 3 (autoclean)

smbfs 29380 0 (unused)

mpu401 18800 0 (unused)

sb_lib 33832 0 (unused)

uart401 6512 0 [sb_lib]

sound 58624 0 [mpu401 sb_lib uart401]

nls_iso8859-1 2828 3

ppp_deflate 39164 0

ppp_generic 18496 6 [bsd_comp ppp_async ppp_deflate]

slhc 4468 0 [ppp_generic]

3c59x 22424 1

dummy 1216 0 (unused)

Altre utilità per la gestione dei moduli sono insmod (pag. 114), rmmod (pag. 130) e modprobe (pag. 123).

M

10.2.61. mail

Semplice programma da console per spedire e ricevere messaggi di posta. Digitate:

$ mail

Visualizza se c'è posta per l'utente.

$ mail -s "compito" -u madrid

Spedisce un messaggio di posta all'utente madrid con il soggetto "compito".

$ mail -f

Legge il contenuto della vostra casella postale.

10.2.62. man

Questo comando visualizza la pagina manuale di un comando ed è molto utile quando si vuole conoscere le opzioni relative. A titolo di esempio, visualizziamo la pagina manuale di un comando già citato precedentemente:

$ man ls

Esiste una pagina manuale per lo stesso comando man:

$ man man

Se non ricordate il nome del comando che vi serve a compiere una determinata operazione potete avvalervi dell'opzione "-k" nel seguente modo:

$ man -k parola

Verranno mostrate le pagine manuale che contengono la parola indicata.

10.2.63. mc

Midnight Commander, una interfaccia per navigare tra le directory e i file del sistema. Per eseguirlo:

$ mc

Nelle recenti distribuzioni di GNU/Linux, questo programma è associato a gmc, l'interfaccia grafica del programma per l'ambiente desktop GNOME.

10.2.64. md5sum

Un semplice caso di studio: vogliamo trasferire ad un'altra persona un file e vogliamo garantire la sua autenticità. Per fare questo possiamo utilizzare questo comando come segue:

$ md5sum nomefile.tgz

d41d8cd98f00b204e9800998ecf8427e nomefile.tgz

La stringa alfanumerica che viene presentata è "l'impronta digitale" del file che può essere confrontata con quella di chi fornisce il file e chi lo riceve. In questo modo semplice possiamo tutelarci che il file non abbia subito modifiche nel passaggio.

10.2.65. mesg

Gli utenti di un sistema possono interagire tra di loro attraverso diversi programmi via terminale. Potete disabilitare le richieste esterne digitando:

$ mesg n

Per riattivare in modalità "recettiva":

$ mesg y

10.2.66. modprobe

E' un'utilità per il kernel di Linux che permette di caricare i moduli in memoria attuando alcuni test per la configurazione automatica dei parametri necessari e adeguati.

# modprobe sound

Esistono alcune interessanti opzioni tra le quali segnaliamo:

# modprobe -c

per visulizzare le configurazioni dei moduli caricati.

# modprobe -l

per visualizzare i moduli disponibili.

# modprobe -r

per scaricare uno o più moduli rispettando le dipendenze. Altre utilità per la gestione dei moduli sono insmod(pag. 114), rmmod(pag. 130) e lsmod(pag. 121).

10.2.67. mkdir

Questo comando vi serve per creare una directory. La sintassi tipica è:

$ mkdir esempio

Il comando è particolarmente sensibile ai permessi di sistema. E' chiaro che non vi sarà concesso di creare una directory dove non avete i diritti per farlo.

10.2.68. mkisofs

Argomento masterizzazione: il comando in esame serve a creare immagini iso9660 e supporta diverse opzioni importanti per superare i limiti dell'originale file system come gli 8 livelli massimi di sottodirectory, la lunghezza dei nomi dei file ristretta a 32 caratteri e la capacità di 650 Mbyte. Le opzioni più importanti sono:

ã RockRidge (-r), estensione che permette la gestione dei nomi lunghi e non pone limite alla gerarchia di sotto-directory. Questa estensione, tipica del mondo Unix, permette di vedere il cdrom come una qualsiasi altra porzione del file system presentando proprietari dei file, gruppi, permessi e link simbolici.

ã Joilet (-J), estensione simile alla precedente ma tipica del mondo MS Windows.

ã El Torito (-b), estensione utile per produrre cd-rom avviabili (boot).

Un semplice esempio di funzionamento è il seguente:

# mkisofs -r -l -o immagine.iso dati/ Il file immagine.iso conterrà i dati della directory dati/ organizzati secondo il file system iso9660 e utilizzando l'estensione RockRidge. Una volta creata l'immagine possiamo testare il risultato montando il file come segue:

# mount -t iso9660 -o ro,loop=/dev/loop0 immagine.iso /mnt/cdrom

Il file immagine.iso verrà montata su /mnt/cdrom e sarà possibile gestire i file presenti. Al comando mkisofs seguono altri comandi come cdrecord (pag. 96) e cdrdao, programmi necessari per gestire e creare CD-R.

10.2.69. mkfs

Comando utile per creare file system su un dispositivo (partizione, disco fisso). Modalità di utilizzo:

mkfs <dispositivo> -t <tipo file system>

Di seguito alcuni esempi pratici:

# mkfs /dev/hda4 -t ext2

Creare il file system "ext2" (quello di GNU/Linux) sul dispositivo "/dev/hda4/".

# mkfs /dev/hda4 -t msdos

Creare il file system "msdos" (quello del DOS) sullo stesso dispositivo "/dev/hda4/".

# mkfs /dev/hda4 -t vfat32

Creare il file system "vfat32" (quello di MS Windows) sullo stesso dispositivo "/dev/hda4/". Se volessimo creare un file system su un comune dischetto floppy:

# mkfs /dev/fd0 -t ext2

10.2.70. more

Questo comando visualizza il contenuto di un file una schermata alla volta.

$ more file

Nonostante questo semplice esempio, il comando viene utilizzato in associazione con altri. L'esempio che segue legge l'output del comando ls e lo redirige al comando more per visualizzare il risultato una pagina per volta:

$ ls -la|more

Il simbolo "|" (pipe) viene utilizzato per passare il risultato di un comando al successivo.

10.2.71. mount

Questo comando serve a montare un file system. Nell'esempio che segue viene mostrato come montare un cd-rom con file system iso9660 alla directory /mnt/cdrom:

# mount /dev/cdrom -t iso9660 /mnt/cdrom

Le distribuzioni GNU/Linux memorizzano i dati utili per il montaggio nel file /etc/fstab per facilitare ed automatizzare le operazioni comuni. Se nel file appena citato è presente una riga di configurazione simile:

/dev/cdrom /mnt/cdrom iso9660 owner,noauto,ro 0 0

basterà utilizzare il comando mount con una serie ridotta di opzioni:

# mount /dev/cdrom

oppure

# mount /mnt/cdrom

Dopo aver digitato il comando potrete accedere al contenuto del vostro cd-rom. Si utilizza il comando mount per condividere aree file condivise in rete tramite il sistema NFS. La formulazione tipica può essere la seguente:

# mount monika:/mnt/nfs -t nfs /mnt/nfs

Dove si indica di montare la partizione /mnt/nfs presente sul server monika e disporla nel file system locale come /mnt/nfs. Chiaramente è necessaria la specifica configurazione lato server (pagina 18).

10.2.72. mpage

Se disponete di una stampante Postscript capace di stampare su entrambi i lati del foglio è possibile utilizzare questo comando.

$ mpage -t -1 -Plp -bA4 documento.ps

L'opzione "-1" indica il numero di stampe per pagina e possono alternativamente essere utilizzate le opzioni "-2", "-4" per avere 2 o 4 pagine per foglio.

10.2.73. mutt

Un semplice client per leggere la posta elettronica (MUA, mail user agent). Per lanciarlo:

$ mutt

Una semplice configurazione è quella che segue e deve essere inserita nel file ~/.muttrc nella propria home directory:

set pop_host="popmail.libero.it"

set pop_delete="yes"

set pop_user="pippo"

La prima direttiva indica il server postale, "pop_delete" indica se cancellare o meno la posta dal server remoto, "pop_user", come è semplice intuire indica il proprio username di connessione. Una volta aggiunti i propri dati nel file di configurazione basterà lanciare mutt e premere il tasto G e verrà contattato il server. Per le proprie caratteristiche non è possibile configurare un server SMTP esterno, differente dal proprio server locale di posta.

10.2.74. mv

Questo comando può avere una duplice funzionalità: muovere un file e rinominarlo. Nell'esempio che segue viene rinominato un file con un nuovo nome:

$ mv vecchionome nuovonome

Per muovere un file verso un'altra directory, digitate:

$ mv nuovonome ~/documenti/

In questo ultimo caso viene utilizzato il simbolo "~" che indica la directory home dell'utente. Il file viene spostato nella directory /home/darshan/documenti/.

N

10.2.75. nice

Serve a cambiare la modalità di esecuzione di un programma. Se viene lanciato senza opzioni viene presentata la priorità corrente:

$ nice

0

Nel caso in esame abbiamo ricevuto un valore pari a "0". I valori di priorità vanno da -20 (la più alta) a 19 (la più bassa). Se volessimo abbassare la priorità di esecuzione di un programma in modo che non disturbi le attività del sistema digitiamo:

$ nice -n 5 nomeprogramma

L'opzione "-n" mi permette di indicare un valore scelto nella scala esposta precedentemente.

10.2.76. nl

Se si desidera numerare ogni singola riga di un documento di testo questo è il comando che serve. Esistono diverse opzioni interessanti:

ã -v n definisce il numero iniziale per la numerazione

ã -i n stabilisce il valore di incremento della numerazione

ã -p non ricomincia la numerazione per ogni nuova pagina

Per numerare le righe di un documento partendo dal valore 1 e incrementando di una singola unità per volta dovremo digitare quanto segue:

$ nl -v 1 -l 1 doc.txt > doc2.txt

Il documento con la numerazione è stato ridiretto al file "doc2.txt".

10.2.77. nohup

Serve a lanciare un programma in particolari modalità. L'utilizzo di questo comando è particolarmente utile quando si deve eseguire un programma di calcolo e non lo si interrompere nel momento in cui vi disconnettete dal sistema (es. in una connessione telnet).

$ nohup nomeprogramma

nohup: appending output to 'nohup.out'

Il programma continuerà a girare in background ed eventuali messaggi saranno riportati nel file "nohup.out" creato nella directory corrente.

P

10.2.78. passwd

Questo comando serve per cambiare la propria password (parola d'ordine) necessaria per l'autenticazione nel sistema. Esistono due differenti livelli di utilizzo del comando, un livello ampliato e completo per l'utente root (l'amministratore di sistema) e un livello ristretto ma essenziale per il resto degli utenti nel sistema. Mentre un utente può utilizzare passwd per gestire la propria password, l'utente root può utilizzare il comando per gestire oltre alla propria password quelle degli utenti nel server amministrato. Il caso seguente è quello dell'utente "darshan":

$ passwd

Changing password for darshan

(current) UNIX password: *******

New UNIX password: ********

Retype new UNIX password: ********

Analizziamo ogni singolo passo. In un primo momento viene chiesta la password corrente, la parola d'ordine che attualmente ci permette di collegarci al sistema. Se quest'ultima corrisponde viene chiesto di digitare una nuova password con successiva verifica. Il comando è intelligente e cerca di colmare l'inesperienza di un nuovo utente o scelte incaute che possono compromettere la sicurezza del sistema. Le nuove password digitate vengono controllate e se non rispettano determinati parametri si riceve un messaggio di avviso che invita a seguire determinate norme. Una combinazione di numeri e lettere maiuscole/minuscole può essere una valida soluzione5. Esempio:

A3r0pLan0 , aeroplano

MaNuCha0 , manuchao

F3deRic0 , federico

10.2.79. patch

Il comando serve per applicare i file patch (creato con il comando patch) creato con le differenze tra un file e un file più recente. La modalità di utilizzo è la seguente:

$ patch -p0 < file-txt.patch

Per applicare patch binarie è necessaria la seguente opzione:

$ patch -binary -p0 < file-bin.patch

10.2.80. pico

Il seguente comando lancia un editor di testo semplice ed intuitivo, presente nel sistema se viene installato il pacchetto software pine. Per utilizzarlo:

$ pico

Per poter salvare il file editato premere contemporaneamente i tasti CTRL e X , oppure CTRL e O . Un'alternativa GPL di questo editor è nano che aggiunge nuove funzionalità anche se consiglio l'utilizzo del rudimentale ma potente editor vi.

10.2.81. pr

Questo comando serve per preparare un file per la stampa. La forma di utilizzo è la seguente:

$ pr doc.txt

Il file "doc.txt" verrà formattato con una lunghezza di 66 righe (numero per la lunghezza configurabile a piacimento) e i dati relativi al file (data, ora, nome, numero di pagina).

10.2.82. ps

Riporta lo stato dei processi attivi nel sistema e si utilizza nel seguente modo:

$ ps

PID TTY TIME CMD

648 pts/2 00:00:00 bash

5CentralNic (Internet domain name registry) ha commissionato uno studio su una base campionaria di 1.200 impiegati sull'utilizzo delle password in ambienti lavorativi. E' emersa una classe dominante di parole e questa è legata alla "famiglia", nomi di parenti, del proprio partner o animali domestici. Al seguito vi è la classe "divertimento" con parole legate al mondo della musica (i cantanti preferiti) o dello spettacolo (alta frequenza per gli attori o i personaggi in voga nell'anno corrente). Le persone che risultano maggiormente consapevoli del problema sicurezza e che usano password molto complesse risulterebbero una classe inferiore al 9% del totale. Ulteriore informazione emersa è stata la modalità più frequente di attacco da parte di un cracker, la simulazione di problemi tecnici e la richiesta della password utente per l'assistenza.

649 pts/2 00:00:00 ps

Nell'uso comune è frequente utilizzare il comando con le seguenti opzioni:

$ ps afx

Dove la lettera "a" mostra i processi degli altri utenti collegati al sistema, la lettera "f" la sequenza dei processi attivi organizzata in una struttura ad albero e la lettera "x" che mostra i processi senza terminali di controllo.

10.2.83. pstree

Questo comando ha un funzionamento molto simile a ps ma rappresenta i processi attivi in un alberatura particolare. Digitate:

$ pstree -n

init-+-kflushd

|-kupdate

|-kpiod

|-kswapd

|-mdrecoveryd

|-syslogd

|-klogd

|-xfs

|-login---bash

|-5*[mingetty]

|-gdm-+-X

| '-gdm---Default---gnome-session

|-esd

|-gnome-smproxy

|-sawfish

|-xscreensaver

|-gmc

|-panel

|-gnome-terminal-+-gnome-pty-helper

| '-bash---pstree

|-gnome-name-serv

|-tasklist_applet

|-rpciod

'-gv---gs

10.2.84. pwd

Questo comando vi indica la posizione attuale nel file system:

$ pwd

/home/darshan/

R

10.2.85. rdate

Volete avere l'ora di sistema sincronizzata con il resto del mondo? :) Bene. In questa operazione vi potrà essere utile il comando seguente:

# rdate -sp tempo.cstv.to.cnr.it

che si collegherà al server indicato e cambierà l'ora di sistema sincronizzandola con quella riscontrata. Se volete successivamente trattenere l'ora per le future sessioni digitate:

# hwclock --systohc &

Per ulteriori informazioni su hwclock andate a pagina 113.

10.2.86. reboot

Comando necessario per riavviare il sistema. Una volta lanciato compierà diverse operazioni volte a interrompere i servizi attivi, disabilitare i dispositivi che compongono il file system e riavviare il computer.

# reboot

10.2.87. rm

Questo comando rimuove un file in maniera permanente. Nell'esempio che segue viene mostrata la modalità interattiva ottenuta con l'opzione "-i":

$ rm -i file

La modalità forzata agisce in maniera inversa. Elimina il file senza chiedere conferma preventiva:

$ rm -f file

Se si desidera cancellare una directory e i file in essa contenuti è necessario utilizzare l'opzione "-r" (recursive) nel seguente modo:

$ rm -fr documenti/

10.2.88. rmmod

E' un'utilità per il kernel di Linux che permette di rimuovere i moduli caricati in memoria.

# rmmod sound

Per rimuovere tutti i moduli caricati è necessario utilizzare l'opzione "-a" come segue:

# rmmod -a

Altre utilità per la gestione dei moduli sono insmod(pag. 114), modprobe(pag. 123) e lsmod(pag.

121).

10.2.89. route

Questo comando serve per gestire la tavola di IP routing (networking). Per verificare i parametri di routing definiti digitate:

# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

Per aggiungere un gateway di riferimento per la macchina la sintassi è la seguente:

# route add default gw 192.168.0.3

per aggiungere un indirizzo da rifiutare:

# route add -host server.it reject

L'argomento considerato è alquanto complesso e può essere fuorviante per il target di utenti al quale si propone il manuale. Con tale motivazione non si vuole insistere sulla cosa in maniera eccessiva ma è altresì possibile ampliare le proprie conoscenze nella numerosa documentazione esterna presente su Internet.

10.2.90. rpm

Questo comando è lo strumento di gestione dei pacchetti software caratteristico della distribuzione Linux Red Hat. Questo comando gestisce i pacchetti software organizzati secondo le specifiche del formato che vengono indicati comunemente con l'estensione ".rpm". Analizziamo le varie opzioni:

# rpm -i nomefile.rpm

Il comando installa un pacchetto software nel sistema.

# rpm -U nomefile.rpm

Il comando aggiorna un pacchetto software nel sistema.

# rpm -e nomefile

Il comando rimuove il software dal sistema.

# rpm -qf esempio.txt

Il comando esamina quale pacchetto software conteneva il file esempio.txt.

# rpm -qa

Il comando elenca i pacchetti software installati sul proprio sistema. Nelle fasi di installazione e aggiornamento possono essere utilizzate ulteriori opzioni che informano sullo stato di esecuzione del processo e mostrano una barra di progresso.

# rpm -ivh nomefile.rpm

nomefile ############################

# rpm -Uvh nomefile.rpm

nomefile ############################

In casi particolari può capitare che il pacchetto che si desidera installare subisca particolari vincoli di dipendenza verso altri software. Se vogliamo sopprimere questi ultimi digitiamo:

# rpm -i nomefile.rpm --nodeps

Una scelta particolarmente orientata ad un utente esperto può anche essere la seguente:

# rpm -i nomefile.rpm --force

Il comando digitato forza l'installazione senza controlli preventivi dei pacchetti esistenti o sui vincoli di dipendenza. Un'ulteriore necessità può essere quella di conoscere ogni possibile informazione sul pacchetto software che ci si approssima ad installare nel proprio sistema. Per questo è necessario digitare quando segue:

# rpm -qpil geekcode-1.7-2.i386.rpm

Name : geekcode Relocations: /usr

Version : 1.7 Vendor: Chris Gushue

Release : 2 Build Date: mar 22 feb 2000 15:59:14

Install date: (not installed) Build Host: DeepThought.prefect.net

Group : Amusements/Games Source RPM: geekcode-1.7-2.src.rpm

Size : 159494 License: GPL

Packager : Chris Ausbrooks <weed@bucket.pp.ualr.edu>

URL : http://seymour.lazygenes.net/geekcode.html

Summary : Generates your geek code.

Description :

This program will generate a geek code block for you by simply

choosing which codes suit you from the screen.

/usr/bin/geekcode

/usr/doc/geekcode-1.7

/usr/doc/geekcode-1.7/CHANGES

/usr/doc/geekcode-1.7/COPYING

/usr/doc/geekcode-1.7/INSTALL

/usr/doc/geekcode-1.7/README

/usr/doc/geekcode-1.7/geekcode.txt

10.2.91. rpm2cpio

Se desiderate convertire un pacchetto software in formato ".rpm" in un archivio comune ".cpio" questo è quello che vi serve. La forma tipica è la seguente:

# rpm2cpio nomefile.rpm > archivio.cpio

Per estrarre successivamente l'archivio creato fate riferimento al comando cpio (pagina 99).

10.2.92. rsync

Se è vostra necessità replicare un direttorio sul vostro filesystem o viceversa, può esservi utile il seguente comando:

$ rsync -avz --exclude pippo.* --delete <server>:/web/ web/

In questo modo copierete nella directory "web/" il contenuto della directory "/web/" del server indicato escludendo tutti i file che iniziano con "pippo." e cancellando i file locali che non esistono più sulla macchina remota.

S

10.2.93. scp

Secure copy, un programma utile per copiare file tra macchine in rete e giovare della protezione cifrata di ssh. La modalità di utilizzo è la seguente:

$ scp file.tgz madrid@server.com:

copia il file locale "file.tgz" nella macchina "server.com" dove ho un account con username "madrid". Per copiare effettivamente il file su quella macchina verrà richiesta la password di autenticazione relativa.

10.2.94. set

Questo comando mostra le variabili di ambiente della vostra sessione:

$ set

Il comando set ha la medesima funzionalità del comando env.

10.2.95. shutdown

Questo comando prepara il sistema per essere spento fisicamente e permette opzioni anche per il riavvio. Presenta analogie con il comando halt (pagina 111) ma porta ulteriori opzioni relative al riavvio del computer. La forma tipica è la seguente:

# shutdown -r now

L'opzione "-r" sottointende reboot, riavvio; era possibile utilizzare anche l'opzione "-h" che sottointende a halt, ferma. E' cosa gentile preavvisare gli eventuali utenti collegati al sistema e dare loro il tempo per concludere le operazioni in corso. Digitando:

# shutdown -r +1 "Riavvio della macchina"

Lanciamo l'interruzione del sistema con 1 minuto di attesa e un messaggio di avviso per gli utenti collegati.

10.2.96. slattach

Questo comando provvede a creare un collegamento tra un'interfaccia di rete e una linea seriale in maniera molto semplice. La modalità d'uso:

$ slattach -p cslip -s 38400 ttyS1

Nell'esempio si collega un'interfaccia di rete alla porta seriale "ttyS1", con la velocità di trasferimento di "38400" e utilizzando il protocollo "cslip". Per maggiori informazioni consultare la guida in linea:

$ man slattach

10.2.97. slocate

Le modalità di funzionamento di questo comando sono simili a quelle di locate (pagina 118). Differenza che contraddistingue i due comandi è una maggiore sicurezza per slocate nella rappresentazione della ricerca. Quest'ultima infatti mostrerà unicamente i file accessibili (in termini di diritti) dagli utenti del sistema. La modalità di utilizzo è la seguente:

$ slocate nomefile

10.2.98. source

Il comando è parte dei comandi integrati all'interno della shell bash ed è particolarmente utile se si vuole modificare un file di configurazione e ricaricarlo senza dover uscire dal sistema e loggarsi nuovamente. Un esempio chiarisce più di cento parole:

# source ~/.bashrc

immaginiamo la situazione: abbiamo apportato modifiche al file ~/.bashrc presente nella nostra HOME directory e relativo alle configurazioni personali della nostra shell bash dei comandi. Per poter disporre subito dei cambiamenti fatti possiamo digitare il comando come illustrato oppure uscire dal sistema ed entrare nuovamente.

10.2.99. split

Questo comando è utile quando si desidera dividere un file con dimensioni elevate in varie parti. Digitate:

$ split -b 1m moni.tif

In questo caso il file "moni.tif" verrà diviso in vari file della dimensione di 1 Mbyte i quali saranno nominati con una sequenza di lettere per determinare l'ordine. Per riottenere il nostro file è necessario digitare:

$ cat xaa xab xac > moni.tif

Il file originale sarà ripristinato.

10.2.100. ssh

Utilizzare telnet (pagina 136) per connessioni remote può compromettere la propria sicurezza trasferendo dati in chiaro. A questo viene incontro il client ssh che instaura una connessione sicura tra due macchine in rete crittando la trasmissione dei dati. La forma tipica di utilizzo è la seguente:

$ ssh -l nomeutente nomeserver

L'utilizzo del client prevede l'esistenza del demone sshd (lato server) attivo e configurato per accettare le connessioni di questo tipo.

10.2.101. su

Questo comando serve per cambiare la propria modalità utente in una diversa o quella relativa all'utente root. Digitate:

$ su -

Password: *******

[root@dada /root]#

L'opzione "-" attiva la configurazione della shell dell'utente indicato. In ogni caso è richiesta la password tranne per il passaggio da utente root a utente normale per ovvie ragioni.

T

10.2.102. talk

Questo comando vi permette di comunicare con altri utenti presenti sul vostro server o collegati a server remoti nella vostra rete locale o su Internet. Se desiderate parlare con l'utente madrid è necessario digitare quanto segue:

$ talk madrid@localhost

Nell'esempio appena visto si sottointende che l'utente "madrid" sia presente e collegato al nostro server. Per conoscere queste informazioni fate riferimento al comando ps che vi permette inoltre di conoscere l'interfaccia utilizzata dall'utente nel sistema ed utilizzarla come alternativa al suo nome:

$ talk pts/2

Nell'esempio che segue viene illustrato l'utilizzo del comando utilizzando la forma utente@dominio che in questo caso è la macchina locale:

$ talk madrid@localhost

Il nome dominio è "localhost", genericamente inteso come il server locale sul quale vi siete collegati. Se disponete di un server collegato ad Internet e desiderate chiamare un vostro amico collegato su un altro server in rete è necessario specificare un dominio con la denominazione tipica della rete:

$ talk madrid@erlug.linux.it

Se l'utente chiamato accetta la chiamata potrete dialogare direttamente con lui e scambiarvi dati in modalità testo.

 

10.2.103. tar

Questo comando serve per archiviare un insieme di file in un solo file e viene utilizzato nel seguente modo:

$ tar -c archivio.tar Directory/

Nell'uso quotidiano il file archivio viene spesso compresso utilizzando sempre lo stesso carattere ma con opzioni aggiuntive:

$ tar -zcvf archivio.tar.gz Directory/

Nell'esempio appena visto si utilizza l'opzione "z" per la compressione dei dati tramite gzip, l'opzione "c" che indica la creazione di un archivio, l'opzione "v" (verbose) per visualizzare i messaggi di esecuzione e l'opzione "f" per definire il nome del file archivio. L'estensione ".tar" è puramente indicativa. Se si volesse creare un archivio multivolume utilizzando dei floppy-disk HD, digitate:

$ tar -cvfM /dev/fd0H1440 archivio/

L'opzione "M" creerà vari volumi a seconda della situazione. Per riunire i vari multivolumi è necessario utilizzare il comando cat nel seguente modo:

$ cat 1.tar 2.tar > archivio.tar.gz

Per scompattare il file creato è necessario digitare:

$ tar -zxvf archivio.tar.gz

oppure con

$ tar -xvf archivio.tar

Se l'archivio non è compresso gzip.

10.2.104. tcpdchk

Questo comando controlla la configurazione di TCP_WRAPPER e vi segnala eventuali configurazioni errate. Digitate:

# tcpdchk

Se vengono riscontrati errori è necessario modificare i file /etc/hosts.deny e /etc/hosts.allow.

10.2.105. tcpdump

Utile comando per monitorare una interfaccia di rete nel sistema locale.

# tcpdump -i eth0

E' un sistema molto rudimentale e può essere sostituito con strumenti di analisi molto più gradevoli come ethereal.

10.2.106. telnet

Se c'è un programma storico questo è senza dubbio telnet, un programma che permette di gestire connessioni remote ad un altro server per amministrarlo ed eseguire programmi. Per poterlo utilizzare è chiaramente necessario avere un accesso sul server interessato:

$ telnet

telnet>

Per conoscere l'insieme delle opzioni presenti digitare "help":

telnet> help

Per aprire una connessione ad un server:

telnet> open nomeserver

Per chiudere una connessione:

telnet> close

Utilizzando una forma compatta:

$ telnet -l utente nomeserver

Per effettuare una connessione sicura, crittata con particolari algoritmi, si consiglia l'utilizzo di

ssh (pagina 134).

10.2.107. top

L'utilizzo di questa applicazione è utile se si intende monitorare il carico del processore e visualizzare i processi attivi. Digitate il comando nel seguente modo:

$ top

e successivamente apparirà quanto segue:

6:32pm up 1:16, 2 users, load average: 0.15, 0.11, 0.09

46 processes: 44 sleeping, 2 running, 0 zombie, 0 stopped

CPU states: 6.4% user, 3.6% system, 0.0% nice, 89.8% idle

Mem: 95504K av, 63940K used, 31564K free, 47496K shrd, 4964K buff

Swap: 60476K av, 0K used, 60476K free 34156K cached

PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND

573 root 15 0 8784 8784 1656 R 0 5.2 9.1 3:54 X

641 root 9 0 1040 1040 836 R 0 2.7 1.0 0:01 top

631 root 4 0 3392 3392 2656 S 0 1.7 3.5 0:01 gnome-terminal

577 root 1 0 1324 1324 1008 S 0 0.3 1.3 0:02 fvwm2

4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kpiod

...

Per uscire premete contemporaneamente i tasti CTRL e C .

10.2.108. tr

Questo comando agisce sullo standard input per tradurre, copiare, cambiare quest'ultimo e riportare il risultato sullo standard output.

Nota Conoscevo già il comando ma durante il Linux Meeting6 7, il professor Roberto Di Cosmo durante il suo intervento ha presentato un "utilizzo" interessante del comando. Il suo obbiettivo era dimostrare quante informazioni personali circolassero in un singolo documento .doc (scritto con MS Word). Il documento mostrava all'apertura pochissime banali stringhe di testo eppure la dimensione finale del documento era di 22k, cioè avrebbe dovuto contenere circa 22 mila caratteri, cosa del tutto falsa. Inizialmente Di Cosmo ha mostrato in semplice analisi una visualizzazione "cruda" del documento tramite il comando:

$ cat prova.doc

Le informazioni comparse erano eccessive e la seguente sequenza di comandi ha operato per eliminare almeno gli spazi spazio(blank) presenti e altri caratteri non significativi presenti nel documento:

$ tr -s '\000"' < prova.doc |tr -d '[:cntrl:]' > prova.txt

La successiva visualizzazione del documento elaborato

$ cat prova.txt

ha pubblicamente dimostrato che in un documento di questo formato circolano informazioni come MAC address, codici identificativi, porzioni di testo scritto e cancellato nel documento e altro ancora. Pensate a quale valenza possono avere determinate soluzioni di sicurezza se alla fine circolano documenti in questo formato. Nessuna!

U

10.2.109. uname

Questo comando è utile se si desidera avere un quadro generale sulle caratteristiche del computer e conoscere alcune importanti informazioni di sistema. La forma rapida e comune di utilizzo è la seguente:

$ uname -a

Linux dada 2.2.14-5.0 #1 Tue Mar 7 21:07:54 EDT 2000 i686 unknown

Dove l'opzione "-a" indica di rappresentare tutte le informazioni disponibili.

10.2.110. umount

Questo comando compie una operazione inversa al comando mount (pagina 125), ovvero smonta il file system aggiunto. Riprendendo l'esempio del cd-rom:

# umount /mnt/cdrom

6Bologna, 28/29 Ottobre 2000

7Linux Meeting - http://www.linuxmeeting.net

Comandi per l'editor vi

Sintassi Azione

:q! uscire senza salvare

:w salvare il contenuto

:wq salvare il contenuto e uscire

:help consultare la guida programma

:+n spostarsi alla riga n (numero)

:s/old/new/g sostituzione di una parola (da old a new)

:r file inserire il file nel testo aperto

:r! comando eseguire un comando di sistema

:mkv per salvare le proprie opzioni dell'editor

Comandi aggiuntivi dell'editor vim

Sintassi Azione

:syntax on syntax highlighting attivo

:set syntax=html configura il syntax highlighting per html

Tabella 10.1.: Comandi per l'editor vi

Per svolgere l'operazione è necessario essere in una directory differente da quelle presenti nel file system che si desidera smontare.

V

10.2.111. vi / vim

Questo comando lancia un editor di testo molto diffuso nella famiglia dei sistemi operativi Unix. Per creare un nuovo file, digitate:

$ vi pippo.txt

E' sicuramente un editor minimale nella propria interfaccia ma allo stesso tempo molto potente. I comandi presentati nella tabella 10.1 riassumono le combinazioni di tasti per le operazioni più frequenti.

10.2.112. vlock

Questo comando blocca la console testo. Serve per proteggere ogni intrusione locale al vostro sistema. Per attivarlo è necessario essere in modalità console testo e digitare:

$ vlock

This TTY is now locked.

Use Atl-function keys to switch to other virtual consoles.

Please enter the password to unlock.

darshan's Password:

Per togliere la protezione è necessario digitare la propria password. Se l'ambiente è quello grafico del Server X un comando analogo è xlock (pagina 141). 13910. Pratica

Z

10.2.113. zip

Questo comando serve a comprimere un file. Per comprimere un file è necessario digitare:

$ zip file.zip racconto.txt

Il file "racconto.txt" verrà compresso e verrà rinominato come "file.zip". Per scompattare il file presente è necessario utilizzare il comando unzip:

$ unzip file.zip

W

10.2.114. wc

Questo comando serve per conoscere dati relativi ad un file di testo:

$ wc documento.txt

Verrà presentata una serie di informazioni, selezionabili con le seguenti opzioni:

-c per ottenere solo il numero dei caratteri

-w per ottenere solo il numero delle parole

-l per ottenere solamente il numero delle righe presenti

Digitando:

$ wc -w documento.txt

560 documento.txt

otteniamo il numero di parole presenti nel file.

10.2.115. whatis

Questo comando serve a ricercare la descrizione per ogni comando indicizzando la pagine manuale. Se desiderate avere la descrizione del comando ls digitate:

$ whatis ls

Verrà presentata una breve descrizione. Se dovesse apparire un messaggio del tipo:

ls: nothing appropriate

E' necessario eseguire da amministratore il comando makewhatis per creare l'indice delle descrizioni. Un comando analogo a whatis è apropos (pagina 92).

10.2.116. write

Questo comando permette di mandare messaggi ad un determinato utente collegato sul server locale. A differenza del comando talk, la comunicazione in questo caso è unidirezionale. Per utilizzarlo è necessario digitare il comando e il nome dell'utente di riferimento (nell'esempio seguente l'utente madrid), premere il tasto INVIO e scrivere il proprio messaggio da riportare:

$ write madrid

Questo è un messaggio di esempio

Se l'utente "madrid" è collegato al server locale riceverà quanto segue:

Message from darshan@dada on pts/3 at 03:46 ...

Questo è un messaggio di esempio

10.2.117. who

Attraverso questo comando è possibile avere informazioni sugli utenti connessi al sistema. La sintassi di utilizzo è la seguente:

$ who

root tty1 Nov 8 15:02

root tty2 Nov 8 16:00

X

10.2.118. xdvi

Applicazione per l'ambiente XWindow. Permette di visualizzare un file con estensione .dvi. Digitate:

$ xdvi documento.dvi

Per maggiori informazioni relative al formato file andate a pagina 117.

10.2.119. xlock

Questo comando vi permette di bloccare lo schermo e le vostre attività da intrusioni altrui. Il concetto è simile a quello visto per vlock (pagina 139) in modalità console testo. Per attivare questa protezione è necessario digitare:

$ xlock

10.2.120. xset

Utilità per aggiungere parametri aggiunti al Server X senza riavviarlo. Nell'esempio che segue gestiamo i font path, i percorsi dove sono disposti i caratteri.

$ xset fp+ /usr/X11R6/lib/fonts/directory/

Per rimuovere un percorso:

$ xset fp- /usr/X11R6/lib/fonts/directory/

10.2.121. xsetpointer

Applicazione per l'ambiente X Window. Questo comando permette di mostrare e configurare strumenti di puntamento per l'ambiente grafico. I puntatori devono essere precedentemente configurati nel file di configurazione XF86Config:

$ xsetpointer -l

"keyboard" [XKeyboard]

"pointer" [Xpointer]

"wacom" [wacom]

Nell'esempio appena visto l'opzione "-l" ci elenca i puntatori configurati. Se decidiamo di cambiare il puntatore dal mouse comune alla tavoletta grafica presente digitiamo:

$ xsetpointer wacom

10.2.122. xsetroot

Applicazione per l'ambiente X Window. Permette di configurare lo sfondo dell'ambiente utilizzando immagini (in formato .bmp) e colori solidi:

$ xsetroot -solid blue

Il comando appena digitato imposta il colore blu come colore di sfondo.

10.2.123. xterm

Applicazione per l'ambiente X Window. Rappresenta uno dei terminali maggiormente utilizzati e supporta un'ampia serie di emulazioni terminale.

$ xterm

Se desideriamo configurare maggiormente questa applicazione possiamo aggiungere delle opzioni sulla riga di comando:

$ xterm -rightbar -bg white -fg black

In questo modo lanciamo xterm con la barra di scorrimento sulla destra e con caratteri neri su sfondo bianco. Premendo contemporaneamente il tasto sinistro (o il tasto destro) del mouse e il pulsante CTRL compariranno dei menu descrittivi per rapide configurazioni del programma.

 

10.2.124. xvidtune

Applicazione per l'ambiente X Window. Permette di configurare le frequenze video del monitor e operare sulla centratura:

# xvidtune