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.