GNU/Linux >> Tutoriels Linux >  >> Linux

Faire en sorte que Ls distingue les scripts des fichiers binaires dans la sortie ?

Est-il possible de faire ls distinguer les scripts exécutables des vrais binaires compilés ?

Les permissions sont le plus souvent les mêmes (+x ), et avec ls -F vous obtenez un suffixe astérisque (* ) pour les deux, il est donc difficile de les distinguer. J'ai un script pour configurer les couleurs de ls , mais cela dépend du fait que le fichier soit exécutable ou non, donc ils s'affichent de la même manière :

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

Je ne veux pas dépendre de l'extension car beaucoup de ces fichiers ne l'ont pas.

Je veux ça donc quand je vois un message d'erreur bizarre et que je pense, "Quel code a causé ça?", Je sais s'il est sûr ou non de cat le fichier.

S'il n'y a pas de solution standard, qu'en est-il de l'analyse de la sortie de file , dans une fonction commune, et insérant une marque distinctive ? Ou serait-ce beaucoup trop lent pour ls ?

Réponse acceptée :

Vous devez examiner le contenu d'un fichier pour faire la distinction entre les binaires et les scripts. ls ne le fera pas, il ne regarde que les noms de fichiers et les métadonnées (type, permission, etc.).

Voici un analyseur brut pour file qui colore différemment les scripts et les binaires. Il agit comme ls -d; l'ajout de métadonnées nécessiterait un travail de patch-up qui nécessite une approche plus directe (par exemple en Perl ou Python) ; utilisez lsx somedir/* pour lister le contenu d'un répertoire. Les noms de fichiers sont supposés ne pas contenir de nouvelles lignes ni de deux-points (vous pouvez changer le : séparateur pour une autre chaîne avec le -F option pour file ).

lsx () { file -iN -- "[email protected]" | tandis que IFS=lire -r ligne ; faire nom=${ligne%% :*} ; type=${line#* :} color=0 case $type in application/x-executable*) color='32';; text/x-shellscript*) color='01;32';; application/*zip*) color='31';; esac printf '
Linux
  1. Comment supprimer plusieurs lignes aléatoires d'un fichier texte à l'aide de Sed ?

  2. Rediriger et canaliser la sortie ?

  3. Lire des modèles Grep à partir d'un fichier ?

  4. Comment créer un fichier sous Linux à partir de la fenêtre du terminal ?

  5. Rediriger la sortie d'un bloc fonctionnel vers un fichier sous Linux

Bash :Écrire dans un fichier

Comment rendre un fichier exécutable sous Linux

Coloriser la sortie des capteurs ?

Enregistrer la sortie d'une commande du terminal Debian dans un fichier

créer un fichier journal

Comment supprimer une chaîne d'un fichier via des scripts shell ?