Unix non è un sistema operativo unico, come molti potrebbero pensare, bensì è una grande famiglia di sistemi operativi (come ad esempio FreeBSD, NetBSD, OpenBSD, BSD, AIX, System V, SunOS, varie distribuzioni di Linux, ecc.), aventi comandi e caratteristiche simili e disponibili per molte architetture hardware (come ad esempio x86, alpha, ecc.).
Nella tabella che segue vengono riassunti i comandi maggiormente usati su un sistema Unix. In questa tabella, come in generale avviene, per molti comandi Unix,
file può essere un nome di file, una lista di nomi di file o input/output che potrebbe essere rediretto per o dal comando.
ls: «list»
Elenca i file contenuti in una directory. Segue la descrizione di alcuni esempi.
-
$
ls
[Invio]
Elenca il contenuto della directory corrente.
-
$
ls -l *.doc
[Invio]
Elenca tutti i file che terminano con il suffisso .doc
che si trovano nella directory corrente. L'elenco contiene più dettagli sui file essendoci l'opzione -l
cd: «change directory»
Cambia la directory corrente. Segue la descrizione di alcuni esempi.
-
$
cd /tmp
[Invio]
Cambia la directory corrente, facendola diventare /tmp/
.
-
$
cd ciao
[Invio]
Cambia la directory corrente, spostandosi nella directory ciao/
che discende da quella corrente.
-
$
cd ~
[Invio]
Cambia la directory corrente, spostandosi nella directory personale dell'utente.
-
$
cd ~daniele
[Invio]
Cambia la directory corrente, spostandosi nella directory personale dell'utente daniele.
mkdir: «make directory»
mkdir [opzioni] directory... |
Crea una directory. Segue la descrizione di alcuni esempi.
cp: «copy»
cp [opzioni] origine... destinazione |
Copia uno o più file (incluse le directory) in un'unica destinazione.
La copia in un sistema Unix non funziona come nei sistemi Dos e ciò principalmente a causa di due fattori: i caratteri jolly (ovvero il file globbing) vengono risolti dalla shell prima dell'esecuzione del comando e i file system Unix possono utilizzare i collegamenti simbolici.
|
Se vengono specificati solo i nomi di due file normali, il primo viene copiato sul secondo, viene cioè generata una copia che ha il nome indicato come destinazione. Se il secondo nome indicato è una directory, il file viene copiato nella directory con lo stesso nome di origine. Se vengono indicati più file, l'ultimo nome
deve essere una directory, all'interno della quale vengono generate le copie di tutti i file indicati. Di conseguenza, quando si utilizzano i caratteri jolly, la destinazione deve essere una directory. In mancanza di altre indicazioni attraverso l'uso di opzioni adeguate, le directory non vengono copiate.
Chi conosce il Dos potrebbe essere abituato a usare il comando COPY per copiare un gruppo di file in un altro gruppo di file con i nomi leggermente modificati, come in questo esempio: COPY *.bak *.doc. Con i sistemi Unix, questo tipo di approccio non può funzionare. |
I file elencati nell'origine potrebbero essere in realtà dei collegamenti simbolici. Se non viene specificato diversamente attraverso l'uso delle opzioni, questi vengono copiati così come se fossero file normali; cioè la copia è ottenuta a partire dai file originali e non si ottiene quindi una copia dei collegamenti.
Opzione | Descrizione |
-a | Equivalente a -dpR, utile per l'archiviazione o comunque per la copia di collegamenti simbolici così come sono. |
-d | Copia i collegamenti simbolici mantenendoli come tali, invece di copiare il file a cui i collegamenti si riferiscono. |
-f | Sovrascrittura forzata dei file di destinazione. |
-l | Crea un collegamento fisico invece di copiare i file. |
-p | Mantiene le proprietà e i permessi originali. |
-r | Copia file e directory in modo ricorsivo (includendo le sottodirectory), considerando tutto ciò che non è una directory come un file normale. |
-R | Copia file e directory in modo ricorsivo (includendo le sottodirectory). |
|
Segue la descrizione di alcuni esempi.
-
$
cp -r /test/* ~/prova
[Invio]
Copia il contenuto della directory /test/
in ~/prova/
copiando anche eventuali sottodirectory contenute in /test/
.
Se ~/prova esiste già e non si tratta di una directory, questo file viene sovrascritto, perdendo quindi il suo contenuto originale. |
-
$
cp -r /test ~/prova
[Invio]
Copia la directory /test/
in ~/prova/
(attaccando test/
a ~/prova/
) copiando anche eventuali sottodirectory contenute in /test/
.
-
$
cp -dpR /test ~/prova
[Invio]
Copia la directory /test/
in ~/prova/
(attaccando test/
a ~/prova/
) copiando anche eventuali sottodirectory contenute in /test/
, mantenendo inalterati i permessi e riproducendo i collegamenti simbolici eventuali.
ln: «link»
ln [opzioni] origine... destinazione |
Crea uno o più collegamenti di file (incluse le directory) in un'unica destinazione.
La creazione di un collegamento è un'azione simile a quella della copia. Di conseguenza valgono le stesse considerazioni fatte in occasione del comando cp per quanto riguarda la differenza di comportamento che c'è tra Unix e Dos. |
Se vengono specificati solo i nomi di due file normali, il secondo diventa il collegamento del primo. Se il secondo nome indicato è una directory, al suo interno vengono creati altrettanti collegamenti quanti sono i file e le directory indicati come origine. I nomi utilizzati sono gli stessi di quelli di origine. Se vengono indicati più file, l'ultimo nome
deve corrispondere a una directory.
È ammissibile la creazione di collegamenti che fanno riferimento ad altri collegamenti.
Se ne possono creare di due tipi: collegamenti fisici e collegamenti simbolici. Questi ultimi sono da preferire (a meno che ci siano delle ragioni per utilizzare dei collegamenti fisici). Se non viene richiesto diversamente attraverso le opzioni, si generano dei collegamenti fisici invece che i consueti collegamenti simbolici.
Opzione | Descrizione |
-s | Crea un collegamento simbolico. |
-f | Sovrascrittura forzata dei file o dei collegamenti già esistenti nella destinazione. |
|
Segue la descrizione di alcuni esempi.
rm: «remove»
Rimuove i file indicati come argomento. In mancanza dell'indicazione delle opzioni necessarie, non vengono rimosse le directory.
Opzione | Descrizione |
-r -R | Rimuove il contenuto delle directory in modo ricorsivo. |
|
Segue la descrizione di alcuni esempi.
-
$
rm prova
[Invio]
Elimina il file prova
.
-
$
rm ./-r
[Invio]
Elimina il file -r
che inizia il suo nome con un trattino, senza confondersi con l'opzione -r (ricorsione).
-
$
rm -r ~/varie
[Invio]
Elimina la directory varie/
che risiede nella directory personale, insieme a tutte le sue sottodirectory eventuali.
Si faccia attenzione al comando seguente:
#
rm -r .*
[Invio]
Questo comando elimina tutti i file e le directory a partire dalla directory genitrice! Si osservi che se la directory corrente discende immediatamente dalla directory radice, significa cancellare tutta la gerarchia.
Questo è comunque un errore tipico di chi vuole cancellare tutte le directory nascoste (cioè quelle che iniziano con un punto) contenute nella directory corrente. Il disastro avviene perché nei sistemi Unix,
.* rappresenta anche la directory corrente (
.
) e la directory precedente o genitrice (
..
). In alternativa, onde evitare disguidi, conviene piuttosto un comando come quello seguente, con cui si è certi di intervenire solo su nomi che sono lunghi almeno tre caratteri complessivi (punto compreso):
#
rm -r .??*
[Invio]
mv: «move»
mv [opzioni] origine... destinazione |
Sposta i file e le directory. Se vengono specificati solo i nomi di due elementi (file o directory), il primo viene spostato e rinominato in modo da ottenere quanto indicato come destinazione. Se si indicano più elementi (file o directory), l'ultimo attributo
deve essere una directory, all'interno della quale si spostano tutti gli elementi elencati. Nel caso di spostamenti attraverso file system differenti, vengono spostati solo i cosiddetti file normali (quindi: niente collegamenti e niente directory).
Nei sistemi Unix non esiste la possibilità di rinominare un file o una directory semplicemente come avviene nel Dos. Per cambiare un nome occorre spostarlo. Questo fatto ha poi delle implicazioni nella gestione dei permessi delle directory. |
Segue la descrizione di alcuni esempi.
-
$
mv prova prova1
[Invio]
Cambia il nome del file (o della directory) prova
in prova1
.
-
$
mv * /tmp
[Invio]
sposta, all'interno di /tmp/
, tutti i file e le directory che si trovano nella directory corrente.
cat: «concatenate»
Concatena dei file e ne emette il contenuto attraverso lo standard output. Il comando emette di seguito i file indicati come argomento attraverso lo standard output (sullo schermo), in pratica qualcosa di simile al comando
TYPE del Dos. Se non viene fornito il nome di alcun file, viene utilizzato lo standard input. Segue la descrizione di alcuni esempi.
Comparazione tra alcuni comandi Dos e gli equivalenti per GNU/Linux attraverso degli esempi.
Dos | GNU/Linux |
DIR | ls -l |
DIR /W | ls |
MD PIPPO | mkdir pippo |
CD PIPPO | cd pippo |
RD PIPPO | rmdir pippo |
COPY *.* \PROVA | cp * /prova |
XCOPY *.* \PROVA /E /S | cp -dpR * /prova |
REN ARTICOLO LETTERA | mv articolo lettera |
MOVE *.* \PROVA | mv * /prova |
DEL ARTICOLO | rm articolo |
DELTREE TEMP | rm -R temp |
TYPE LETTERA | cat lettera |
TYPE LETTERA | MORE | cat lettera | more |
HELP DIR | man ls |
FORMAT A: /N:18 /T:80 | fdformat /dev/fd0u1440 |
FORMAT A: /N:9 /T:80 | fdformat /dev/fd0u720 |
DISKCOPY A: B: | cp /dev/fd0 /dev/fd1 |
DISKCOPY A: A: | cp /dev/fd0 /tmp/pippo ; cp /tmp/pippo /dev/fd0 |
KEYB IT | loadkeys it |
CLS | clear |
BACKUP C:\DATI\*.* A: /S | tar cvf /dev/fd0 -L 1440 -M /dati |
FIND "saluti" PRIMO.DOC | grep "saluti" primo.doc |
FOR %A IN (*.DOC) DO FIND "saluti" %A | grep "saluti" *.doc |
MEM | free |
Riassunto.
Comando/Sintassi | Cosa fa |
awk/nawk [opzioni] file | esamina schemi in un file e processa i risultati |
cat [opzioni] file | concatena (lista) un file |
cd [directory] | cambia directory |
chgrp [opzioni] gruppo file | cambia il gruppo di appartenenza di un file |
chmod [opzioni] file | cambia i permessi di accesso a file o directory |
chown [opzioni] proprietario file | cambia il proprietario di un file; può essere solo fatto dal super-user |
chsh (passwd -e/-s) username login_shell | cambia la shell di login dell'utente (spesso solamente attraverso il super-user) |
cmp [opzioni] file1 file2 | confronta due file e mostra dove avvengono le differenze (file di testo e file binari) |
compress [opzioni] file | comprime il file specificato e lo salva con l'estensione .Z |
cp [opzioni] file1 file2 | copia file1 in file2; file2 non dovrebbe già esistere. Questo comando crea o sovrascrive file2 |
cut (opzioni) [file] | taglia specifici campi/caratteri dalle linee del file specificato |
date [opzioni] | riporta data e ora corrente |
dd [if=infile] [of=outfile] [operando=valore] | copia un file, converte tra ASCII e EBCDIC o scambia l'ordine di byte, come specificato |
diff [opzioni] file1 file2 | confronta i due file e visualizza le differenze (solamente file di testo) |
df [opzioni] [risorsa] | riporta il sommario dei blocchi del disco e degli inode liberi e usati |
du [opzioni] [directory o file] | riporta lo spazio di disco usato |
echo [stringa di testo] | riporta la stringa di testo specificata in standard output |
ed o ex [opzioni] file | editor a linea di comando |
emacs [opzioni] file | editor a schermo-pieno |
expr argomenti | valuta gli argomenti. Usato per l'aritmetica, ecc. in shell |
file [opzioni] file | classifica il tipo di file |
find directory [opzioni] [azioni] | cerca file basandosi sul tipo o su uno schema |
finger [opzioni] user[@nomehost] | riporta informazioni circa gli utenti di macchine locali e remote |
ftp [opzioni] host | trasferisce file utilizzando il protocollo di trasferimento di file (FTP) |
grep [opzioni] 'stringa di ricerca' argomento | ricerca nell'argomento (in questo caso probabilmente un file) tutte le occorrenze della stringa di ricerca specificata e le visualizza |
egrep [opzioni] 'stringa di ricerca' argomento |
fgrep [opzioni] 'stringa di ricerca' argomento |
gzip [opzioni] file | comprime o decomprime un file. I file compressi vengo memorizzati con l'estensione .gz |
gunzip [opzioni] file |
zcat [opzioni] file |
head [-numero] file | mostra le prime 10 (o numero di) linee di un file |
hostname | mostra o setta (solamente super-user) il nome della macchina attuale |
kill [opzioni] [-SEGNALE] [pid#] [%job] | manda un segnale al processo specificato dal numero di processo id (pid#) o dal numero di controllo del job (%n). Il segnale di default termina il processo |
ln [opzioni] sorgente destinazione | crea un collegamento di nome destinazione a sorgente |
lpq [opzioni] | mostra lo stato dei job di stampa |
lpstat [opzioni] |
lpr [opzioni] file | stampa sulla stampante specificata |
lp [opzioni] file |
lprm [opzioni] | rimuove un job di stampa dalla coda di stampa |
cancel [opzioni] |
ls [opzioni] [directory o file] | elenca il contenuto della directory specificata o i permessi del file specificato |
mail [opzioni] [user] | semplice utility per la posta elettronica disponibile su un sistema Unix. Si digita un punto come primo carattere su una nuova linea per trasmettere il messaggio, un punto interrogativo per richiamare l'help |
mailx [opzioni] [user] |
Mail [opzioni] [user] |
man [opzioni] comando | mostra la pagina di manuale (man) del comando specificato |
mkdir [opzioni] directory | crea una directory |
more [opzioni] file | impaginatore di un file testuale |
less [opzioni] file |
pg [opzioni] file |
mv [opzioni] file1 file2 | muove file1 in file2 |
od [opzioni] file | dump su un file binario, in ottale, in ASCII, in esadecimale, in decimale o in modalità carattere. |
passwd [opzioni] | setta o modifica la propria password |
paste [opzioni] file | incolla campi nelle linee del file specificato |
pr [opzioni] file | filtra il file e lo stampa su un terminale |
ps [opzioni] | mostra lo stato dei processi attivi |
pwd | stampa la directory di lavoro (corrente) |
rcp [opzioni] nomehost | copia file in remoto dalla macchina corrente in un'altra macchina |
rlogin [opzioni] nomehost | effettua il login in remoto su un'altra macchina |
rm [opzioni] file | rimuove (elimina) un file o una directory (-r elimina ricorsivamente la directory ed il suo contenuto) (-i chiede conferma prima di eliminare i file) |
rmdir [opzioni] directory | rimuove una directory |
rsh [opzioni] nomehost | shell remota da eseguire su un'altra macchina |
script file | memorizza ogni cosa che appare sullo schermo in un file fino a quando si esegue exit |
sed [opzioni] file | editor di flusso per editare file da uno script o da linea di comando |
sort [opzioni] file | ordina le linee del file specificato basandosi sulle opzioni scelte |
source file | legge i comandi dal file specificato e li esegue nella shell corrente. source per la shell C, . per la shell Bourne |
. file |
strings [opzioni] file | riporta sequenze di 4 o più caratteri stampabili terminanti in o . Generalmente viene usato per ricercare in file binari stringhe ASCII |
stty [opzioni] | setta o visualizza le opzioni del terminale di controllo |
tail [opzioni] file | mostra le ultime linee (o parte) di un file |
tar [opzioni] [file] | archivio a nastro--riferirsi alle pagine man per dettagli su come creare, elencare ed estrarre file da un archivio. I file tar possono essere memorizzati su disco o su nastro. |
tee [opzioni] file | copia standard output in uno o più file |
telnet [host [porta]] | comunica con un altro host usando il protocollo telnet |
touch [opzioni] [data/ora] file | crea un file vuoto o aggiorna la data/ora di accesso di un file esistente |
tr [opzioni] stringa1 stringa2 | traduce i caratteri di stringa1 provenienti da standard input in quelli di stringa2 per standard output |
uncompress file.Z | decomprime il file specificato e lo salva in un file |
uniq [opzioni] file | rimuove le linee ripetute in un file |
uudecode [file] | decodifica un file codificato con uuencode, riportandolo al file originale |
uuencode [file] nuovo_nome | codifica un file binario in codice ASCII 7-bit; utile quando lo si trasmette via email, per essere poi decodificato come nuovo_nome alla destinazione |
vi [opzioni] file | editor visuale, a pieno schermo |
wc [opzioni] [file] | mostra il numero di parole (o di caratteri o di linee) del file specificato |
whereis [opzioni] comando | riporta le locazioni del binario, del sorgente e della pagina man per il comando specificato |
which comando | riporta il percorso del comando o l'alias di shell in uso |
who o w | riporta chi è “loggato” e quali processi ha in esecuzione |
zcat file.Z | concatena (lista) il file non compresso a video, lasciando il file compresso su disco |
La Storia di Unix.
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:
Nessun commento:
Posta un commento
Non inserire link cliccabili altrimenti il commento verrà eliminato. Metti la spunta a Inviami notifiche per essere avvertito via email di nuovi commenti.