A primeira coisa que notei no Linux foram as diferentes maneiras de inserir dados em um comando. Conheço alguns, mas não sei quantos existem no total.
as maneiras que eu sei até agora:
tubulação:
echo -e "zorro\nwurst\nlahmacun\nsozialhilfe" | sort
do teclado com sinal de fim de arquivo:
sort
>gurken
>zucker
>braunkohle
De arquivo:
sort foo
Cadeia HERE (na verdade chamada documento HERE):
sort << HERE
>wasserkopf
>elternzeit
>schuldeingeständnis
>währungsreform
>alabasterhaut
HERE
Isso é tudo ou há mais maneiras de fazer isso, por que existem maneiras diferentes? Existem algumas maneiras redundantes?
fonte
foo < bar
como uma variante adicional (arquivo via stdin)Para começar,
sort << HERE
e assim por diante não é uma string aqui. Esse é um documento aqui. A string here usa o<<<
operador Isso está no bash (e em algumas outras conchas).Em geral, existem duas maneiras. Um é através da entrada padrão (e redirecionamentos) e o outro é através de parâmetros.
Entrada padrão e seus redirecionamentos
Este é o fluxo que, por padrão, está conectado ao terminal, no qual um comando é executado e está associado ao fd (descritor de arquivo) 1. Ele é alimentado com o que for digitado no terminal. Embora (a entrada) possa ser redirecionada como usando o pipe
|
ou usando os documentos here ou here-strings. Então a entrada não vem do terminal, mas é anexada à saída padrão do comando que precede o tubo. Os shells diferentes têm redirecionamentos diferentes, portanto, para esta categoria, você deve verificar a documentação do shell. Procure por redirecionamentos de entrada.Parâmetros
Isto é o que no seu exemplo é
sort foo
. Ao chamar um programa ou uma função, você passa um ou mais parâmetros. Um arquivo local é apenas uma possibilidade. O parâmetro pode conter uma URL ou qualquer outra coisa. As opções aqui são infinitas.Em resumo, existem duas maneiras gerais:
o primeiro abstrai da lógica interna do aplicativo e manipula a entrada padrão no nível do SO / shell,
enquanto o segundo envolve as entranhas do aplicativo, e são elas que oferecem possibilidades ilimitadas, baseando-se nos parâmetros de chamada como uma interface.
Nos dois sentidos, a resposta é que não há limites. Embora os limites reais venham com o OS / shell e o próprio aplicativo.
fonte