English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La mayoría de los comandos del sistema UNIX reciben entrada desde su terminal y envían la salida generada de vuelta a su terminal. Un comando generalmente lee la entrada desde un lugar llamado entrada estándar, por defecto, esto es exactamente su terminal. Del mismo modo, un comando generalmente escribe su salida en la salida estándar, por defecto, también es su terminal.
La lista de comandos de redirección es la siguiente:
Comando | Descripción |
---|---|
command > file | Redirija la salida a file. |
command < file | Redirija la entrada a file. |
command >> file | Redirija la salida de manera que se añada al file. |
n > file | Redirija el archivo con el descriptor de archivo n al file. |
n >> file | Redirija el archivo con el descriptor de archivo n al file de manera que se añada. |
n >& m | Combine los archivos de salida m y n. |
n <& m | Combine los archivos de entrada m y n. |
<< tag | Tome como entrada el contenido entre las etiquetas de inicio tag y de finalización tag. |
Es importante destacar que el descriptor de archivo 0 es generalmente la entrada estándar (STDIN),1 Es la salida estándar (STDOUT),2 Es la salida de error estándar (STDOUT).
La redirección generalmente se realiza insertando símbolos específicos entre comandos. En particular, la sintaxis de estos símbolos se muestra a continuación:
comando1 > file1
Este comando ejecuta command1Luego, almacene el contenido de salida en file1.
Atención: cualquier file1El contenido existente dentro de él se reemplazará por el nuevo contenido. Si desea agregar el nuevo contenido al final del archivo, utilice el operador >>.
Ejecute el siguiente comando who, que redirige la salida completa del comando en el archivo de usuarios (users):
$ who > users
Después de ejecutar, no hay información en la terminal, porque la salida se ha redirigido al dispositivo de salida estándar (terminal) especificado.
Puede usar el comando cat para ver el contenido del archivo:
$ cat users _mbsetupuser console Oct 31 17:35 tianqixin console Oct 31 17:35 tianqixin ttys000 Dec 1 11:33
La redirección de salida sobrescribe el contenido del archivo, consulte el siguiente ejemplo:
$ echo "Sitio web de tutorial básico: es.oldtoolbag.com" > users $ cat users Sitio web de tutorial básico: es.oldtoolbag.com $
Si no desea que el contenido del archivo se sobrescriba, puede usar >> para agregarlo al final del archivo, por ejemplo:
$ echo "Sitio web de tutorial básico: es.oldtoolbag.com" >> users $ cat users Sitio web de tutorial básico: es.oldtoolbag.com Sitio web de tutorial básico: es.oldtoolbag.com $
Al igual que la redirección de salida, los comandos Unix también pueden obtener entrada de archivos, la sintaxis es la siguiente:
comando1 < file1
De esta manera, los comandos que originalmente se obtendrían desde la entrada del teclado se transferirán al contenido de lectura del archivo.
Atención: la redirección de salida es el símbolo mayor que (>) y la redirección de entrada es el símbolo menor que (<).
Siguiendo con el ejemplo anterior, necesitamos contar el número de líneas del archivo users, ejecutamos el siguiente comando:
$ wc -l users 2 users
También se puede redirigir la entrada al archivo users:
$ wc -l < users 2
Nota: Los resultados de los dos ejemplos anteriores son diferentes: el primero escribe el nombre del archivo; el segundo no, porque solo sabe leer contenido desde la entrada estándar.
comando1 < infile > outfile
Al mismo tiempo, reemplaza la entrada y salida para ejecutar comando1lee el contenido del archivo infile y luego escribe la salida en outfile.
Generalmente, cada Unix/Los comandos de Linux siempre abren tres archivos en ejecución:
El archivo de entrada estándar (stdin): El descriptor de archivo de stdin es 0, y los programas Unix leen datos por defecto desde stdin.
El archivo de salida estándar (stdout): El descriptor de archivo de stdout es1. Los programas Unix escriben datos por defecto en stdout.
El archivo de error estándar (stderr): El descriptor de archivo de stderr es2. Los programas Unix escriben información de error en el flujo stderr.
Por defecto, comando > archivo redirige stdout a archivo, y comando < archivo redirige stdin a archivo.
Si desea redirigir stderr a archivo, puede escribir así:
$ comando 2>archivo
Si desea que stderr se añada al final del archivo archivo, puede escribir así:
$ comando 2>> archivo
2 que representa el archivo de error estándar (stderr).
Si desea redirigir stdout y stderr a archivo, puede escribir así:
$ comando > archivo 2>&1 o $ comando >> archivo 2>&1
Si desea redirigir stdin y stdout, puede escribir así:
$ comando < archivo1 >archivo2
El comando 'comando' redirige stdin a archivo1Redirija stdout a archivo2.
Here Document es una forma especial de redirección de entrada en Shell, utilizada para redirigir la entrada a un script o programa de Shell interactivo.
Su forma básica es la siguiente:
comando << delimiter documento delimiter
Su función es transmitir el contenido (documento) entre dos delimiters como entrada para el comando.
Nota:
El delimiter al final debe estar alineado, no debe haber ningún carácter anterior, ni después, incluyendo espacios y tabuladores de sangría.
Los espacios antes del delimiter de inicio y después del delimiter se ignorarán.
A través de wc en la línea de comandos -El comando l de wc calcula el número de líneas del Here Document:
$ wc -l << EOF Bienvenido a Sitio web de tutoriales básicos es.oldtoolbag.com EOF 3 # Resultados de salida 3 línea $
También podemos usar Here Document en scripts, por ejemplo:
#!/bin/bash # author:Sitio web de tutoriales básicos # url:es.oldtoolbag.com cat << EOF Bienvenido a Sitio web de tutoriales básicos es.oldtoolbag.com EOF
Ejecutar el siguiente script, los resultados de salida son:
Bienvenido a Sitio web de tutoriales básicos es.oldtoolbag.com
Si desea ejecutar un comando pero no desea mostrar los resultados de salida en la pantalla, puede redirigir la salida a /dev/null:
$ command > /dev/null
/dev/El archivo null es un archivo especial, todo lo que se escribe en él se descartará; si intenta leer contenido del archivo, no obtendrá nada. Pero /dev/El archivo null es muy útil, redirigiendo la salida de un comando a él, tendrá el efecto de "prohibir la salida".
Si desea ocultar stdout y stderr, puede escribir así:
$ command > /dev/null 2>&1
Nota:0 Es la entrada estándar (STDIN),1 Es la salida estándar (STDOUT),2 Es la salida de error estándar (STDOUT).
Aquí 2 y > No puede haber espacios entre2> Se representa el error de salida cuando es un todo.