[Langage C] [Linux] Essayez de créer une simple commande Linux * Ajoutez simplement! !!

introduction

Je n'utilisais pas du tout le langage C, donc je voulais l'utiliser pour la première fois depuis longtemps. Donc, je vais essayer de créer ma propre commande qui s'additionne, également en tant que revue de Linux.

La spécification de la commande consiste à afficher la valeur totale des valeurs numériques après le deuxième argument de la ligne de commande.

Objectif

・ En créant une commande simple, vous pouvez imaginer à quoi ressemble la commande. -Comprendre le concept de PATH auquel Linux se réfère lors de l'exécution de commandes. Pour les raisons ci-dessus, une explication détaillée de la mise en œuvre est omise.

environnement

・ Amazon Linux AMI version 2018.03

procédure

1. Créez un répertoire de test

Après cela, le travail sera effectué sous ce répertoire.

Commande de création d'annuaire


$ mkdir test; cd test

2. Créez un fichier de code source

J'utilise vi ici, mais n'importe quel éditeur de texte peut être utilisé.

Commande de création de fichier


$ vi test_sum.c

3. Mise en œuvre

Copiez le code source suivant.

test_sum.c


#include <stdio.h>

int main(int argc, char *argv[])
{
  int sum = 0;
  int count = 0;

  if (argc < 3) {
    printf("ERROR: invalid of arguments number\n");
    return 1;
  }

  /* argv[0]Est la commande elle-même, elle est donc exclue de la cible de calcul, donc comptez=À partir de 1*/
  for (count=1; count<argc; count++) {
    sum += atoi(argv[count]);
  }
  printf("%d\n", sum);

  return 0;
}

Notez que atoi convertit à partir du chiffre le plus significatif et arrête la conversion lorsqu'il détecte un caractère autre qu'un nombre. Exemple) "a": renvoie 0 car rien ne peut être converti. "1a3": le 1 le plus significatif est converti, mais la conversion est arrêtée car a est détecté et 1 est renvoyé.

4. Compilez

Compilez le code source (test_sum.c) en utilisant gcc

Commande de compilation


$ gcc -o test_sum test_sum.c

L'opération est simple, mais ceci termine la commande test_sum!

5. Contrôle de fonctionnement simple

Essayez d'utiliser votre propre test_sum. Ci-dessous, essayez quelques modèles.

test_Calcul à l'aide de la somme


$ ./test_sum 123
ERROR: invalid of arguments number
$ ./test_sum 123 23456
23579
$ ./test_sum 123 23456 812
24391

Grand succès! !!

6. Paramètre PATH

Si cela reste tel quel, il sera nécessaire de spécifier le chemin ("./") à chaque fois, alors réglez-le pour qu'il fonctionne sans spécifier le chemin comme les autres commandes.

6.1. Qu'est-ce que PATH?

Une variable d'environnement qui résume le chemin pour rechercher un fichier lorsque Linux exécute un fichier exécutable (ELF). Linux recherche les chemins définis dans le PATH dans l'ordre et exécute le premier fichier exécutable trouvé.

6.2. Paramètre PATH

Utilisez l'exportation pour définir des variables d'environnement telles que PATH. Enregistrez le chemin du répertoire actuel (répertoire actuel) dans le PATH avec la commande suivante.

Définissez le chemin du répertoire actuel sur PATH


$ export PATH=$PATH:$(pwd)

Vous n'avez plus à spécifier le chemin dans aucun répertoire! Notez que ce paramètre disparaît lorsque vous déposez le shell! !! </ strong>

6.3. Contrôle de fonctionnement

Déplacez le répertoire de manière appropriée et vérifiez le fonctionnement.

Contrôle de fonctionnement


$ test_sum 1 2 3
6
$ cd ~
$ test_sum 1 2 3
6
$ cd /tmp
$ test_sum 1 2 3
6

Grand succès! !! Vous pouvez maintenant utiliser la commande test_sum comme n'importe quelle autre commande Linux.

  • Additionnez simplement. .. ..

prime

Utilisez lequel pour vérifier le chemin des commandes telles que ls et find. Bien sûr, vous pouvez également vérifier l'emplacement du test_sum créé avec la commande which.

Vérifiez le chemin de la commande


$ which ls
alias ls='ls --color=auto'
        /bin/ls
$ which find
/bin/find
$ which test_sum
~/environment/test/test_sum

Corrections

・ Modifiez légèrement le titre et le contenu ・ Ajout sur PATH -Renommé pour éviter toute confusion avec les commandes existantes -Définir l'état de fin (la valeur de retour est 0 en cas de succès, 1 en cas d'échec) @fujitanozomu Merci d'avoir souligné! ・ Ajouter un objectif

Recommended Posts

[Langage C] [Linux] Essayez de créer une simple commande Linux * Ajoutez simplement! !!
Essayez de créer une nouvelle commande sous Linux
Essayez de créer un module Python en langage C
Essayez de sélectionner une langue
[Go language] Essayez de créer un compteur de lignes inutilement multithread
Pour ajouter un module C à MicroPython ...
Commande pour créer Linux Live USB
Les utilisateurs de Rails essaient de créer un moteur de blog simple avec Django
[Langage C] Comment créer, éviter et créer un processus zombie
[Commande de commodité Linux] Essayez d'insérer vivid
Ajouter une commande pour marquer ensemble des fichiers similaires
Créez une sous-sous-commande à l'aide de la commande click --netsted sub-sub -
Créez une commande pour obtenir le journal de travail
Faisons un outil de veille de commande avec python
Essayez de créer un Checkbutton dynamiquement avec Tkinter en Python
Comment créer un référentiel local pour le système d'exploitation Linux
Comment créer un simple script serveur / client TCP
Créez une API simple juste pour entrer et sortir des fichiers JSON ~ Édition Python / Flask ~
Ajouter un utilisateur Linux, comment utiliser la commande useradd (spécifier le mot de passe)
[Python Kivy] Comment créer une simple fenêtre pop-up
Essayez simplement de recevoir un webhook avec ngrok et Python
Utilisez un langage de script pour une vie C ++ confortable-OpenCV-Port Python vers C ++ -
Une super introduction à Linux
Ajouter un dictionnaire à MeCab
Créer un serveur REST (simple)
Créer un serveur textlint simple
linux: créer la commande Terminal d'origine
J'ai essayé de créer un pointage de crédit simple avec régression logistique.
Essayez de créer un environnement python avec Visual Studio Code et WSL
[Go] Créez une commande CLI pour changer l'extension de l'image
Essayez de créer un type de service Web avec un langage de balisage 3D
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
Essayez de créer un article de Qiita avec l'API REST [Préparation environnementale]
Créez un outil de ligne de commande pour convertir des dollars en yens en utilisant Python
[Commande de commodité Linux] Essayez d'insérer exa
Essayez de dessiner une courbe de Bézier
Étapes pour créer un projet Django
Un mémorandum pour passer à Manjaro Linux
Comment créer un package Conda
[Commande de commodité Linux] Essayez d'insérer csview
Introduction à Protobuf-c (langage C ⇔ Python)
Comment créer un pont virtuel
[linux] commande kill pour tuer le processus
Créer un environnement Linux sur Windows 10
[Commande pratique Linux] Essayez d'insérer bat
Comment créer un Dockerfile (basique)
5 façons de créer un chatbot Python
Comment créer un fichier de configuration
Créez un wrapper de langage C à l'aide de Boost.Python
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
[Python / Tkinter] Rechercher Pandas DataFrame → Créer un formulaire de recherche simple à afficher
Créez une commande pour supprimer tous les fichiers temporaires générés dans un dossier spécifique
Utilisez un langage de script pour une vie confortable en C ++ 3-Laissez le graphique à matplotlib-
Créer une socket avec une interface Ethernet (eth0, eth1) (Linux, C, Raspberry Pi)
Qu'est-ce qu'une bibliothèque en langage C? Quelles informations sont ouvertes au public?
[Langage C] Comment utiliser la fonction crypt sous Linux [Hachage de mot de passe]
[Python] [Word] [python-docx] Essayez de créer un modèle de phrase de mot en Python en utilisant python-docx
3. Traitement du langage naturel avec Python 1-2. Comment créer un corpus: Aozora Bunko