Apprenez les bases de la fonctionnalité des E / S Linux (entrée / sortie)
- 3749
- 862
- Mohamed Brunet
L'un des sujets les plus importants et les plus intéressants sous l'administration Linux est la redirection d'E / S. Cette fonctionnalité de la ligne de commande vous permet de rediriger l'entrée et / ou la sortie des commandes de et / ou des fichiers, ou de rejoindre plusieurs commandes ensemble à l'aide de tuyaux pour former ce que l'on appelle un "pipeline de commande".
Toutes les commandes que nous exécutons produisent fondamentalement deux types de sortie:
- le résultat de la commande - données que le programme est conçue pour produire, et
- L'état du programme et les messages d'erreur qui informent un utilisateur des détails de l'exécution du programme.
Dans Linux et d'autres systèmes de type Unix, il existe trois fichiers par défaut nommés ci-dessous qui sont également identifiés par le shell à l'aide de numéros de descripteur de fichiers:
- stdin ou 0 - Il est connecté au clavier, la plupart des programmes lisent les entrées de ce fichier.
- stdout ou 1 - il est attaché à l'écran, et tous les programmes envoient leurs résultats à ce fichier et
- stderr ou 2 - Programmes Envoyer des messages d'état / d'erreur à ce fichier qui est également joint à l'écran.
Par conséquent, la redirection d'E / S vous permet de modifier la source d'entrée d'une commande ainsi que où ses messages de sortie et d'erreur sont envoyés à. Et ceci est rendu possible par le "<”
et ">"
opérateurs de redirection.
Comment rediriger la sortie standard en fichier dans Linux
Vous pouvez rediriger la sortie standard comme dans l'exemple ci-dessous, ici, nous voulons stocker la sortie de la commande supérieure pour une inspection ultérieure:
$ TOP -BN 5> TOP.enregistrer
Où les drapeaux:
-b
- actif haut Pour s'exécuter en mode lot, afin que vous puissiez rediriger sa sortie vers un fichier ou une autre commande.-n
- Spécifie le nombre d'itérations avant la fin de la commande.
Vous pouvez voir le contenu de haut.enregistrer
Fichier utilisant la commande CAT comme suit:
$ Cat Top.enregistrer
Pour ajouter la sortie d'une commande, utilisez le ">>"
opérateur.
Par exemple pour ajouter la sortie de la commande supérieure ci-dessus dans le haut.enregistrer Fichier en particulier dans un script (ou sur la ligne de commande), entrez la ligne ci-dessous:
$ TOP -BN 5 >> TOP.enregistrer
Note: En utilisant le numéro de descripteur de fichier, la commande de redirection de sortie ci-dessus est la même que:
$ TOP -BN 5 1> TOP.enregistrer
Comment rediriger l'erreur standard vers le fichier dans Linux
Pour rediriger l'erreur standard d'une commande, vous devez spécifier explicitement le numéro de descripteur de fichier, 2
pour que la coquille comprenne ce que vous essayez de faire.
Par exemple, la commande LS ci-dessous produira une erreur lorsqu'elle est exécutée par un utilisateur système normal sans privilèges racine:
$ ls -l / root /
Vous pouvez rediriger l'erreur standard vers un fichier comme ci-dessous:
$ ls -l / root / 2> ls-error.journal $ cat ls-error.enregistrerRediriger l'erreur standard vers le fichier
Afin d'ajouter l'erreur standard, utilisez la commande ci-dessous:
$ ls -l / root / 2 >> ls-error.enregistrer
Comment rediriger la sortie / erreur standard vers un fichier
Il est également possible de capturer toutes les sorties d'une commande (sortie standard et erreur standard) dans un seul fichier. Cela peut être fait de deux manières possibles en spécifiant les numéros de descripteur de fichiers:
1. Le premier est une méthode relativement ancienne qui fonctionne comme suit:
$ ls -l / root /> ls-error.journal 2> & 1
La commande ci-dessus signifie que le shell enverra d'abord la sortie de la commande LS au fichier error LS.enregistrer (en utilisant > LS-error.enregistrer
), puis écrit tous les messages d'erreur au descripteur de fichier 2 (sortie standard) qui a été redirigé vers le fichier error LS.enregistrer (en utilisant 2> & 1
). Impliquant que l'erreur standard est également envoyée au même fichier que la sortie standard.
2. La deuxième méthode et directe est:
$ ls -l / root / &> ls-error.enregistrer
Vous pouvez également ajouter la sortie standard et l'erreur standard à un seul fichier comme tel:
$ ls -l / root / & >> ls-error.enregistrer
Comment rediriger l'entrée standard vers le fichier
La plupart, sinon toutes les commandes obtiennent leur entrée à partir de l'entrée standard et par défaut, l'entrée standard est fixée au clavier.
Pour rediriger les entrées standard à partir d'un fichier autre que le clavier, utilisez le "<”
Opérateur comme ci-dessous:
$ chatRediriger l'entrée standard vers le fichier Comment rediriger l'entrée / sortie standard vers le fichier
Vous pouvez effectuer une entrée standard, la redirection de sortie standard en même temps à l'aide de la commande de tri comme ci-dessous:
$ Toi tri.sortirComment utiliser la redirection d'E / S à l'aide de tuyaux
Pour rediriger la sortie d'une commande comme entrée d'un autre, vous pouvez utiliser des tuyaux, il s'agit d'un moyen puissant de construire des lignes de commande utiles pour des opérations complexes.
Par exemple, la commande ci-dessous répertorie les cinq premiers fichiers récemment modifiés.
$ ls -lt | tête -N 5Ici, les options:
-l
- Active le format de liste long-t
- Trier par le temps de modification avec les derniers fichiers est affiché en premier-n
- Spécifie le nombre de lignes d'en-tête à afficherCommandes importantes pour la construction de pipelines
Ici, nous examinerons brièvement deux commandes importantes pour la construction de pipelines de commande et ce sont:
xargs qui est utilisé pour construire et exécuter les lignes de commande à partir de l'entrée standard. Vous trouverez ci-dessous un exemple de pipeline qui utilise xargs, Cette commande est utilisée pour copier un fichier dans plusieurs répertoires dans Linux:
$ echo / home / aaronkilik / test / / home / aaronkilik / tmp | xargs -n 1 cp -v / home / aaronkilik / bin / sys_info.shotCopier les fichiers dans plusieurs répertoiresEt les options:
-n 1
- Demande à Xargs d'utiliser au plus un argument par ligne de commande et d'envoyer à la commande CPCP
- copie le fichier-V
- Affiche la progression de la commande de copie.Pour plus d'options d'utilisation et d'informations, lisez le xargs Page de l'homme:
$ man xargsUN tee La commande se lit à partir des entrées standard et des écritures à la sortie et aux fichiers standard. Nous pouvons démontrer comment tee Fonctionne comme suit:
$ echo "Tester comment fonctionne la commande Tee" | Fichier TEE1Exemple de commande de tee-shirtLes filtres de fichiers ou de texte sont couramment utilisés avec des tuyaux pour des opérations de fichiers Linux efficaces, pour traiter les informations de manière puissante telles que la restructuration de la sortie des commandes (cela peut être vital pour la génération de rapports Linux utiles), modifiant le texte dans des fichiers plus plusieurs autres administrations système Linux Tâches.
Pour en savoir plus sur les filtres et les tuyaux Linux, lisez cet article trouver les 10 meilleures adresses IP qui accéder au serveur Apache, montre un exemple utile d'utilisation des filtres et des tuyaux.
Dans cet article, nous avons expliqué les principes fondamentaux de la redirection d'E / S à Linux. N'oubliez pas de partager vos réflexions via la section de rétroaction ci-dessous.
- « Configurer la réplication Sysvol à travers deux Samba4 AD DC avec RSYNC - Partie 6
- Différence entre Su et Sudo et comment configurer Sudo dans Linux »