La première chose que j'ai remarquée à propos de Linux a été les différentes manières d'alimenter des données dans une commande, j'en connais quelques-unes mais je ne sais pas combien il y en a au total.
les moyens que je connais jusqu'à présent:
tuyauterie:
echo -e "zorro\nwurst\nlahmacun\nsozialhilfe" | sort
à partir du clavier avec signal de fin de fichier:
sort
>gurken
>zucker
>braunkohle
du fichier:
sort foo
ICI chaîne (en fait appelée document ICI):
sort << HERE
>wasserkopf
>elternzeit
>schuldeingeständnis
>währungsreform
>alabasterhaut
HERE
Est-ce tout ou y a-t-il d'autres façons de le faire, pourquoi y a-t-il des façons différentes, certaines sont-elles redondantes?
la source
foo < bar
une variante supplémentaire (fichier via stdin)Pour commencer,
sort << HERE
et ainsi de suite n'est pas une chaîne ici. C'est un document ici. La chaîne ici utilise l'<<<
opérateur. C'est en bash (et quelques autres coquilles).En général, il y a deux façons. L'un se fait par l'entrée standard (et les redirections), et l'autre par les paramètres.
Entrée standard et ses redirections
Il s'agit du flux qui est par défaut connecté au terminal, dans lequel une commande s'exécute et est associé à fd (descripteur de fichier) 1. Il alimente tout ce qui est tapé sur le terminal. Bien qu'il (l'entrée) puisse être redirigé comme dans l'utilisation du tube
|
ou en utilisant les documents ici ou les chaînes ici. Ensuite, l'entrée ne provient pas du terminal, mais est attachée à la sortie standard de la commande précédant le canal. Différents shells ont des redirections différentes, donc pour cette catégorie, vous devriez vérifier la documentation du shell. Recherchez les redirections d'entrée.Paramètres
C'est ce que représente votre exemple
sort foo
. En appelant un programme ou une fonction vous lui passez un ou plusieurs paramètres. Un fichier local n'est qu'une possibilité. Le paramètre peut contenir une URL ou autre. Les options ici sont infinies.Pour résumer, il existe deux façons générales:
le premier résume la logique interne de l'application et manipule l'entrée standard au niveau OS / shell,
tandis que le second implique les entrailles de l'application, et ce sont eux qui offrent des possibilités illimitées, en se basant sur les paramètres d'appel comme interface.
Dans les deux cas, la réponse est qu'il n'y a pas de limites. Bien que les limites réelles viennent avec l'OS / shell et l'application elle-même.
la source