[LINUX] Essayez de programmer avec un shell!

Bonjour à tous!

Avez-vous déjà entendu parler d'un obus?

Si vous vous référez au site de ici,

Un shell est un cycle dans lequel, lors de l'utilisation du logiciel de terminal (kterm, etc.) sous UNIX / Linux, l'utilisateur entre la commande à exécuter à l'invite, voit le résultat affiché ici, puis entre la commande suivante. Travaillez de manière interactive avec. En réalité, l'utilisateur effectue divers traitements en utilisant les fonctions gérées par le noyau d'UNIX / Linux (noyau), mais le noyau lui-même n'a pas la capacité d'interagir directement avec l'utilisateur. Par conséquent, il existe un programme intermédiaire entre l'utilisateur et le noyau qui a la capacité d'interagir avec l'utilisateur et demande au noyau des opérations, et l'utilisateur effectue les opérations. Ce programme intermédiaire est appelé un shell car il ressemble à un "shell" qui s'enroule autour du noyau pour l'utilisateur (voir Figure 1). En termes simples, le shell a la capacité d'interpréter les commandes entrées par l'utilisateur, de demander au noyau de les traiter et d'afficher les résultats et les messages à l'écran.

C'est vrai!

En d'autres termes, lorsque nous donnons des instructions au noyau depuis le terminal, il semble que ce soit un interpréteur qui rompt avec le noyau et le traduit pour que le noyau puisse être compris!

Maintenant que vous avez une compréhension rapide du shell, commençons la programmation du shell en utilisant le terminal!

Il semble qu'il existe différents types de shells, mais comme bash est l'environnement standard des shells dans les récents Linux et Mac OS, nous utiliserons bash!

Programmation avec le shell

Un script shell est une collection de commandes exécutées par le shell dans un seul fichier.

À propos de la commande à utiliser

Pensez à la fonction que vous souhaitez utiliser et vérifiez-la!

L'extension du script shell est ".sh"

Exemple de script shell (un script qui exécute la commande date après avoir exécuté la commande ls, génère une chaîne de caractères avec la commande echo, reçoit le résultat d'entrée avec la commande read, le place dans une variable et le produit)

#!/bin/bash
ls
date
Veuillez saisir un message d'écho.
read message
echo Message d'entrée: $message

--Autorisations de fichier Pour tous les fichiers Linux

・ Utilisateur propriétaire du fichier ·Appartenance à un groupe ・ Autres utilisateurs Pour un groupe de trois comptes

・ Lisible ・ Inscriptible ・ Exécutable

Gère trois autorisations

chmod a + x my-first.sh modifie les permissions des fichiers afin que my-first.sh puisse être exécuté par tous les utilisateurs

--Exécuter un script shell Doit être exécuté avec un chemin relatif avec . / → Sinon, l'erreur my-first.sh: command not found se produira ↓ Si vous ne spécifiez pas de chemin relatif, il sera reconnu comme une commande, vous serez donc en colère contre "Il n'y a pas de telle commande!"

Résultat d'exécution

$ ./my-first.sh

my-first.sh
Jeudi 29 mars 2018 08:13:52 UTC
Veuillez saisir un message.
Message saisi: hoge

Affichez le contenu de l'entrée en remplaçant la chaîne de caractères d'entrée par la variable du premier argument par la commande read et en spécifiant la variable avec «$» avec la commande echo.

--Si instruction dans le script shell

#!/bin/bash
read -p "Yarigatake est-elle la deuxième plus haute montagne du Japon?[y/n]" yn
if [ $yn = "n" ]; then
echo Bonne réponse. La deuxième plus haute montagne du Japon est Kitadake.
else
echo Mauvaise réponse. La deuxième plus haute montagne du Japon est Kitadake.
fi

La commande read peut recevoir une entrée dans une variable tout en affichant des caractères en ajoutant l'option -p "chaîne de caractères à afficher".

L'instruction if est ʻif [$ yn = "n"]; then`, la condition est entrée entre [] avec un espace, et le dernier est un deux-points et "alors". De plus, il est nécessaire d'écrire «fi» à la fin de l'instruction if.

Boucle de while :; do à done jusqu'à ce que le message de fin soit reçu

Exemple: while :; do (echo" Merci pour votre accès! ") | Nc -l 8000; done

→ Démarrez en tant que serveur en utilisant le port 8000, et s'il y a accès, retournez le contenu de la sortie standard et quitte

Passer la sortie standard de la commande echo à la commande nc en utilisant | (pipe)

Commande nc: abréviation de NetCat. Il s'agit d'une commande permettant de lire et d'écrire TCP et UDP, et possède diverses fonctions telles que l'acquisition d'informations à partir d'un serveur Web, l'installation d'un serveur Web simple et l'envoi de courrier.

Port: l'un des arrangements de communication TCP et UDP. Communiquez en définissant l'un des nombres de 0 à 65535. Afin de communiquer, vous devez toujours utiliser un type de port, et dans de nombreux cas, ce port est déterminé par le protocole ou le logiciel.

Recommended Posts

Essayez de programmer avec un shell!
Essayez de créer un problème FizzBuzz avec un programme shell
Essayez la programmation GUI avec Hy
Essayons un script shell
Programmation pour les humains avec un __repr__ bien défini
Essayez de dessiner une distribution normale avec matplotlib
Essayez le scraping HTML avec la bibliothèque Python
Essayez d'utiliser un langage de programmation probabiliste (Pyro)
Gérez les générations de rotation des journaux avec un script shell.
Essayez un tube de programmation fonctionnel en Python
Essayez de dessiner une carte avec python + cartopy 0.18.0
Essayez TensorFlow RNN avec un modèle de base
Essayez Tensorflow avec une instance GPU sur AWS
Afficher les prévisions météorologiques du jour avec le script shell
Essayez de dessiner une courbe de vie avec python
Essayez d'envoyer un message avec le service SMS de Twilio
Essayez de créer un code de "décryptage" en Python
Essayez de créer un groupe de dièdre avec Python
Essayez de dessiner une carte avec le package folium de Python
Essayez de gratter avec Python.
Programmation asynchrone avec libev # 2
3. 3. Programmation IA avec Python
Grattage avec coquille tremblante
Programmation Python avec Atom
Programmation compétitive avec python
Programmation Shader avec pyOpenGL
Essayez SNN avec BindsNET
J'ai essayé la programmation shell
Programmation asynchrone avec libev
Programmation linéaire avec PuLP
Essayez la régression avec TensorFlow
Décorer avec un décorateur
Programmation avec Python Flask
Programmation asynchrone avec libev # 3
Essayez de créer un site Web simple avec responder et sqlite3
Faisons un outil de veille de commande avec python
Essayez de créer un Checkbutton dynamiquement avec Tkinter en Python
Essayez d'incorporer Python dans un programme C ++ avec pybind11
Un échantillon pour essayer rapidement les machines de factorisation avec fastFM
Programmation avec Python et Tkinter
Essayez de défier le sol par récursif
Essayez d'exécuter python dans l'environnement Django créé avec pipenv
Essayez l'optimisation des fonctions avec Optuna
Apprenez librosa avec un tutoriel 1
Essayez l'apprentissage en profondeur avec TensorFlow
Essayez d'utiliser PythonTex avec Texpad.
Essayez la programmation Linux normale, partie 7
Essayez la détection des bords avec OpenCV
Essayez d'implémenter RBM avec chainer.
Essayez Google Mock avec C
[Linux] Copie des données de Linux vers Windows avec un script shell
Essayez d'utiliser matplotlib avec PyCharm
Essayez Auto Encoder avec Pytorch
Essayez la sortie Python avec Haxe 3.2
Essayez l'opération matricielle avec NumPy
[Python] Essayez d'optimiser les paramètres de systole FX avec un algorithme génétique
Essayez la programmation Linux normale, partie 2
Créer une page d'accueil avec django