|
|
|
|
||||||
| fr.comp.os.linux.config Prise en main d'un système Linux. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Ca fait un bon bout de temps que je regarde la page man de la commande "ls". J'ai regardé aussi les otpions sur différents sites web. On en fait un tas de truc avec cette commande! Mais je n'ai pas trouvé ce que je voulais. Je voudrais par exemple lister tous les exécutables qui se trouvent dans un répertoire. Comment faut-il écrire avec cette commande? J'arrive à voir par exemple les répertoires avec ls -d */, ou même les images jpg avec ls -d *.jpg, mais pas les exécutables?! -- @+ gr |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
G-raison <jairaison@wanadoo.fr> a écrit:
> J'arrive à voir par exemple les répertoires avec ls -d */, ou même les > images jpg avec ls -d *.jpg, mais pas les exécutables?! Le fait qu'un fichier soit exécutable est un droit, pas un type de fichier. Regarde plutôt du côté de find. -- Nicolas S. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
--{ G-raison a plopé ceci: }--
> Je voudrais par exemple lister tous les exécutables qui se trouvent dans un > répertoire. > Comment faut-il écrire avec cette commande? > > J'arrive à voir par exemple les répertoires avec ls -d */, ou même les > images jpg avec ls -d *.jpg, mais pas les exécutables?! Il faut utiliser la commande "find". -- "C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg". --{ Bjarne Stroustrup }-- |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
On Tue, 23 Oct 2007 22:46:51 +0200, G-raison <jairaison@wanadoo.fr>:
>Je voudrais par exemple lister tous les exécutables qui se trouvent dans un >répertoire. Si tu veux faire la liste de tous les fichiers d'un répertoire que tu peux exécuter, tu peux par exemple taper : ls -l|grep -E "^-..x" find est plus compliqué, mais probablement plus fiable, et plus adapté aux scripts. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Bonjour,
On Tue, 23 Oct 2007 23:06:38 +0200, Nicolas S. wrote: > Le fait qu'un fichier soit exécutable est un droit, pas un type de > fichier. Regarde plutôt du côté de find. En même temps, si quelqu'un a donné à un fichier texte le droit d'exécution, tu ne vas pas être plus avancé ;-) La commande file revoie le type des fichiers passés en argument (type qui effectivement ne dépend pas de l'extension). $ find /repertoire_a_analyser/* |grep executable |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
On Wed, 24 Oct 2007 06:31:45 +0000, didier gaumet wrote:
> La commande file revoie [...] ....renvoie... |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
On 24 Oct 2007 06:31:45 GMT, didier gaumet
<didier.gaumet@libertysurf.fr>: >En même temps, si quelqu'un a donné à un fichier texte le >droit d'exécution, tu ne vas pas être plus avancé ;-) Ça dépend ce que tu entends par "fichier texte". Si le fichier texte en question contient quelque chose comme #!/bin/bash echo Hello World! il est parfaitement normal de lui donner un droit d'exécution. |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
didier gaumet <didier.gaumet@libertysurf.fr> a écrit:
> En même temps, si quelqu'un a donné à un fichier texte le > droit d'exécution, tu ne vas pas être plus avancé ;-) Heu, si. C'est sur ce seul principe qu'est basé une bonne partie de ton système. Ça s'appelle un script. > La commande file revoie le type des fichiers passés en argument (type > qui effectivement ne dépend pas de l'extension). > > $ find /repertoire_a_analyser/* |grep executable ^^^^ J'imagine que tu voulais mettre file. C'est acceptable occasionnellement, _mais_ tu dois bien être conscient que ça va aussi te renvoyer les fichiers dont le _nom_ contient 'executable'. -- Nicolas S. |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
On Wed, 24 Oct 2007 08:57:38 +0200, Nicolas S. wrote:
> Heu, si. C'est sur ce seul principe qu'est basé une bonne partie de ton > système. Ça s'appelle un script. [...] Certes, mais pour être plus précis, si tu rends exécutable un fichier texte qui contient ta recette de la charlotte aux fraises, tu vas être chocolat ;-) étymologiquement, c'est aussi un script, mais ton ordi risque d'avoir du mal ;-) >> $ find /repertoire_a_analyser/* |grep executable > ^^^^ > J'imagine que tu voulais mettre file. Oui :-) > C'est acceptable occasionnellement, _mais_ tu dois bien être conscient > que ça va aussi te renvoyer les fichiers dont le _nom_ contient > 'executable'. oui :-) |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
G-raison wrote in message <471e5d8d$0$27366$ba4acef3@news.orange.fr>:
> Je voudrais par exemple lister tous les exécutables qui se trouvent dans un > répertoire. ls bin Si ça ne marche pas, c'est que tu dois faire du ménage. |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
didier gaumet a écrit :
> > Certes, mais pour être plus précis, si tu rends exécutable un fichier > texte qui contient ta recette de la charlotte aux fraises, Si tu as un interpréteur capable d'exécuter la séquence d'instructions que constitue la recette, je ne vois pas où est le problème. L'OP demande comment trouver une liste d'exécutables, pas nécessairement de binaires exécutables, la liste que renvoie la commande que tu proposes est donc incomplète. man find A+ JF |
|
|
|
#12 |
|
Messages: n/a
Hébergeur: |
On Wed, 24 Oct 2007 13:13:11 +0200, Cumbalero wrote:
> didier gaumet a écrit : >> >> Certes, mais pour être plus précis, si tu rends exécutable un fichier >> texte qui contient ta recette de la charlotte aux fraises, > > Si tu as un interpréteur capable d'exécuter la séquence d'instructions > que constitue la recette, je ne vois pas où est le problème. Ben, le problème, c'est que je suis toujours à la recherche du shell qui me permettra d'éviter de cuisiner moi-même une charlotte aux fraises ;-) Donc le script shell charlotte_aux_fraises.sh ne risque pas d'être exécutable même si on lui confère des droits d'exécution. > L'OP demande comment trouver une liste d'exécutables, pas nécessairement > de binaires exécutables, la liste que renvoie la commande que tu > proposes est donc incomplète. [...] la commande $ file * | grep executable ne renvoie pas que les binaires mais aussi entre autres les shells: didier@laptop-didier:~$ file /etc/init.d/* | grep executable | head /etc/init.d/915resolution: Bourne shell script text executable /etc/init.d/acpid: Bourne shell script text executable /etc/init.d/acpi-support: Bourne-Again shell script text executable /etc/init.d/alsa: Bourne shell script text executable /etc/init.d/alsa-utils: Bourne shell script text executable /etc/init.d/amavis: Bourne shell script text executable /etc/init.d/anacron: Bourne shell script text executable /etc/init.d/apache2: Bourne shell script text executable /etc/init.d/apmd: Bourne shell script text executable /etc/init.d/atd: Bourne shell script text executable |
|
|
|
#13 |
|
Messages: n/a
Hébergeur: |
On 24 Oct 2007 14:20:32 GMT, didier gaumet
<didier.gaumet@libertysurf.fr> wrote: >Ben, le problème, c'est que je suis toujours à la recherche du shell >qui me permettra d'éviter de cuisiner moi-même une charlotte aux fraises ;-) Le shell n'y est pour rien. Simple problème d'abord de normalisation de l'interface des appareils de la cuisine, et de l'existence d'un langage de gestion d'iceux, qui pourrait certes être une extension du shell :-) (pas dans ma cuisine, hein...) -- Nina |
|
|
|
#14 |
|
Messages: n/a
Hébergeur: |
Nina Popravka <Nina@nospam.invalid> écrivait:
> On 24 Oct 2007 14:20:32 GMT, didier gaumet > <didier.gaumet@libertysurf.fr> wrote: > >>Ben, le problème, c'est que je suis toujours à la recherche du shell >>qui me permettra d'éviter de cuisiner moi-même une charlotte aux fraises ;-) > > Le shell n'y est pour rien. > Simple problème d'abord de normalisation de l'interface des appareils > de la cuisine, et de l'existence d'un langage de gestion d'iceux, qui > pourrait certes être une extension du shell :-) > (pas dans ma cuisine, hein...) Le shell, c'est pour cuisiner les coquilles St Jacques. -- Erwan |
|
|
|
#15 |
|
Messages: n/a
Hébergeur: |
On Wed, 24 Oct 2007 17:00:12 +0200, Erwan David <erwan@rail.eu.org>
wrote: >Le shell, c'est pour cuisiner les coquilles St Jacques. Si on me trouve un ouvreur à huîtres automatique efficace commandé par un shell *nix, je promet de ne plus utiliser que du *nix, et même une slack si il le faut :-) (faut que ça aille les prendre dans la bourriche et les mette dans l'assiette, hein...) -- Nina |
|
|
|
#16 |
|
Messages: n/a
Hébergeur: |
didier gaumet wrote:
> $ find /repertoire_a_analyser/* |grep executable Ah, ça ne liste rien chez moi. ;-) -- @+ gr |
|
|
|
#17 |
|
Messages: n/a
Hébergeur: |
Fabien LE LEZ wrote:
> ls -l|grep -E "^-..x" Ah ça, ça marche. Mais faut avouer quand même que la syntaxe est complexe. Par exemple sur un autre OS on aurait tapé "dir *.exe", mais bon ce n'est pas la même chose. En tout cas merci à tous pour vos réponses. Par contre, faut que je trouve la page man de find en Français, car là c'est en anglais sur mon truc. -- @+ gr |
|
|
|
#18 |
|
Messages: n/a
Hébergeur: |
G-raison wrote in message <471f78ae$0$5065$ba4acef3@news.orange.fr>:
> Par exemple sur un autre OS on aurait tapé "dir *.exe" Et on aurait raté les .com et les .bat. |
|
|
|
#19 |
|
Messages: n/a
Hébergeur: |
Nicolas George wrote:
> ls bin > > Si ça ne marche pas, c'est que tu dois faire du ménage. Là, ça me donne le contenu du répertoire bin/ que j'ai dans mon dossier personnel. D'ailleurs je n'ai pas grand chose à part deux liens symboliques. -- @+ gr |
|
|
|
#20 |
|
Messages: n/a
Hébergeur: |
Nicolas George <nicolas$george@salle-s.org> a écrit:
> G-raison wrote in message <471f78ae$0$5065$ba4acef3@news.orange.fr>: > > Par exemple sur un autre OS on aurait tapé "dir *.exe" > > Et on aurait raté les .com et les .bat. Et les .vbs, et les .trucs, etc... -- Nicolas S. |
|
|
|
#21 |
|
Messages: n/a
Hébergeur: |
G-raison <jairaison@wanadoo.fr> a écrit:
> Par exemple sur un autre OS on aurait tapé "dir *.exe", mais bon ce > n'est pas la même chose. Mais sur un autre OS de ce genre, c'est un bordel monstre pour localiser les fichiers appartenant à un programme. Ce n'est pas le cas pour une distribution GNU/Linux. Pourquoi cherches tu à faire ça? -- Nicolas S. |
|
|
|
#22 |
|
Messages: n/a
Hébergeur: |
G-raison <jairaison@wanadoo.fr> a écrit:
> Là, ça me donne le contenu du répertoire bin/ que j'ai dans mon > dossier personnel. > D'ailleurs je n'ai pas grand chose à part deux liens symboliques. D'où le sens de sa remarque: si tes exécutables ne sont pas dans bin, tu as un sacré tri à faire. -- Nicolas S. |
|
|
|
#23 |
|
Messages: n/a
Hébergeur: |
On Wed, 24 Oct 2007 18:51:33 +0200, G-raison wrote:
>> $ find /repertoire_a_analyser/* |grep executable > > Ah, ça ne liste rien chez moi. ;-) C'est normal, j'ai écrit avec mes pieds ;-) Je voulais parler de la commande file mais comme on parlait de la commande find, je me suis trompé en écrivant. $ file /repertoire_a_analyser/* |grep executable |
|
|
|
#24 |
|
Messages: n/a
Hébergeur: |
On Wed, 24 Oct 2007 18:55:05 +0200, G-raison <jairaison@wanadoo.fr>:
>> ls -l|grep -E "^-..x" > >Ah ça, ça marche. >Mais faut avouer quand même que la syntaxe est complexe. En tant que recette de cuisine, oui. Mais bon, la clé est de connaître les regex[*], et d'observer la sortie de ls -l. Le début d'une ligne renvoyée par "ls -l" est quelque chose comme "drwx", avec chaque lettre remplacée par un tiret si l'attribut est inactif. Le d indique qu'il s'agit d'un répertoire ; tu n'en veux pas, donc tu veux un tirer à cette position. Les deux lettres suivantes, on s'en fout ici ; la quatrième lettre indique le droit en exécution, ce qui t'intéresse -- tu veux un x à cet emplacement. Tu passes donc la sortie de "ls -l" à grep avec les arguments : -E -> ce qui suit est une regex ^ -> chercher uniquement au début de la ligne - -> la première "lettre" doit être un tiret (ignorer les répertoires) . -> n'importe quelle lettre (deux fois) x -> la quatrième lettre doit être un x On rajoute des guillemets pour faire joli (et pour éviter quelques surprises), et le tour est joué ! [*] Regex : "regular expressions" en anglais, "expressions régulières" ou "expressions rationnelles" en français. C'est le genre de truc totalement indispensable quand, d'une manière générale, on veut rechercher ou remplacer du texte. Cf Google. |
|
|
|
#25 |
|
Messages: n/a
Hébergeur: |
Fabien LE LEZ wrote in message
<h1vuh35vlt6004q7euml5muidkhuoo5ceb@4ax.com>: >[*] Regex : "regular expressions" en anglais, "expressions régulières" > ou "expressions rationnelles" en français. Normalement, seulement rationnelles. |
|
![]() |
| Outils de la discussion | |
|
|