aprile 19, 2011

L'ABC dei comandi Unix.

| No comment
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»

ls [opzioni] [file...]
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»

cd [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.
  • mkdir cloro[Invio]
    Crea la directory cloro/, come discendente di quella corrente.
  • mkdir /sodio/cloro[Invio]
    Crea la directory cloro/, come discendente di /sodio/.
  • mkdir ~/cloro[Invio]
    Crea la directory cloro/, come discendente della directory personale dell'utente attuale.

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.
  • ln -s /test/* ~/prova[Invio]
    Crea, nella destinazione ~/prova/, una serie di collegamenti simbolici corrispondenti a tutti i file e a tutte le directory che si trovano all'interno di /test/.
  • ln -s /test ~/prova[Invio]
    Crea, nella destinazione ~/prova, un collegamento simbolico corrispondente al file o alla directory /test. Se ~/prova è una directory, viene creato il collegamento ~/prova/test; se ~/prova non esiste, viene creato il collegamento ~/prova.

rm: «remove»

rm [opzioni] nome...
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»

cat [opzioni] [file...]
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.
  • cat prova prova1[Invio]
    Mostra di seguito il contenuto di prova e prova1.
  • cat prova prova1 > prova2[Invio]
    Genera il file prova2 come risultato del concatenamento in sequenza di prova e prova1.
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.





Ricerca personalizzata


Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:

Trovato questo articolo interessante? Condividilo sulla tua rete di contatti Twitter, sulla tua bacheca su Facebook o semplicemente premi "+1" per suggerire questo risultato nelle ricerche in Google, Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie! CONDIVIDI SU!

stampa la pagina
,

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.

Ultimi post pubblicati

Archivio

Etichette

Ubuntulandia in Pinterest

Post Più Popolari