Tim*_*Tim -1 command-line conventions stdin arguments
POSIX 和 GNU 有其选项的语法样式。对于我见过的所有命令,它们接受类似选项的输入作为命令行参数。
程序接受来自 stdin 的类似选项的输入(因此用于getopt解析类似选项的 stdin 输入)是否不常见?就像是:
$ ls -l
-rw-rw-r-- 1 t t 31232 Jan 7 13:38 fetch.png
-rw-rw-r-- 1 t t 69401 Feb 6 14:35 proxy.png
$ myls
> -l
-rw-rw-r-- 1 t t 31232 Jan 7 13:38 fetch.png
-rw-rw-r-- 1 t t 69401 Feb 6 14:35 proxy.png
> -l fetch.png
-rw-rw-r-- 1 t t 31232 Jan 7 13:38 fetch.png
Run Code Online (Sandbox Code Playgroud)
为什么 stdin 输入具有类似选项的输入并不常见,而命令行参数却很常见?
从表达能力的角度来看(类似于常规语言与上下文无关语言),像输入这样的非选项和像输入这样的选项是否等效?
我们不要强调 shell 扩展,因为我们从不期望(或需要)像 shell 扩展这样的事情发生在 stdin 输入上(类似非选项)。
谢谢。
对于像输入这样的非选项的类似问题:/sf/ask/3820888711/(该帖子由于没有回应而被删除,并且否决票。但如果您有足够的声誉,仍然可以访问)
lstl;dr 这与想要在脚本(1 , 2)中使用非常相似,仅在必要时引用,或跨流(这几乎就是字面上的意思,通过使用 stdin 来处理两个完全正交的事物)。这是一个坏主意。
这种方法存在几个问题:
-l fetch.png单个参数),您将不得不向开发人员详细解释为什么没有-l "$path",-l ~/Downloads并-l 'my files'做他们期望的事情。