总共有多少种方式可以输入输入命令?


9

关于Linux,我注意到的第一件事是将数据输入命令的方式不同,我知道几种,但不知道总共有多少种。

到目前为止我所知道的方式:

管道:

echo -e "zorro\nwurst\nlahmacun\nsozialhilfe" | sort

从键盘发出文件结尾信号:

sort
>gurken
>zucker
>braunkohle

从文件:

sort foo

HERE字符串(实际上称为HERE文档):

sort << HERE
>wasserkopf
>elternzeit
>schuldeingeständnis
>währungsreform
>alabasterhaut
HERE

这是全部还是还有更多的方法可以使用?为什么根本没有其他方法?有些方法是否多余?

Answers:


9

至少以下内容:

  1. 命令选项: foo --bar

  2. 标准输入:foo | barbar < foo

  3. 文件:(foo *.*或通过中的代码打开文件foo)†

  4. 环境出口: export foo=bar; baz

  5. 环境(不导出):foo=bar bazenv foo=bar baz

  6. 这里的文档: foo << EOF bar EOF

  7. 这里的字符串: foo <<< bar

  8. 讯号 kill -SIGUSR1 $procid

  9. 各种各样的进程间通信,例如套接字,TCP,内存映射文件

†是的,我知道stdin是一个文件(或类似文件的文件)。而且像这样传递文件与传递选项实际上一样


1
您可以添加foo < bar其他变体(通过stdin文件)
Hagen von Eitzen

14

首先,sort << HERE以此类推不是here-string。那是这里的文件。此处的字符串使用<<<运算符。在bash(和其他一些shell)中。

通常,有两种方法。一种是通过标准输入(和重定向),另一种是通过参数。

  1. 标准输入及其重定向

    这是默认情况下连接到终端的流,在该流中执行命令并与fd(文件描述符)1相关联。将输入到终端的任何内容馈入该流。尽管可以像使用管道|,使用here-documents或here-strings 那样重定向(输入)。然后输入不是来自终端,而是连接到管道前面命令的标准输出。不同的外壳具有不同的重定向,因此对于此类别,您应该查看外壳文档。寻找输入重定向。

  2. 参量

    这就是您的示例sort foo。调用程序或函数会为其传递一个或多个参数。本地文件只是一种可能。该参数可能包含URL或其他内容。这里的选择是无止境的。

总结起来,有两种通用方法:

  • 第一个从应用程序的内部逻辑中提取出来,并在OS / shell级别上操纵标准输入,

  • 而第二个涉及应用程序的内部,正是它们以调用参数为接口,提供了无限的可能性。

对于这两种方式,答案都是没有限制的。尽管实际的限制与OS / shell和应用程序本身有关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.