Maison > Opération et maintenance > exploitation et maintenance Linux > Que signifie le flux sous Linux ?

Que signifie le flux sous Linux ?

青灯夜游
Libérer: 2023-03-17 09:55:42
original
1868 Les gens l'ont consulté
<blockquote><p>Sous Linux, flux signifie flux de données, qui est une chaîne de données lues dans un certain ordre, donc la direction du flux de données est l'ordre de lecture du flux de données. Le processus par lequel le système Linux importe les résultats de sortie après avoir lu les données dans d'autres fichiers est appelé flux de données redirigé. Après qu'une commande soit saisie et exécutée sous Linux, deux résultats seront affichés à l'écran : le résultat d'une opération réussie est la sortie standard, et le résultat de l'opération échouée est la sortie d'erreur standard, s'il n'est pas traité, ils seront affichés ; sur l'écran et redirigé via le flux de données. Vous pouvez l'enregistrer dans d'autres fichiers. </p></blockquote> <p><img src="https://img.php.cn/upload/article/202303/17/2023031709544952034.jpg" alt="Que signifie le flux sous Linux ?" ></p> <p>L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3. </p> <p><strong>Sous Linux, flux signifie flux de données. </strong></p> <h2><strong>Que signifie stream (flux de données) ? </strong></h2> <p>stream (flux de données) est une chaîne de données lues dans un certain ordre, donc la direction du flux de données est l'ordre de lecture du flux de données. </p> <p>Le flux de données était à l'origine un concept utilisé dans le domaine des communications et représente une séquence de signaux codés numériquement utilisés dans la transmission d'informations. Ce concept a été proposé pour la première fois par Henzinger en 1998 dans le document 87. Il a défini un flux de données comme « une séquence de données qui ne peut être lue qu'une seule fois dans un ordre prédéterminé ». </p> <p>Le flux de données de redirection du système Linux consiste à importer les résultats de sortie après avoir lu les données dans d'autres fichiers. </p> <h2><strong>Redirection du flux de données Linux</strong></h2> <p>La redirection du flux de données consiste simplement à localiser la source de données d'entrée ou les données de sortie d'une certaine commande vers d'autres fichiers. Sous Linux, tout est un fichier. Les fichiers ici peuvent être des fichiers de périphérique, des fichiers ordinaires, etc. </p> <p><a id="1_stdin_stdout_stderr_5"></a><span style="font-size: 18px;"><strong>1. stdin stdout stderr</strong></span></p> <blockquote><p><code>stdin</code>:标准输入。指的是为命令运行所提供的一些信息。<br><code>stdout</code>:标准输出。指的是命令执行所返回的正确信息。<br><code>stderr</code> : sortie d'erreur standard. Fait référence au message d'erreur renvoyé après l'échec de l'exécution de la commande. </p></blockquote> <p>La relation entre ces trois commandes est généralement la suivante : </p> <div class="mermaid sequence-diagram"><svg id="mermaid-svg-43Q0mtxvjga7WpCa" width="100%" xmlns="http://www.w3.org/2000/svg" height="158" style="max-width: 436.46875px;" viewbox="0 0 436.46875 158"><style>#mermaid-svg-43Q0mtxvjga7WpCa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-43Q0mtxvjga7WpCa .error-icon{ fill:#552222;}#mermaid-svg-43Q0mtxvjga7WpCa .error-text{fill:#552222;AVC:#552222;}#mermaid-svg-43Q0mtxvjga7WpCa .edge-thickness-normal{Stroke-width:2px;}#mermaid -svg-43Q0mtxvjga7WpCa .edge-thickness-thick{Stroke-width:3.5px;}#mermaid-svg-43Q0mtxvjga7WpCa .edge-pattern-solid{Stroke-dasharray:0;}#mermaid-svg-43Q0mtxvjga7WpCa .edge-pattern- pointillé{Stroke-dasharray:3;}#mermaid-svg-43Q0mtxvjga7WpCa .edge-pattern-dotted{Stroke-dasharray:2;}#mermaid-svg-43Q0mtxvjga7WpCa .marker{fill:#333333;Stroke:#333333;}# sirène-svg-43Q0mtxvjga7WpCa .marker.cross{AVC:#333333;}#mermaid-svg-43Q0mtxvjga7WpCa svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#sirène -svg-43Q0mtxvjga7WpCa .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-43Q0mtxvjga7WpCa .cluster-label text{fill:#333;}#sirène -svg-43Q0mtxvjga7WpCa .cluster-label span{color:#333;}#mermaid-svg-43Q0mtxvjga7WpCa .texte d'étiquette,#mermaid-svg-43Q0mtxvjga7WpCa span{fill:#333;color:#333;}#mermaid-svg- 43Q0mtxvjga7WpCa .node rect,#mermaid-svg-43Q0mtxvjga7WpCa .node cercle,#mermaid-svg-43Q0mtxvjga7WpCa .node ellipse,#sirmaid-svg-43Q0mtxvjga7WpCa .node polygone,#mermaid-svg-43Q0mt xvjga7WpCa .node path{fill:#ECECFF; Stroke:#9370DB;Stroke-width:1px;}#mermaid-svg-43Q0mtxvjga7WpCa .node .label{text-align:center;}#mermaid-svg-43Q0mtxvjga7WpCa .node.clickable{cursor:pointer;}#mermaid-svg -43Q0mtxvjga7WpCa .arrowheadPath{fill:#333333;}#mermaid-svg-43Q0mtxvjga7WpCa .edgePath .path{Stroke:#333333;Stroke-width:2.0px;}#mermaid-svg-43Q0mtxvjga7WpCa .flowchart-link{Stroke:#3333 33 ;fill:aucun;}#mermaid-svg-43Q0mtxvjga7WpCa .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-43Q0mtxvjga7WpCa .edgeLabel rect{opacity:0.5;background-color:#e8e8e8; fill:#e8e8e8;}#mermaid-svg-43Q0mtxvjga7WpCa .cluster rect{fill:#ffffde;AVC:#aaaa33;Stroke-width:1px;}#mermaid-svg-43Q0mtxvjga7WpCa .cluster texte{fill:#333;}# mermaid-svg-43Q0mtxvjga7WpCa .cluster span{color:#333;}#mermaid-svg-43Q0mtxvjga7WpCa div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:" trébuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:aucun; z-index:100;}#mermaid-svg-43Q0mtxvjga7WpCa :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style> <g><g class="output"><g class="clusters"></g><g class="edgePaths"><g class="edgePath LS-A LE-B" style="opacity: 1;" id="L-A-B"><path class="path" d="M54.40625,79L61.493489583333336,79C68.58072916666667,79,82.75520833333333,79,96.9296875,79C111.10416666666667,79,125.27864583333333,79,132.36588541666666,79L139.453125,79" marker-end="url(#arrowhead34)" style="fill:none"></path><defs><marker id="arrowhead34" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-B LE-C" style="opacity: 1;" id="L-B-C"><path class="path" d="M229.451171875,56L237.5322265625,51.833333333333336C245.61328125,47.666666666666664,261.775390625,39.333333333333336,277.8069661458333,35.166666666666664C293.8385416666667,31,309.7395833333333,31,317.6901041666667,31L325.640625,31" marker-end="url(#arrowhead35)" style="fill:none"></path><defs><marker id="arrowhead35" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-B LE-D" style="opacity: 1;" id="L-B-D"><path class="path" d="M229.451171875,102L237.5322265625,106.16666666666667C245.61328125,110.33333333333333,261.775390625,118.66666666666667,277.8069661458333,122.83333333333333C293.8385416666667,127,309.7395833333333,127,317.6901041666667,127L325.640625,127" marker-end="url(#arrowhead36)" style="fill:none"></path><defs> <marker id="arrowhead36" viewbox="0 0 10 10" refx="9" refy="5" markerunits="strokeWidth" markerwidth="8" markerheight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" style="opacity: 1;" transform="translate(96.9296875,79)"><g transform="translate(-17.5234375,-13)" class="label"><rect rx="0" ry="0" width="35.046875" height="26"></rect><foreignobject width="35.046875" height="26"><div style="display: inline-block; white-space: nowrap;"> <span id="L-L-A-B" class="edgeLabel L-LS-A' L-LE-B">stdin</span>        </div></foreignobject></g></g><g class="edgeLabel" style="opacity: 1;" transform="translate(277.9375,31)"><g transform="translate(-21.453125,-13)" class="label"><rect rx="0" ry="0" width="42.90625" height="26"></rect><foreignobject width="42.90625" height="26"><div style="display: inline-block; white-space: nowrap;"> <span id="L-L-B-C" class="edgeLabel L-LS-B' L-LE-C">stderr</span>        </div></foreignobject></g></g><g class="edgeLabel" style="opacity: 1;" transform="translate(277.9375,127)"><g transform="translate(-22.703125,-13)" class="label"><rect rx="0" ry="0" width="45.40625" height="26"></rect><foreignobject width="45.40625" height="26"><div style="display: inline-block; white-space: nowrap;"> <span id="L-L-B-D" class="edgeLabel L-LS-B' L-LE-D">stdout</span>        </div></foreignobject></g></g></g><g class="nodes"><g class="node default" style="opacity: 1;" id="flowchart-A-18" transform="translate(31.203125,79)"><rect rx="5" ry="5" x="-23.203125" y="-23" width="46.40625" height="46" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-13.203125,-13)"><foreignobject width="26.40625" height="26"><div style="display: inline-block; white-space: nowrap;">Fichier</div></foreignobject></g></g></g><g class="node default" style="opacity: 1;" id="flowchart-B-19" transform="translate(184.84375,79)"><rect rx="5" ry="5" x="-45.390625" y="-23" width="90.78125" height="46" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-35.390625,-13)"><foreignobject width="70.78125" height="26"><div style="display: inline-block; white-space: nowrap;">Commande</div></foreignobject></g></g> </g><g class="node default" style="opacity: 1;" id="flowchart-C-21" transform="translate(377.0546875,31)"><rect rx="5" ry="5" x="-51.4140625" y="-23" width="102.828125" height="46" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-41.4140625,-13)"><foreignobject width="82.828125" height="26"><div style="display: inline-block; white-space: nowrap;">Écran/Fichier</div></foreignobject></g></g></g><g class="node default" style="opacity: 1;" id="flowchart-D-23" transform="translate(377.0546875,127)"><rect rx="5" ry="5" x="-51.4140625" y="-23" width="102.828125" height="46" class="label-container"></rect> <g class="label" transform="translate(0,0)"><g transform="translate(-41.4140625,-13)"><foreignobject width="82.828125" height="26"><div style="display: inline-block; white-space: nowrap;">Écran/Fichier</div></foreignobject></g></g></g></g></g></g></svg></div> <p>Dans l'environnement Linux, après avoir entré une commande et l'avoir exécutée, deux résultats s'afficheront à l'écran : le résultat d'une opération réussie est la sortie standard et le résultat de l'opération échouée. est la sortie d’erreur standard. </p> <ul style="list-style-type: disc;"> <li><p>Sortie standard (STDOUT) : la sortie standard fait référence aux informations correctes renvoyées par l'exécution de la commande. </p></li> <li><p>Sortie d'erreur standard (STDERR) : la sortie d'erreur standard fait référence aux informations d'erreur renvoyées par l'exécution de la commande. </p></li> </ul> <p>Si STDOUT et STDERR ne sont pas traités, ils seront affichés à l'écran. Ils peuvent être stockés dans d'autres fichiers grâce à la redirection du flux de données. Les caractères spéciaux stockés dans les fichiers sont : </p> <ul style="list-style-type: disc;"> <li> <p>Stin d'entrée standard : Le code. est 0, utilisez <code><</code> ou <code><<</code><code><</code>或<code><<</code></p></li><li><p>标准输出stout:代码为1,使用<code>></code>或<code>>></code></p> </li> <li><p>标准错误输出stderr:代码为2,使用<code>2></code>或<code>2>></code></p></li> </ul> <p><a id="2__21"></a><span style="font-size: 18px;"><strong>2、数据流重定向的使用</strong></span></p> <ul><li> <code>stdout</code>:标准输出重定向。这里重定向的是正确输出。</li></ul> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">find / -name '.bashrc' > ~/out_right</pre><div class="contentsignin">Copier après la connexion</div></div> <p>该命令将正确输出定向输入到文件<code>~/out_right</code>。如果<code>~/out_right</code>不存在,则自动创建。因为没对错误信息处理,错误输出默认输出到屏幕终端上,此时终端只会显示错误输出。</p> <ul><li> <code>stderr</code>:标准错误输出重定向。这里重定向的是错误输出。</li></ul> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">find / -name '.bashrc' 2> ~/out_error</pre><div class="contentsignin">Copier après la connexion</div></div> <p>该命令将错误输出定向输入到文件<code>~/out_error</code>。如果<code>~/out_error</code>不存在,则自动创建。因为没对正确信息处理,正确输出默认输出到屏幕终端上,此时终端只会显示正确输出(如果没找到指定文件,屏幕没有输出)。</p> <ul><li> <code>stdin</code>:一般使用标准输入来替换键盘输入。</li></ul> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">cat > catfile < ~/.bashrc</pre><div class="contentsignin">Copier après la connexion</div></div><p><code>cat</code>命令后不接任何参数,cat会从键盘读取数据。使用标准输入,将输入来源定向到文件<code>~/.bashrc</code>。然后通过<code>>将标准输出定位到<code>catfile</code>文件。<code>cat</code>是查看文件的命令,这里直接读取文件<code>~/.bashrc</code>然后将其输出到<code>catfile</code>。<p><a id="3_2_47"></a><span style="font-size: 18px;"><strong>3、</strong><code><strong>>>,2>>,<<</strong></code></span></p><ul><li><code>>></strong></code>(<strong>累加</strong>):附加标准输出。<code>cmd > file1</code>,命令<code>cmd</code>将<code>stdout</code>输出到<code>file1</code>中,如果<code>fiel1</code>此前存在,且有数据,那么<code>file1</code>会事先被清空,然后写入<code>stdout</code>。而使用命令<code>cmd >> file1</code>,不会预先清空<code>file1</code>文件,而是直接在文件末尾加上输入的数据。<li> <code>2>></code>(<strong>累加</strong>):附加标准错误输出。与<code>>></code>相似。</li> <li> <code><<</code>(<strong>指定结束关键字</strong>):后接<code>结束的输入字符</code>。关键字必须独占一行,否则无效。</li></ul>38bc79e9635f97138f8bc06dfef28877<p>实现方法不止一种,我们取较好理解的写法<code>find / -name .bashrc > list 2>&1</code>。这段代码中的<code>2>&1</code>可以理解为,将标准错误输出(代码为2)重定向为标准输出(代码为1)。然后<code>> list</code>将标准输出重定向到文件<code>list</code>。因为标准错误输出被定向为标准输出,所以最后所有输出都被定向到文件<code>list</code> </li></span></p><p><a href="http://www.php.cn/course/list/33.html" target="_blank">Stout de sortie standard : Le code est 1, utilisez <code>> ou >></code></a></p>🎜🎜Sortie d'erreur standard stderr : le code est 2, utilisez <code>2></code> ou <code>2>></code> 🎜🎜🎜🎜🎜<span style="font-size: 18px;"><strong>2. Utilisation de la redirection de flux de données</strong></span>🎜</pre> <ul>🎜 <code>stdout code> : redirection de sortie standard. Ce qui est redirigé ici est la sortie correcte. 🎜🎜rrreee🎜Cette commande dirige la sortie correcte vers le fichier <code>~/out_right</code>. Si <code>~/out_right</code> n'existe pas, il sera créé automatiquement. Étant donné que le message d'erreur n'est pas traité, la sortie d'erreur est envoyée par défaut au terminal d'écran. À ce stade, le terminal n'affichera que la sortie d'erreur. 🎜<ul>🎜<code>stderr</code> : Redirection de sortie d'erreur standard. Ce qui est redirigé ici, c'est la sortie d'erreur. 🎜🎜rrreee🎜Cette commande dirige la sortie d'erreur vers le fichier <code>~/out_error</code>. Si <code>~/out_error</code> n'existe pas, il sera créé automatiquement. Étant donné que les informations correctes ne sont pas traitées, la sortie correcte est affichée par défaut sur le terminal à l'écran. À ce stade, le terminal n'affichera que la sortie correcte (si le fichier spécifié n'est pas trouvé, il n'y aura aucune sortie à l'écran). . 🎜<ul>🎜<code>stdin</code> : utilisez généralement la saisie standard pour remplacer la saisie au clavier. 🎜🎜rrreee🎜Sans aucun paramètre après la commande <code>cat</code>, cat lira les données du clavier. À l'aide de l'entrée standard, dirigez la source d'entrée vers le fichier <code>~/.bashrc</code>. Localisez ensuite la sortie standard dans le fichier <code>catfile</code> via <code>></code>. <code>cat</code> est une commande pour afficher les fichiers. Ici, le fichier <code>~/.bashrc</code> est directement lu puis sorti dans <code>catfile</code>. 🎜🎜<a id="3_2_47">🎜<span style="font-size: 18px;"><strong>3、</strong><code><strong>>>,2>>,< ;<</strong></code></span>🎜<ul>🎜<code>>></strong></code>(<strong>Accumuler</strong>) : Ajouter la sortie standard. <code>cmd > file1</code>, la commande <code>cmd</code> affichera <code>stdout</code> vers <code>file1</code>, si <code>fiel1</code>S'il existe auparavant et contient des données, alors <code>file1</code> sera effacé à l'avance puis écrit sur <code>stdout</code>. Lors de l'utilisation de la commande <code>cmd >> file1</code>, le fichier <code>file1</code> ne sera pas effacé à l'avance, mais les données d'entrée seront ajoutées directement à la fin du fichier. 🎜🎜<code>2>></code> (<strong>Accumulate</strong>) : Ajouter la sortie d'erreur standard. Similaire à <code>>></code>. 🎜🎜<code><<</code> (<strong>Spécifier le mot-clé de fin</strong>) : suivi de <code>Caractère de saisie de fin</code>. Le mot-clé doit être sur sa propre ligne, sinon il sera invalide. 🎜🎜rrreee🎜<a id="4_stdoutstderr_62">🎜<span style="font-size: 18px;"><strong>4 </strong><strong><code>stdout</code> et <code> stderr</code>Traitement unifié</strong></span>🎜🎜Parfois, nous devons enregistrer à la fois <code>stdout</code> et <code>stderr</code> dans le même fichier et les afficher plus tard. 🎜🎜Idée de base : 🎜<blockquote>🎜Rediriger <code>stderr</code> vers <code>stdout</code>, puis rediriger ensemble via <code>stdout</code>. 🎜</blockquote>🎜Le cas suivant : 🎜rrreee🎜Il existe plus d'une méthode d'implémentation, nous utilisons la méthode d'écriture la mieux comprise <code>find / -name .bashrc > list 2>&1</code>. <code>2>&1</code> dans ce code peut être compris comme redirigeant la sortie d'erreur standard (code 2) vers la sortie standard (code 1). Ensuite, <code>> list</code> redirige la sortie standard vers le fichier <code>list</code>. Étant donné que la sortie d'erreur standard est dirigée comme sortie standard, toute la sortie finale est dirigée vers le fichier <code>list</code>. 🎜🎜Recommandations associées : "🎜Tutoriel vidéo Linux🎜"🎜</span></a> </ul> </ul></code> </ul>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal