GNU/Linux >> Znalost Linux >  >> Linux

Rozlišovat Ls na výstupu skripty od binárních souborů?

Je možné vytvořit ls odlišit spustitelné skripty od skutečných zkompilovaných binárních souborů?

Oprávnění jsou většinou stejná (+x ) a pomocí ls -F získáte příponu hvězdičky (* ) pro oba, takže je těžké je rozlišit. Mám skript pro nastavení barev ls , ale spoléhá na to, zda je soubor spustitelný nebo ne, takže se zobrazují stejně:

BG='01;32'  # green
EX="ex=$BG" # file with execute permission

Nechci se spoléhat na příponu, protože tolik z těchto souborů ji nemá.

Chci to, takže když uvidím nějakou bizarní chybovou zprávu a pomyslím si:„Jaký kód to způsobil?“, vím, zda je bezpečné cat nebo ne soubor.

Pokud neexistuje žádné standardní řešení, co takhle analyzovat výstup file , v jedné společné funkci a vložení nějaké rozlišovací značky? Nebo by to bylo příliš pomalé pro ls ?

Přijatá odpověď:

Chcete-li rozlišovat mezi binárními soubory a skripty, musíte se podívat na obsah souboru. ls to neudělá, dívá se pouze na názvy souborů a metadata (typ, oprávnění atd.).

Zde je hrubý analyzátor pro file že zabarvuje skripty a binární soubory odlišně. Funguje jako ls -d; přidání metadat by vyžadovalo záplatovací úlohu, která vyžaduje přímější přístup (např. v Perlu nebo Pythonu); použijte lsx somedir/* pro výpis obsahu adresáře. Předpokládá se, že názvy souborů neobsahují nové řádky ani dvojtečky (můžete změnit : oddělovač pro nějaký jiný řetězec s -F možnost file ).

lsx () { file -iN -- "[e-mail chráněn]" | while IFS=read -r řádek; do name=${line%%:*}; type=${line#*:} color=0 case $type in application/x-executable*) color='32';; text/x-shellscript*) color='01;32';; aplikace/*zip*) color='31';; esac printf
Linux
  1. Čtení Grepových vzorů ze souboru?

  2. Jak vytvořit soubor .click z nainstalované aplikace?

  3. Zachyťte výstup nethogs do souboru protokolu

  1. Jak zajistit, aby Iconv nahradil vstupní soubor převedeným výstupem?

  2. Přesměrování a výstup potrubí?

  3. Jak vytvoříte seznam/soubor pro instalaci pacmana?

  1. Odstranění redundance z výstupních sloupců?

  2. Jak udělat soubor řídký?

  3. Jak vytvořit soubor v Linuxu z okna terminálu?