GNU/Linux >> Znalost Linux >  >> Linux

Proč *ne* analyzovat `ls` (a co dělat místo toho)?

Neustále vidím odpovědi citující tento odkaz s definitivním zněním „Neanalyzujte ls !“ To mi vadí z několika důvodů:

  1. Zdá se, že informace v tomto odkazu byly přijaty velkoobchodně s malými otázkami, i když při běžném čtení dokážu vybrat alespoň několik chyb.

  2. Také se zdá, jako by problémy uvedené v tomto odkazu nevyvolaly žádnou touhu najít řešení.

Z prvního odstavce:

…když se zeptáte [ls] u seznamu
souborů je obrovský problém:Unix povoluje v
názvu souboru téměř jakýkoli znak, včetně mezer, nových řádků, čárek, symbolů svislých čar a
v podstatě čehokoli jiného, ​​co byste chtěli někdy zkuste použít jako oddělovač kromě
NUL. … ls odděluje názvy souborů novými řádky. To je v pořádku
dokud nemáte soubor s novým řádkem v názvu. A protože nevím
o žádné implementaci ls který vám umožňuje ukončit
názvy souborů znaky NUL místo řádků, takže
nemůžeme bezpečně získat seznam názvů souborů pomocí ls .

Smůla, že? Jak kdy můžeme zpracovat datovou sadu ukončenou novým řádkem pro data, která mohou obsahovat nové řádky? No, pokud lidé, kteří odpovídají na otázky na tomto webu, nedělali takové věci denně, mohl bych si myslet, že jsme měli nějaké potíže.

Pravdou však je, že většina ls implementace ve skutečnosti poskytují velmi jednoduché rozhraní API pro analýzu jejich výstupu a všichni jsme to celou dobu dělali, aniž bychom si to uvědomovali. Nejen, že můžete název souboru ukončit hodnotou null, můžete jej také začít hodnotou null nebo libovolným libovolným řetězcem, který si přejete. A co víc, můžete tyto libovolné řetězce přiřadit pro každý typ souboru . Zvažte prosím:

LS_COLORS='lc=
Linux
  1. Co je to linuxový server a proč jej vaše firma potřebuje?

  2. Proč Deis a co to je?

  3. Proč by se měl v Bash vyhnout eval a co bych měl místo toho použít?

  1. co je dbus daemon a proč jej vlc potřebuje

  2. Co je to Gnome Keyring / Seahorse a proč ukládá moje hesla v prostém textu?

  3. Co dělá 'set -e' a proč by mohlo být považováno za nebezpečné?

  1. Hašování hesel a proč to potřebujeme

  2. Co je TAM a proč byste jím mohli chtít být?

  3. Jak na to:Co je Git a Github? Jak to mám používat a proč by mě to mělo zajímat?