Mostra i nomi dei file nascosti all'interno di tutte le directory? O solo la directory corrente (inclusa qualsiasi directory al suo interno)? Non riesco a capire perché ls -ld .*
restituisce risultati diversi (mostra i file e le directory nascosti SOLO nella directory corrente, non mostrando i file all'interno di altre directory al suo interno)? Inoltre cosa significa -d
fai da solo (ls -d
)?
Risposta accettata:
ls -al .*
mostra il contenuto di tutte le directory nella directory corrente i cui nomi iniziano con .
(cioè tutti quelli che corrispondono alla shell glob .*
)
In Bash, il .*
glob si risolve in .
e ..
anche. Da .
rappresenta la directory corrente e ..
la directory principale, vengono mostrati anche i contenuti di entrambe queste directory, inclusi eventuali file e directory nascosti.
.*
cattura anche i file nascosti nella directory corrente, ma sono comunque elencati come contenuti di .
Come spiegato in Che cosa significa `ls –directory`? il -d
flag fa visualizzare le directory stesse, invece del loro contenuto.
questo è anche il caso in dash, che è la shell collegata simbolicamente a sh
in Ubuntu. Tuttavia, altre shell, incluse zsh e mksh, si comportano in modo più intuitivo e non includono .
e ..
durante l'espansione di .*
. Vale anche la pena notare che, mentre la maggior parte dei comandi funzionerà su ..
e .
quando sono inclusi in un .*
glob (incluso chmod
e chown
– puoi davvero rovinare il tuo sistema con quelli), il rm
comando fallirà utilmente in base alla progettazione per farlo.