Zobrazuje skryté názvy souborů ve všech adresářích? Nebo jen aktuální adresář (včetně jakéhokoli adresáře v něm)? Nechápu, proč ls -ld .*
vrací různé výsledky (zobrazuje skryté soubory a adresáře POUZE v aktuálním adresáři, nezobrazuje soubory v žádném jiném adresáři uvnitř něj)? Také Co dělá -d
udělat sám (ls -d
)?
Přijatá odpověď:
ls -al .*
zobrazuje obsah všech adresářů v aktuálním adresáři, jejichž názvy začínají .
(tj. všechny, které odpovídají shellu glob .*
)
V Bash, .*
glob se převede na .
a ..
také. Od .
představuje aktuální adresář a ..
nadřazený adresář, zobrazí se také obsah obou těchto adresářů, včetně skrytých souborů a adresářů.
.*
také zachytí skryté soubory v aktuálním adresáři, ale stejně jsou uvedeny jako obsah .
Jak je vysvětleno v části Co znamená `ls –directory`? -d
příznak způsobí, že se místo jejich obsahu zobrazí samotné adresáře.
to je také případ pomlčky, což je shell symbolicky propojený s sh
v Ubuntu. Jiné shelly, včetně zsh a mksh, se však chovají intuitivněji a neobsahují .
a ..
při rozbalení .*
. Za zmínku také stojí, že zatímco většina příkazů bude fungovat na ..
a .
pokud jsou zahrnuty v .*
glob (včetně chmod
a chown
– těmi si můžete pořádně pokazit systém), rm
příkaz k tomu užitečně selže.