Quelles langues sont utilisées pour créer des commandes Unix?

9

Des exemples de commandes dont je parle sont ls, pwdet cd. De plus, comment sont-ils construits? Avez-vous un exemple?

fronthem
la source
2
Est-ce des devoirs?
Stefan Lasiewski

Réponses:

26

C'est généralement simple C. Les commandes lset pwdproviennent du GNU Coreutilspackage dans (la plupart?) Des distributions Linux (et peut-être d'autres systèmes). Vous pouvez trouver le code sur leur page d'accueil .

Plus coreutilsprécisément, vous les construisez avec les étapes habituelles: après avoir déballé la source, lancez:

./configure --prefix=/some/path
                   # type ./configure --help to get the available options
make
make install       # could require root access depending on the path you used

Soyez prudent - l'installation d'utilitaires de base comme ceux sur la copie de votre distribution est une mauvaise idée . Utilisez pour cela le gestionnaire de paquets fourni avec votre système. Vous pouvez toutefois installer sur un préfixe différent (l'installation quelque part dans votre répertoire personnel est une bonne idée si vous voulez expérimenter).

Notez que bien qu'il existe un cdexécutable , celui cdque vous utiliserez dans la plupart des cas n'est pas un exécutable distinct. Ce doit être un shell intégré (sinon il ne pourrait pas changer le répertoire courant du shell - cela doit être fait par le processus lui-même), donc il est écrit dans le même langage que le shell (ce qui est souvent Caussi).

Autres exemples:

  • pwdSource OpenSolaris .
  • FreeBSD ls

Vous pouvez en trouver beaucoup plus en ligne.

Tapis
la source
5

Juste pour ajouter un peu plus à la réponse de Mat, bien qu'Unix les implémente en tant que programmes autonomes, de nombreuses commandes sont également implémentées dans bash(pour lui éviter d'avoir à générer un nouveau processus) voir la bashpage de manuel pour plus de détails, ou jetez un œil au .

bash est également écrit en C

Il est intéressant de noter que ces commandes ne doivent être écrits en C - En effet, plusieurs mini - utilisation de la distribution linux luaimplémentations de ces et d' autres.

symcbean
la source
2
Eh bien bash, ou tout autre bon shell.
rds
1
Notez également que certaines commandes telles que cddoivent être un shell intégré pour fonctionner efficacement.
Programmeur