View my profile on LinkedIn

Concatenamento dei comandi nella shell / prompt dos

E’ possibile, sia nella shell unix/linux che al prompt dei comandi di windows, far eseguire una serie di comandi uno di seguito all’altro separandoli con il doppio &.

Per esempio se diamo un comando del tipo:

cd /tmp/pippo && tar xzvf /download/dati.tgz

avremo un un cambio di directory in /tmp/pippo dove verrà spacchettato il file dati.tgz presente nella directory /download.

La stessa cosa vale per windows, con un comando:

cd \pippo && unzip \download\dati.zip

ci sposteremo nella cartella \pippo del disco corrente dove verrà spaccehttato il file dati presente nella cartella download del disco corrente

Tenete presente però che se uno dei comandi della catena fallisce questa si interrompe, nel nostro caso se la directory dove andiamo a fare il “cd” non esiste il tar/unzip ed eventuali comandi successivi NON verranno eseguiti. E’ interessante sapere però che se invece la separazione dei due comandi fosse stata fatta col doppio | (pipe) il secondo comando sarebbe stato eseguto SOLO se il primo falliva.

2 Comments

  1. shark says:

    Volevo segnalare che puoi usare (non so su windows, ma su linux) il “;” che esegue i comandi anche nel caso che i vari comandi falliscano. Per il resto e’ tutto giustissimo.
    Lo uso quotidianamente questo “trucco”, l’uso piu’ frequente (per me) e’ la compilazione:
    gcc file.c && ./a.out
    In questo modo esegue il file solo se la compilazione e’ andata a buon fine, in questo modo io non esco mai dal mio vim quando programmo :)

  2. Il “puntevvirgola” come separatore funziona anche su windows.

    per la cronaca, un mio vecchio amico non usciva MAI da emacs a prescindere. Credo che considerasse emacs alla stregua VERO sistema operativo del pc.

    …ed in effetti, se ci si pensa bene emacs non e’ tanto piu’ smeplice di un kernel :-O

Leave a Reply

hitstatus