Jak používat příkaz ls k výpisu souborů a adresářů v systému Linux

Příkaz ls v Linuxu používáme s takovou samozřejmostí, že nad tím už ani nepřemýšlíme. Je to škoda, protože pokud mu věnujete trochu pozornosti, objevíte spoustu užitečných možností, které se vám v terminálu mohou hodit.

ls: Výpis souborů a složek

Příkaz ls je nejspíš jeden z prvních příkazů, se kterým se uživatelé Linuxu setkají. Ti, kteří s příkazovou řádkou pracují pravidelně, ho používají téměř automaticky. Možná právě proto si většina lidí neuvědomuje, kolik toho tento příkaz vlastně umí. Soubory si vypisujeme, abychom viděli, co se ve složce nachází. Když chceme zjistit oprávnění k souboru, vypíšeme si soubory v dlouhém formátu. To je však většinou vše.

Příkaz ls má opravdu velké množství parametrů. Možná to je jeden z důvodů, proč se s ním lidé více nekamarádí. Existuje tolik možností, že je těžké prozkoumat je všechny a najít ty užitečné. A i když je najdete, jak si je máte zapamatovat?

Užitečné kombinace příkazu ls s různými volbami jsou perfektními kandidáty pro vytvoření aliasů. Ve skutečnosti je ve většině distribucí to, co si představujeme jako „obyčejný“ příkaz ls, alias. Pro zobrazení základní definice aliasu můžete použít příkaz type. Podívejme se tedy, jak je definován příkaz ls:

type ls

Parametr --color=auto je automaticky přidáván pokaždé, když použijete příkaz ls. Díky tomu jsou různé typy souborů barevně odlišeny.

Základní výpis souborů pomocí ls

Každý, kdo strávil nějaký čas v linuxovém terminálu, ví, že ls standardně vypisuje seznam souborů a složek v aktuální složce.

ls

Pokud chcete, aby byl výpis zobrazen v jednom sloupci, použijte volbu -1 (jeden soubor na řádek):

ls -1

Za chvíli se podíváme na ten zvláštně vypadající název souboru v horní části seznamu.

Použití ls v různých složkách

Chcete-li, aby ls vypsal soubory v jiné složce, než je aktuální, zadejte cestu k této složce jako parametr. Můžete zadat i více složek a ls je vypíše postupně. Následující příkaz vypíše soubory ve dvou složkách, jedné s názvem „Help“ a druhé s názvem „gc_help“.

ls Help gc_help

ls vypíše nejprve obsah první složky a pak druhé. Před výpisem obsahu každé složky, vypíše její název.

Použití vzorů souborů

Pro selektivní výpis souborů můžete použít porovnávání vzorů. Otazník „?“ zastupuje libovolný jeden znak a hvězdička „*“ zastupuje libovolný řetězec znaků. Pro vypsání všech souborů nebo složek, jejichž název začíná na „ip_“, použijte následující formát:

ls ip_*

Pro zobrazení souborů s příponou „.c“, použijte tento formát:

ls *.c

Můžete také použít ls v kombinaci s grep a využít tak jeho schopnosti porovnávání vzorů. Například pro zobrazení všech souborů, které mají v názvu řetězec „_pin_“:

ls | grep _pin_

Je to téměř stejné, jako použít ls se zástupnými znaky:

ls | grep _pin_
ls *_pin_*

Proč „téměř“? Všimněte si, že výstup má jiné rozložení. grep vždy vypisuje každý soubor na samostatný řádek.

Netisknutelné znaky

Může se stát, že se setkáte se souborem, jehož název obsahuje netisknutelné nebo řídicí znaky. Obvykle se to stane, když rozbalíte archiv stažený z internetu nebo načtete git repozitář, kde původní autor udělal chybu při vytváření souboru a nevšiml si toho.

Náš zvláštní soubor je jedním z těchto případů:

Pokud se na něj podíváme v průzkumníku souborů a stiskneme „F2“ pro přejmenování, netisknutelné znaky se zobrazí jako speciální symbol.

Pomocí volby -b (escape) můžete zobrazit, co název souboru ve skutečnosti obsahuje. Tato volba způsobí, že ls použije escape sekvence z programovacího jazyka C pro reprezentaci řídicích znaků.

ls -b a*

Záhadný znak je odhalen jako znak nového řádku, který je v C reprezentován jako „\n“.

Ignorování souborů

Pokud chcete některé soubory z výpisu vynechat, použijte volbu --hide. Předpokládejme, že nechcete ve výpisu vidět záložní soubory s příponou „.bak“. Můžete použít tento příkaz:

ls
ls --hide=*.bak

Soubory s příponou „.bak“ nejsou v druhém seznamu zahrnuty.

Dlouhý formát výpisu

Volba -l (dlouhý výpis) způsobí, že ls zobrazí podrobné informace o každém souboru.

ls -l

Je zde spousta informací, tak se na ně pojďme podívat.

První, co ls zobrazí, je celková velikost všech souborů ve výpisu. Poté se každý soubor nebo složka zobrazí na samostatném řádku.

První sada deseti písmen a pomlček reprezentuje typ souboru a oprávnění pro vlastníka, skupinu a ostatní uživatele.

Úplně první znak reprezentuje typ souboru. Může nabývat jedné z následujících hodnot:

-: Běžný soubor.
b: Blokové speciální zařízení.
c: Znakové speciální zařízení.
d: Složka (adresář).
l: Symbolický odkaz.
n: Síťový soubor.
p: Pojmenovaná roura.
s: Socket.

Dalších devět znaků tvoří tři skupiny po třech znacích. Každá skupina reprezentuje oprávnění pro čtení, zápis a spouštění v tomto pořadí. Pokud je oprávnění uděleno, zobrazí se r, w nebo x. Pokud oprávnění není uděleno, zobrazí se pomlčka -.

První sada tří znaků reprezentuje oprávnění pro vlastníka souboru. Druhá sada tří znaků reprezentuje oprávnění pro členy skupiny a poslední sada tří znaků reprezentuje oprávnění pro ostatní uživatele.

Někdy je oprávnění ke spuštění pro vlastníka reprezentováno znakem s. To je takzvaný setuid bit. Pokud je přítomen, znamená to, že soubor se spustí s oprávněními vlastníka souboru, nikoli uživatele, který soubor spouští.

Oprávnění ke spuštění pro skupinu může být také s. To je setgid bit. Pokud je použit na soubor, soubor se spustí s oprávněními skupiny vlastníka. Pokud je použit na složku, všechny soubory vytvořené v této složce zdědí oprávnění skupiny z této složky, nikoli od uživatele, který soubor vytvoří.

Oprávnění ke spuštění pro ostatní může být někdy reprezentováno znakem t. To je sticky bit. Obvykle se používá pro složky. Pokud je nastaven, bez ohledu na to, jaká jsou oprávnění k zápisu a spuštění souborů ve složce, mohou soubory v této složce přejmenovat nebo smazat pouze vlastník souboru, vlastník složky nebo uživatel root.

Sticky bit se běžně používá ve složkách jako „/tmp“. Do té mohou zapisovat všichni uživatelé počítače. Sticky bit v této složce zajišťuje, že uživatelé – a procesy spouštěné uživateli – mohou přejmenovat nebo smazat pouze své vlastní dočasné soubory.

Můžeme se podívat na sticky bit ve složce „/tmp“. Všimněte si použití volby -d (složka). Ta způsobí, že ls vypíše podrobnosti o složce. Bez této volby ls vypíše soubory v dané složce.

ls -l -d /tmp

Číslo, které následuje za oprávněními, je počet pevných odkazů na soubor nebo složku. U souboru to bývá obvykle 1, ale pokud jsou vytvořeny další pevné odkazy, toto číslo se zvýší. Složka má obvykle alespoň dva pevné odkazy. Jeden je odkaz na sebe a druhý je její záznam v nadřazené složce.

Poté se zobrazí jméno vlastníka a skupiny. Za nimi následuje velikost souboru a datum poslední úpravy. Nakonec je vypsán název souboru.

Lidsky čitelné velikosti souborů

Zobrazování velikostí souborů v bajtech není vždy praktické. Chcete-li zobrazit velikosti souborů v nejvhodnějších jednotkách (kilobajty, megabajty atd.), použijte volbu -h (human-readable):

ls -l -h

Zobrazení skrytých souborů

Pro zobrazení skrytých souborů použijte volbu -a (all):

ls -l -a

Dva záznamy „.“ a „..“ reprezentují aktuální složku a nadřazenou složku. Soubor s názvem „.base_settings“ je nyní viditelný poprvé.

Vynechání „.“ a „..“ z výpisů

Pokud nechcete, aby byl výpis zahlcen záznamy „.“ a „..“, ale chcete vidět skryté soubory, použijte volbu -A (almost-all):

ls -l -A

Skrytý soubor je stále zobrazen, ale záznamy „.“ a „..“ jsou potlačeny.

Rekurzivní výpis složek

Chcete-li, aby ls vypsal soubory ve všech podsložkách, použijte volbu -R (recursive):

ls -l -R

ls projde celou stromovou strukturu složek pod výchozí složkou a vypíše soubory v každé podsložce.

Zobrazení UID a GID

Pro zobrazení ID uživatele a ID skupiny namísto jména uživatele a skupiny použijte volbu -n (numeric uid and gid):

ls -n

Třídění výpisů

Výpis můžete seřadit podle přípony, velikosti souboru nebo času poslední úpravy. Tyto volby se nejlépe používají s dlouhým formátem výpisu. Pokud třídíte podle velikosti souboru, dává smysl zobrazovat velikosti souborů ve výpisu. Při třídění podle přípony už dlouhý formát výpisu tak důležitý není.

Pro třídění podle přípony použijte volbu -X (sort by extension):

ls -X -1

Složky jsou vypsány jako první (nemají příponu), poté následují ostatní soubory v abecedním pořadí podle přípony.

Pro třídění podle velikosti souboru použijte volbu -S (sort by file size):

ls -l -h -S

Pořadí třídění je od největšího po nejmenší soubor.

Pro třídění výpisu podle času poslední úpravy použijte volbu -t (sort by modification time):

ls -l -t

Výpis je seřazen podle času poslední úpravy.

Pokud je čas poslední úpravy souboru v rámci aktuálního roku, zobrazené informace jsou měsíc, den a čas. Pokud datum změny nebylo v aktuálním roce, zobrazené informace jsou měsíc, den a rok.

Rychlý způsob, jak získat nejnovější a nejstarší soubory v dané složce, je použít ls v kombinaci s příkazy head a tail.

Pro získání nejnovějšího souboru nebo složky použijte tento příkaz:

ls -t | head -1

Pro získání nejstaršího souboru nebo složky použijte tento příkaz:

ls -t | tail -1

Obrácení pořadí třídění

Pro obrácení jakéhokoli pořadí třídění použijte volbu -r (reverse):

ls -l -h -S -r

Výpis je nyní seřazen od nejmenšího souboru po největší soubor.

A to není všechno

Podívejte se na manuálovou stránku k příkazu ls, existuje mnohem více možností. Některé z nich se hodí pro méně obvyklé případy, ale občas budete rádi, že o nich víte.

Potřebujete zobrazit časová razítka souborů s maximální přesností, jakou Linux dokáže poskytnout? Použijte volbu --full-time:

ls --full-time

Chcete zobrazit počet inodů souborů? Použijte volbu -i (inode):

ls -i

Pracujete na monochromatickém displeji a chcete se vyhnout záměně souborů za složky a odkazy? Použijte volbu -F (classify) a ls připojí ke každé položce ve výpisu jeden z těchto znaků:

/: Složka (adresář).
@: Symbolický odkaz.
|: Pojmenovaná roura.
=: Socket.
*: Spustitelný soubor.

ls -F

Začněte zkoumat. Zjistíte, že příkaz ls je opravdu mocný nástroj a budete neustále objevovat něco nového.