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 conls data/prot-fastaels data/prod-pdbper conferma.Cosa fa
lsse gli si passa un path ad un file piuttosto che ad una directory? Els -l?Cosa fa
lsse gli si passa path misti a file e directory?- Che differenza c’e’ tra:
cd .ecd ..?cd ..ecd..?lsels .?lsels *? Perche’?ls -l -hels -lh?ls -lels - l?
Il risultato di
ls ../*“include” il risultato dils .?Che differenza c’e’ tra
ls /home/login.utente/bioels ../login.utente/biosepwde’~?Il file
data/empty1e’ vuoto? E il filedata/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/beerimuove anche la directorymuu?
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.
Soluzioni¶
Stampa a schermo prima ls lista dei contenuti della directory
data/prot-fasta, poi quelli della directorydata/prot-pdb. Quindi e’ identico a lanciare:ls data/prot-fasta ls data/prot-pdb
separatamente.
Stampa il nome del file. Con
-l, stampa anche informazioni aggiuntive (proprietario, permessi, etc.)Stampa i nomi di tutti i file, ed i contenuti di tutte le directory.
- Soluzioni:
- Il primo non fa niente, il secondo ci sposta nella directory che contiene la directory in cui ci troviamo.
- Il primo funziona, il secondo no – manca uno spazio.
- Nessuna.
- Il primo stampa la lista dei contenuti della directory corrente. Il secondo
invece subisce una wildcard expansion:
*viene sostituito con la lista di tutti i file nella directory corrente. Quindils *stampa la lista dei file nella directory corrente, piu’ i contenuti di tutte le directory. - Nessuna.
- Il primo funziona, il secondo no –
- lha uno spazio di troppo, non e’ un’opzione.
Si’. Nella wildcard expansion
../*c’e’ anche la directory corrente,..Nessuna.
ls -l data/empty1mostra chiaramente che il file non e’ vuoto, mentrels -l data/empty2mostra che lo e’.- Soluzioni:
- Da’ errore. Creare directory innestate richiede l’opzione
-p. - Da’ errore. Rimuovere una directory (in questo caso
muu/bee/grr) richiede l’opzione-r. - Funziona. Crea le directory innestate
muu/bee/grr, poi cancellamuu/beee la directory contenuta in essa,muu/bee/grr. - Da’ errore. La directory
muuesiste gia’ prima della seconda invocazione amkdir. - Funziona. Crea la directory
muu, poi prova a crearla di nuovo.mkdirnon da’ errore perche’ con-pgli chiediamo di ignorare il fatto chemuuesiste gia’. - No.
- Da’ errore. Creare directory innestate richiede l’opzione
ls data/deep0; ls data/deep1; ... ;ls data/deep4, oppurels data/deep*.ls -r data/deep*.