Lo primero que noté sobre Linux fueron las diferentes formas de alimentar datos en un comando, conozco algunos pero no sé cuántos hay en total.
las formas que conozco hasta ahora:
tubería:
echo -e "zorro\nwurst\nlahmacun\nsozialhilfe" | sort
desde el teclado con señal de fin de archivo:
sort
>gurken
>zucker
>braunkohle
desde el archivo:
sort foo
HERE string (en realidad llamado documento AQUÍ):
sort << HERE
>wasserkopf
>elternzeit
>schuldeingeständnis
>währungsreform
>alabasterhaut
HERE
¿Es todo esto o hay más formas de hacerlo? ¿Por qué hay diferentes formas? ¿Hay algunas formas redundantes?
fuente
foo < bar
como una variante adicional (archivo vía stdin)Para empezar,
sort << HERE
y así sucesivamente no es una cadena aquí. Ese es un documento aquí. La cadena aquí utiliza el<<<
operador. Eso está en bash (y algunas otras conchas).En general, hay dos formas. Uno es a través de entrada estándar (y redirecciones), y el otro es a través de parámetros.
Entrada estándar y sus redirecciones
Este es el flujo que está conectado por defecto al terminal, en el que se ejecuta un comando y está asociado con fd (descriptor de archivo) 1. Se alimenta todo lo que se escribe en el terminal. Aunque se puede redirigir (la entrada) como al usar la tubería
|
o al usar los documentos aquí o las cadenas aquí. Entonces, la entrada no proviene del terminal, sino que se adjunta a la salida estándar del comando que precede a la tubería. Los diferentes shells tienen diferentes redirecciones, por lo que para esta categoría, debe consultar la documentación del shell. Busque redirecciones de entrada.Parámetros
Esto es lo que en tu ejemplo es
sort foo
. Al llamar a un programa o una función, le pasa uno o más parámetros. Un archivo local es solo una posibilidad. El parámetro puede contener una URL o lo que sea. Las opciones aquí son infinitas.En resumen, hay dos formas generales:
el primero se extrae de la lógica interna de la aplicación y manipula la entrada estándar en el nivel del sistema operativo / shell,
mientras que el segundo involucra las entrañas de la aplicación, y son ellas las que ofrecen posibilidades ilimitadas, basándose en los parámetros de llamada como una interfaz.
En ambos sentidos, la respuesta es que no hay límites. Aunque los límites reales vienen con el sistema operativo / shell y la aplicación en sí.
fuente