Sign in to follow this  
Michele Gazzaruso

Comandi basiliari della shell, aka "Terminal For Dummies"

Recommended Posts

Terminale, rm e dummies sono incompatibili.

E' vero, però mi sembra di aver detto per inciso che i comandi sudo e rm vanno usati con parsimonia e solo se si sa davvero ciò che si sta facendo.

All'Università possono insegnarti come si genera una fissione. Ma se poi crei la bomba atomica la colpa di chi è? ;)

Share this post


Link to post
Share on other sites

@Luca_Nalin

Si, in effetti essere previdenti non guasta.

Volevo editare il post per mettere in grassetto, italic e sottolineato le raccomandazioni riguardo sudo e rm ma purtroppo non posso più farlo: è passato troppo tempo dalla creazione del post. Magari se un admin può farlo al posto mio gli sarei molto grato

Share this post


Link to post
Share on other sites

Il comando cp

Questo comando ci consente di copiare uno o più files da qualche parte sul disco rigido/su altre locazioni.

La sintassi è

cp directory/files_sorgenti directory/files_di_destinazione

Un esempio del comando cp:

Mini:Music Michele$ lsI Feel Dark.mp3		iTunes			provamicrofono.mp3goccia.mp3		iTunes MusicMini:Music Michele$ cp provamicrofono.mp3 ..Mini:Music Michele$ cd ..Mini:~ Michele$ pwd/Users/MicheleMini:~ Michele$ lsCurrency Converter	Library			PublicDesktop			Movies			SitesDocuments		Music			UseNeXTDownloads		Pictures		provamicrofono.mp3Mini:~ Michele$ 
Particolare attenzione merita lo switch -R posposto a cp, che permette di copiare ricorsivamente una o più directory.

Cenni su files e wildcards

Alcuni comandi come rm, cp, mv possono accettare come stdin (standard input, ingresso) più files. Ad esempio per copiare i files prova1, prova2, prova3 in /Users/Michele possiamo dare il comando

cp prova1 prova2 prova3 /Users/Michele

N.B.: Quando si copiano/spostano più files l'ultimo elemento fornito deve essere *sempre* una directory, o *nix ci avverte generando un errore.

C'è però un altro metodo, molto più comodo ma anche più bisognoso di attenzione (specialmente usato in accoppiata con rm), per gestire più files: usare le wildcards. Sono caratteri speciali riservati al sistema (in questo caso al sottosistema *nix, ma sono presenti per lo più in qualsiasi sistema operativo, anche in MS-DOS/Windows) che permettono appunto di lavorare facilmente con più files.

Le wildcards (o caratteri jolly come spesso vengono chiamate) sono generalmente 2:

* = Tutto

? = Qualsiasi carattere che si trova al posto della ?

Prendiamo l'esempio di prima. Possiamo risolvere in 2 modi:

1) Usare la wildcard *

Mini:Music Michele$ lsI Feel Dark.mp3		iTunes Music		prova3goccia.mp3		prova1			provamicrofono.mp3iTunes			prova2Mini:Music Michele$ cp prova* /Users/Michele/Mini:Music Michele$ ls /Users/Michele/Currency Converter	Movies			UseNeXTDesktop			Music			prova1Documents		Pictures		prova2Downloads		Public			prova3Library			Sites			provamicrofono.mp3Mini:Music Michele$ 

In una sola mossa abbiamo copiato i 3 files (prova1, prova2, prova3) nella directory /Users/Michele. Fantastico, ma c'è un inconveniente. E' come se noi avessimo detto a *nix: cerca tutti i files all'interno della directory in cui ci troviamo che inizino con prova e proseguano con qualsiasi cosa, e copiali nella directory /Users/Michele. Però in questo modo viene copiato anche il file provamicrofono.mp3, che soddisfa i criteri di selezione precedenti: inizia con prova e prosegue con qualsiasi cosa (microfono.mp3). Come ovviare a ciò? Con la soluzione che in questo caso si rivela la più efficace:

2) Usare la wildcard ?

La wildcard ? è più precisa:

cp prova? /Users/Michele
Ragiona così: cerca, all'interno della directory in cui ci troviamo, tutti i files che iniziano con prova e dopo i caratteri 'p' 'r' 'o' 'v' 'a' hanno - necessariamente - uno e *un solo* carattere che li segue.

prova1 -> OK

prova2 -> OK

prova3 -> OK

provamicrofono.mp3 -> Non OK

prova12 -> Non Ok (i caratteri dopo prova sono 2)

prova -> Non Ok (nessun carattere dopo prova)

Se avessimo voluto copiare ad esempio i files prova23, prova45, prova34 avremmo dovuto usare due wildcards ?? dopo prova. E così via. La cosa bella è che possiamo usare in accoppiata le wildcards.

Esempi:

cp ?-Led_Zeppelin-*.mp3 /Users/Michele/Music/Preferiti
In questo modo supponendo di avere delle fittizie tracce di un CD dei Led Zeppelin (io lo ho davvero N.d.M.G.) possiamo copiare solo le prime 9 tracce e scartare il resto, dato che abbiamo messo una wildcard ? sola (quindi appena scattiamo a 10 non va più bene) e che *nix esegue il controllo effettuando prima la selezione in base a * e dopo filtra totalmente in base a ?.

Share this post


Link to post
Share on other sites

Bravo Michele, bellissimo lavoro!

Trovo queste guide assolutamente utili.

Per quanto riguarda il comando rm, beh... bisogna pure incominciare da qualche parte, no? Non si puo' ascendere al Monte Ventoso senza fare una strada difficoltosa... ;)

Bravo, veramente bravo!

Share this post


Link to post
Share on other sites

@DarwinNE

Grazie, cerco di dare un aiuto - nel mio piccolo - a coloro i quali hanno bisogno di un "first aid kit" senza andare in cerca di (seppur utilissime, ma per chi ha già una certa dimestichezza con *nix) lunghe bibbie a riguardo. Questo come ho detto vuole essere solo un - diciamo - "Cirannino" (bei ricordi a scuola) del terminale.

Sono contento della tua approvazione, anzi se devo essere sincero mi hai ispirato proprio tu con le tue utilissime (a dir poco) guide sui vari software matematici e non.. ;)

Quando la miniguida sarà completa effettuerò l'upload di essa in formato PDF sul mio sito personale, così sarà possibile anche una consultazione offline qualora sia richiesta.

Share this post


Link to post
Share on other sites

Sono contento della tua approvazione, anzi se devo essere sincero mi hai ispirato proprio tu con le tue utilissime (a dir poco) guide sui vari software matematici e non.. ;)

Quando la miniguida sarà completa effettuerò l'upload di essa in formato PDF sul mio sito personale, così sarà possibile anche una consultazione offline qualora sia richiesta.

Ah, ma guarda, che onore :)

Almeno sono servite a qualcuno!

[OT]

Tra l'altro, io le ho messe in linea sul mio sito da poco:

http://davbucci.chez-alice.fr/index.php?argument=matematica/maxima/maxima.inc&language=Italiano

http://davbucci.chez-alice.fr/index.php?argument=matematica/gnuplot/gnuplot.inc&language=Italiano

[/OT]

Share this post


Link to post
Share on other sites

ok...ora sono pronto ad essere linciato ma DEVO fare una domanda stupida:

dato che la maggiorparte delle operazioni descritte le possiamo fare "con le finestre" (ora non mi viene un termine più specifico.. o forse non lo ho mai saputo... insomma col mouse!) che motivo abbiamo di imparare tutti questi comendi?

la cosa mi affascina... ma alla seconda riga già mi sono rotto perchè non sono motivato... ...motivatemi! :P

ciaoooo

cesare

Share this post


Link to post
Share on other sites

Perchè a volte, ad esempio, si ha necessità di compilare un programma partendo dal suo codice sorgente (come si fa con Linux, ad esempio) dato che Mac OS X ha un sottosistema Unix-like e i comandi per muoversi sono quindi i medesimi (poichè si ha una shell *nix).

In secondo luogo è sempre un bene - a mio avviso - sapere cosa c'è dietro le quinte. Capisci a fondo l'ambiente in cui ti trovi ed apprezzi di più anche le piccole cose. Ad esempio (nella minimalià assolutamente voluta di questa miniguida) dopo questa lettura si può facilmente intuire che dietro la funzione "Ripara privilegi" di Mac OS X non si cela altri che il comando chmod (tanto per fare un esempio).

Non ha un fine specifico questa guida.

Ma ne ha tanti..

(Ovviamente mi rendo conto che c'è gente che possiede Mac OS X da anni e il terminale non l'ha mai aperto, perchè non ha mai avuto la necessità. Ma come si dice.... c'è sempre la prima volta.)

Share this post


Link to post
Share on other sites

Ciao, vorrei sapere come si usano e soprattutto quali sono i comandi da shell che mi servono per identificare quali reti wireless sono presenti a quale rete sono collegato, e cosi via. Lo stesso discorso anche per reti Lan, non so se ci sono comandi specifici.

Grazie

Ciao

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this