Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/02/2020, à 15:08

qolepam

comment créer une commande externe ?

bonjour,

Je dispose d'un fichier.c contenant le code source d'une commande externe sous Mac Os.
Je sais que sur Ubuntu les chemins des commandes externes s'obtiennent en tapant dans le terminal:
>$PATH

Comment manipuler sur Ubuntu ce fichier.c pour créer la nouvelle commande externe dont le code source est dans ce fichier?
Quelles sont les étapes précises par lesquelles il faut passer pour créer cette nouvelle commande externe?

merci de votre aide

Hors ligne

#2 Le 29/02/2020, à 17:11

kamaris

Re : comment créer une commande externe ?

Eh bien il faudrait compiler le code c puis mettre l'exécutable dans un répertoire du PATH, mais rien ne dit que la compilation va bien se passer.
C'est quoi cette commande mac os ?

Hors ligne

#3 Le 29/02/2020, à 17:14

qolepam

Re : comment créer une commande externe ?

Hors ligne

#4 Le 29/02/2020, à 17:47

moko138

Re : comment créer une commande externe ?

Et euh... qu'est-ce que c'est une "commande externe" ?


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#5 Le 29/02/2020, à 17:54

kamaris

Re : comment créer une commande externe ?

La commande chflags est une commande système propre à mac os, que tu ne dois pas essayer d'utiliser sous gnu/linux.
Elle a un équivalent qu'il faut utiliser à la place : chattr (accompagnée de lsattr, pour lister les attributs).

moko138 a écrit :

Et euh... qu'est-ce que c'est une "commande externe" ?

Normalement, ce sont les commandes qui ne sont pas internes au shell, mais je ne sais pas si c'est ce que qolepam voulait dire…

Hors ligne

#6 Le 29/02/2020, à 23:21

qolepam

Re : comment créer une commande externe ?

je n'y arrive pas après lecture de man chattr
Avec quel attribut de chattr je peux cacher un dossier/fichier à la manière dans Mac OS avec la commande:
chflags hidden dossier ?

Hors ligne

#7 Le 29/02/2020, à 23:47

kamaris

Re : comment créer une commande externe ?

Sous les systèmes gnu/linux, comme sous unix, un fichier ou répertoire est caché si son nom commence par un point.
Ça ne fonctionne pas avec un attribut comme sous mac os (ce que j'apprends à cette occasion : je ne connais pas du tout mac os, qui manifestement n'hérite pas tout d'unix).
Donc tu renommes simplement ton fichier ou répertoire en mettant un point au début.

Hors ligne

#8 Le 01/03/2020, à 01:25

moko138

Re : comment créer une commande externe ?

kamaris a écrit :
moko138 a écrit :

Et euh... qu'est-ce que c'est une "commande externe" ?

Normalement, ce sont les commandes qui ne sont pas internes au shell, mais je ne sais pas si c'est ce que qolepam voulait dire…

Merci. Et aurais-tu, s'il te plaît, un exemple simple de commande interne au shell et un de commande externe, histoire que je commence à comprendre ?


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#9 Le 01/03/2020, à 02:21

kamaris

Re : comment créer une commande externe ?

Les commandes internes au shell (builtin commands, ou primitives du shell) sont listées par la commande enable, qui est elle même une commande interne.
Tout ce qui n'est pas dans cette liste est externe, donc par exemple ls, cp, cat, etc.
Mais bon, ça n'est qu'un point de vue : on pourrait aussi dire que ce qui est interne, c'est le shell, ses primitives, plus ce qui est dans le coreutils de gnu, et à ce moment-là, ls, cp et cat seraient internes.
Ou encore que ce qui est interne, c'est ce qui est dans les dépôts, etc.

Hors ligne

#10 Le 01/03/2020, à 04:19

moko138

Re : comment créer une commande externe ?

OK, merci kamaris !  smile

  - -

enable | wc -l
61

Les 3 quarts me sont inconnues...


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#11 Le 01/03/2020, à 13:56

kamaris

Re : comment créer une commande externe ?

De rien smile
Une autre liste, un peu plus complète, est donnée par la commande help, avec essentiellement en plus les commandes composées ([[, ((, for, while, etc.), même si il y aussi time et coproc, et puis une commande « variables » qui apparemment n'existe pas, mais est seulement une rubrique d'aide (cf. help variables).

Hors ligne

#12 Le 01/03/2020, à 14:01

Watael

Re : comment créer une commande externe ?

compgen -kb

pour voir les commandes internes et les mot-clés.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#13 Le 01/03/2020, à 14:15

kamaris

Re : comment créer une commande externe ?

Oui, effectivement, c'est encore ce qu'il y a de plus complet, même s'il lui manque l'évaluation arithmétique ((…)), curieusement (qui figure par contre dans help).

Hors ligne

#14 Le 01/03/2020, à 16:44

Watael

Re : comment créer une commande externe ?

l'évaluation arithmétique, c'est comme les différents développements (variables, chemins...).


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#15 Le 01/03/2020, à 16:53

kamaris

Re : comment créer une commande externe ?

Humm… je dirais non : le développement arithmétique $((…)), c'est comme les différents développements, et c'est posix.
Mais l'évaluation arithmétique ((…)), c'est un bashisme et c'est une commande à part, comme [[…]] (autre bashisme).

Hors ligne

#16 Le 01/03/2020, à 18:10

Watael

Re : comment créer une commande externe ?

la forme précédée d'un dollar permet l'affichage, ce qui en fait un développement, alors que le mécanisme sous-jacent est le même.
dans les deux cas, je ne vois qu'une évaluation arithmétique.
mais
let est bien une commande, et fait ce que font les parenthèses doubles.
(( seraient-elles à let le [ ou le [[ de  test ?...


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#17 Le 01/03/2020, à 18:39

kamaris

Re : comment créer une commande externe ?

Je suppose qu'effectivement, au niveau de l'implémentation, développement et évaluation arithmétiques sont liés, mais man bash distingue bien entre arithmetic evaluation et arithmetic expansion.
Il y a d'ailleurs de petites différences de comportement, par exemple à l'égard des guillemets simples : (('1'+2)) est une formulation valide, tandis que $(('1'+2)) non.
J'avais eu l'occasion de constater ça en travaillant sur un projet de coloration syntaxique.
Quant à let, sauf erreur, elle est bien à ((…)) ce que test est à […] (mais pas à [[…]]), d'ailleurs let aussi est propre à bash.

Quoi qu'il en soit, c'est curieux de la part de compgen -kb de lister comme commandes […], [[…]], et pas ((…)), mais bon… (d'ailleurs, elle liste aussi {…} sans lister (…) )

Dernière modification par kamaris (Le 02/03/2020, à 11:30)

Hors ligne