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-fasta
els data/prod-pdb
per conferma.Cosa fa
ls
se gli si passa un path ad un file piuttosto che ad una directory? Els -l
?Cosa fa
ls
se gli si passa path misti a file e directory?- Che differenza c’e’ tra:
cd .
ecd ..
?cd ..
ecd..
?ls
els .
?ls
els *
? Perche’?ls -l -h
els -lh
?ls -l
els - l
?
Il risultato di
ls ../*
“include” il risultato dils .
?Che differenza c’e’ tra
ls /home/login.utente/bio
els ../login.utente/bio
sepwd
e’~
?Il file
data/empty1
e’ 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/bee
rimuove 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 –
- l
ha uno spazio di troppo, non e’ un’opzione.
Si’. Nella wildcard expansion
../*
c’e’ anche la directory corrente,.
.Nessuna.
ls -l data/empty1
mostra chiaramente che il file non e’ vuoto, mentrels -l data/empty2
mostra 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/bee
e la directory contenuta in essa,muu/bee/grr
. - Da’ errore. La directory
muu
esiste gia’ prima della seconda invocazione amkdir
. - Funziona. Crea la directory
muu
, poi prova a crearla di nuovo.mkdir
non da’ errore perche’ con-p
gli chiediamo di ignorare il fatto chemuu
esiste 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*
.