Comprensión profunda del flujo de texto de Linux

  
                

Creo que mucha gente sabe qué es un archivo de sistema, pero poca gente sabe qué es el flujo de texto. De hecho, el flujo de texto no es difícil de entender. Las siguientes series pequeñas le darán una introducción detallada al flujo de texto de Linux. Aprendamos juntos.

Secuencias de texto

Los archivos se utilizan para el almacenamiento de datos, que es equivalente a una casa que almacena datos. Dijimos antes que los llamados datos son una secuencia de 0 o 1, pero estrictamente hablando, Linux usa bytes como la unidad de datos, es decir, la secuencia es una unidad por ocho bits (ocho bits). El rango decimal correspondiente es de 0 a 255). Usando la codificación ASCII, puede convertir dicho byte en un carácter. Por lo tanto, en Linux, los datos de los que estamos hablando pueden expresarse en caracteres, es decir, en forma de texto.

De hecho, si procesa caracteres en bits, la máquina será más fácil de leer y transferir, y la eficiencia será mayor. Pero ¿por qué Linux sigue procesando en bytes? La razón es que es más fácil convertir datos en caracteres en unidades de bytes, en lugar de procesar datos en unidades de bits. Los caracteres son más fáciles de leer para los humanos que el aburrido 0 y 1. Sin embargo, no todos los datos están diseñados para ser legibles, por ejemplo, los diversos caracteres contenidos en el ejecutable no tienen sentido para las personas (porque el ejecutable es para que la máquina lo entienda). Pero Linux aún procesa todos los archivos en bytes, para permitir que todos los archivos compartan un sistema de archivos virtual, lo que reduce la complejidad del diseño de Linux.

(&yquo; todo es un archivo y " es una de las filosofías del diseño de UNIX que normalmente circula, pero Linus corrige esto y cambia a "todo es un flujo de bytes".)

Sin embargo, los datos no se resuelven para siempre después de encontrar su propio archivo. A menudo se lee en la memoria (como ir a trabajar en la oficina), se envía a un dispositivo externo (como ir a un hotel de vacaciones) o se muda a otra casa. En tal proceso de reubicación, los datos son como un flujo de personas que caminan en fila, lo llamamos flujo de texto (o flujo de bytes). Sin embargo, los métodos de conexión entre diferentes dispositivos en una computadora varían mucho. La conexión de la memoria al archivo es como escalar una montaña. Desde la memoria a los periféricos, parece que cruza un río. Para este fin, Linux también define las transmisiones como un estándar para construir caminos que se conectan entre sí. La ventaja de Stream es que todas las carreteras son iguales, ya sea desde la memoria a los periféricos o desde la memoria a los archivos (en cuanto a piedras o tierra debajo de la carretera, no tiene que preocuparse por eso).

Revisemos la frase "todo es un flujo de bytes". La información está contenida en el flujo de texto, fluye constantemente entre los diversos componentes de la computadora, acepta constantemente el procesamiento de la computadora y, en última instancia, se convierte en un servicio que el usuario necesita.

(Dicho sea de paso, si has visto The Matrix, que sin duda impresionado por la secuencia de texto.)

entrada estándar, salida estándar, error estándar y redirigir < Br>

Cuando Linux ejecuta un programa, abre automáticamente tres secuencias, entrada estándar, salida estándar y error estándar. Por ejemplo, cuando abre la línea de comandos, de forma predeterminada, la entrada estándar de la línea de comandos se conecta al teclado, y tanto la salida estándar como el error estándar se conectan a la pantalla. Para un programa, aunque siempre abrirá estos tres flujos, se usará según sea necesario, no necesariamente utilizado.

Imagine que escribe un código de

de la siguiente manera:

$ ls

Flujo de texto de los trazos del teclado (" ls \\ n ", \\ n Es el carácter ingresado al regresar, indicando una línea de comando de nueva línea (la línea de comando es en realidad un programa). La línea de comandos luego llama a /bin /ls para obtener el resultado (" a.txt "), y finalmente la secuencia de texto de salida (" a.txt ") fluye a la pantalla y la muestra, por ejemplo:

De la siguiente manera:

a.txt

Supongamos que no queremos que la corriente de texto fluya a la pantalla, pero a otro archivo, podemos usar un mecanismo de redireccionamiento.

El código es el siguiente:

$ ls》 a.txt

Redirige la salida estándar. Aquí es para recordar a la línea de comandos, hágale saber que quiero cambiar la dirección de la secuencia de texto ahora, no permitimos que la salida estándar salga a la pantalla, sino al archivo a.txt (como si se cambiara la vía del tren). En este punto, la computadora creará un nuevo archivo a.txt y señalará la salida estándar de la línea de comandos a este archivo.

Hay otro símbolo:

El código es el siguiente:

$ ls》 a.txt

El rol de "aquí" también es redirigir la salida estándar. Si ya existe un.txt, la secuencia de texto generada por ls se agregará al final de un.txt, en lugar de crear un.txt cada vez como "."

Presentaremos el comando echo:

El código es el siguiente:

$ echo IamVamei

El propósito de echo es dirigir el flujo de texto a la salida estándar. Aquí, la función del eco es generar IamVamei en la pantalla. Si el código de

es el siguiente:

$ echo IamVamei》 a.txt

A.txt tendrá el texto IamVamei.

También podemos usar el "símbolo para cambiar la entrada estándar". Por ejemplo, el comando cat puede leer el flujo de texto de la entrada estándar y enviarlo a la salida estándar:

El código es el siguiente:

$ cat "a.txt

Cataremos La entrada estándar apunta a a.txt, y el texto fluye desde el archivo a cat y luego a la pantalla. Por supuesto, también podemos redirigir la salida estándar al mismo tiempo:

El código es el siguiente:

$ cat "a.txt" b.txt

Por lo tanto, el contenido de a.txt es Copiado a b.txt.

También podemos usar "&" para redirigir la salida estándar y los errores estándar al mismo tiempo. Supongamos que no tenemos un directorio vacío. Luego, el código

es el siguiente:

$ cd void》 a.txt

mostrará un mensaje de error en la pantalla. Porque el error estándar sigue apuntando a la pantalla en este momento. Cuando usamos:

El código es el siguiente:

$ cd void》 &a.txt

El mensaje de error se dirige a a.txt.

Si solo desea redirigir los errores estándar, puede usar 2 ::

El código es el siguiente:

$ cd void 2 a.txt》 b.txt

El error estándar es siempre el número 2, por lo que es el anterior. El error estándar se envía a a.txt y la salida estándar se envía a b.txt.

Tuberías

Después de comprender lo anterior, el concepto de tubería es fácil. Una tubería puede dirigir la salida de un comando a la entrada de otra, permitiendo que dos (o más comandos) funcionen continuamente como una tubería, procesando constantemente el flujo de texto. En la línea de comando, usamos

Copyright © Conocimiento de Windows All Rights Reserved