============== Shell: Parte 1 ============== Spostarsi nel Filesystem ------------------------ ========= =================================== ============================== comando funzione opzioni principali ========= =================================== ============================== ``pwd`` stampa la directory corrente ``-l``, ``-h``, ``-t``, ``-S`` ``ls`` elenca i file in una directory ``-l`` ``cd`` cambia la directory corrente ``-`` ``mv`` sposta o rinomina un file/directory ``-i``, ``-f`` ``cp`` copia un file/directory ``-i``, ``-f``, ``-r`` ``rm`` rimuove un file/directory ``-i``, ``-f``, ``-r`` ``mkdir`` crea una o piu' directory ``-p`` ========= =================================== ============================== I comandi qui sopra spostano o copiano file, ma non modificano i contenuti degli stessi. **Esempio**. Se non sapete dove vi trovate, potete usare ``cd`` senza argomenti per tornare alla vostra home. | Wildcards, Parte 1 ------------------ La shell esegue quella che si chiama *wildcard expansion*: ogni volta che incontra l'asterisco ``*`` lo sostituisce con la lista dei file/directory che "fanno *match*". **Esempio**. Se eseguo:: ls * la shell sostituisce ``*`` con la lista di tutti i file e le directory nella directory attuale (perche' tutti fanno *match* con ``*``). Invece:: ls ~/informatica/* sostituisce ``*`` con la lista dei file in ``~/informatica``. Supponendo che in ``~/informatica`` ci siano solo tre file, chiamati ``test1``, ``test2`` e ``results``, il comando precedente sarebbe equivalente a:: ls ~/informatica/test1 ~/informatica/test2 ~/informatica/results Se avessi eseguito:: ls ~/informatica/test* la wildcard ``test*`` avrebbe fatto *match* solo con ``test1`` e ``test2``, ed il comando sarebbe stato equivalente a:: ls ~/informatica/test1 ~/informatica/test2 Qui ``results`` non fa *match*, quindi non viene incluso. | Esercizi -------- #. Cosa fa ``ls data/prot-fasta data/prot-pdb``? Confrontalo con ``ls data/prot-fasta`` e ``ls data/prot-pdb`` per conferma. #. Cosa fa ``ls`` se gli si passa un path ad un file piuttosto che ad una directory? E ``ls -l``? #. Cosa fa ``ls`` se gli si passa path misti a file e directory? #. Che differenza c'e' tra: #. ``cd .`` e ``cd ..``? #. ``cd ..`` e ``cd..``? #. ``ls`` e ``ls .``? #. ``ls`` e ``ls *``? Perche'? #. ``ls -l -h`` e ``ls -lh``? #. ``ls -l`` e ``ls - l``? #. Il risultato di ``ls ../*`` "include" il risultato di ``ls .``? #. Che differenza c'e' tra ``ls /home/login.utente/bio`` e ``ls ../login.utente/bio`` se ``pwd`` e' ``~``? #. Il file ``data/empty1`` e' vuoto? E il file ``data/empty2``? #. Cosa fa il comando (alcuni dei comandi seguenti possono non funzionare; scopo dell'esercizio e' scoprire perche'; partite sempre da una directory vuota): #. ``mkdir muu/bee``? #. ``mkdir -p muu/bee/grr; rm muu/bee/grr``? #. ``mkdir -p muu/bee/grr; rm -r muu/bee``? #. ``mkdir muu; cd .; mkdir muu``? #. ``mkdir muu; cd .; mkdir -p muu``? #. Il comando ``rm -r muu/bee`` rimuove anche la directory ``muu``? #. Stampare la lista dei file contenute nelle directory ``data/deep0``, ``data/deep1``, ..., ``data/deep4``. #. Stampare la lista di *tutti* i file, inclusi quelli nelle sotto-directory.