+ Rispondi
Risultati da 1 a 5 su 5
  1. #1

    Iscritto dal
    05/09/2011
    Località
    Questa realtà
    Messaggi
    1,382

    Spiegazione sintassi comando

    Ciao a tutti,

    oggi mi è servito questo comando:

    codice:
    find . -name nomedirectory -exec ls {} \;
    ne ho approfondito un po' la sintassi ma non capisco a cosa serve \; nel finale...

    qualcuno mi illumina?
    -Cipo-
    PC:
    CM690_Liberty 500W_880GA-UD3H_Phenom II X2 550_12GB DDR3_HD6950_X-Fi_840 EVO 250GB_Velociraptor 150GB_U2410_Razer Mako
    Muletto: PC-Q07 Black - Intel D510MO - 1GB DDR2 - Caviar Green 1TB+500GB LVM - picoPSU-80 + FSP NET-36

  2. #2

    Iscritto dal
    26/05/2011
    Località
    Lugano, Svizzera
    Messaggi
    21,499
    È perché usi exec sui file che trovi, gli stai dicendo di fare un find e poi di ciascun risultato (che si identifica con quel {}) fai ls

    Se ti fermassi a nomedirectory non ci vorrebbe


    ps: chiaramente dopo exec ci puoi mettere qualsiasi cosa e il parametro resta {}, classico è voler fare un rm sui risultati.
    In quel caso se i file non sono un milione si può anche usare -ok invece di -exec che è la stessa cosa ma chiede conferma per ciascuno
    Verità #10 | Viva l'unto, reale o presunto

  3. #3

    Iscritto dal
    05/09/2011
    Località
    Questa realtà
    Messaggi
    1,382
    in effetti è proprio con rm che l'ho usato...

    ancora però non capisco a cosa servono la backslash e il punto_e_virgola finali

    Grazie Main
    -Cipo-
    PC:
    CM690_Liberty 500W_880GA-UD3H_Phenom II X2 550_12GB DDR3_HD6950_X-Fi_840 EVO 250GB_Velociraptor 150GB_U2410_Razer Mako
    Muletto: PC-Q07 Black - Intel D510MO - 1GB DDR2 - Caviar Green 1TB+500GB LVM - picoPSU-80 + FSP NET-36

  4. #4

    Iscritto dal
    26/05/2011
    Località
    Lugano, Svizzera
    Messaggi
    21,499
    È per segnare la fine del comando da eseguire, sai come sono queste cose mezze di programmazione, il concetto di "la riga è finita, arriva fin qua" non ha senso

    Metti che fai un comando complicato e lungo e lo vuoi mettere su più righe (perché non sempre sei in console ma magari in uno script), almeno l'interpreter sa dove fermarsi



    edit: scusa ho scritto due righe senza dire un cavolo

    il backslash serve per escappare () il punto e virgola, perché l'interprete lo deve passare al comando find.
    Infatti -exec e continuazione è un vero e proprio parametro di find che ha bisogno di una stringa (e siccome gli stai passando un comando, avrà un punto e virgola alla fine).
    Senza backslash sicuramente il punto e virgola sarebbe interpretato come fine comando creando scompiglio


    edit2: se non ti piace \; dovrebbe funzionare anche mettendo ';'
    Ultima modifica: 28-08-2013 alle 18:26, di MainThink
    Verità #10 | Viva l'unto, reale o presunto

  5. #5

    Iscritto dal
    05/09/2011
    Località
    Questa realtà
    Messaggi
    1,382
    Più o meno ho capito, Grazie!
    -Cipo-
    PC:
    CM690_Liberty 500W_880GA-UD3H_Phenom II X2 550_12GB DDR3_HD6950_X-Fi_840 EVO 250GB_Velociraptor 150GB_U2410_Razer Mako
    Muletto: PC-Q07 Black - Intel D510MO - 1GB DDR2 - Caviar Green 1TB+500GB LVM - picoPSU-80 + FSP NET-36


 

Autorizzazioni

  • Non puoi iniziare nuove discussioni
  • Non puoi rispondere alle discussioni
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
Powered by vBulletin™ Version 4.1.5
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved
SEO by vBSEO ©2011, Crawlability, Inc.
Fuso orario: UTC +1, sono le 00:17.