我有一个名为-q
的文件(看起来这是无意中制作的)
我想看看它的内容,所以我尝试了这些
$ cat '-q'
$ cat "-q"
$ cat $'-q'
但没有任何效果。(都给出相同的错误 cat: invalid option -- 'q'
)
有什么办法可以看到它的内容吗?
最佳答案
sjsam's helpful answer提供了可行的解决方案,但值得深入挖掘:
传递给 Unix 实用程序的参数(例如 cat
)可以分为两组(使用 POSIX 术语):
options(例如,
-l
;取决于选项的定义,可能后跟 option-argument)- 开关修改实用程序的基本行为。操作数(例如文件名)- 实用程序操作的数据。
POSIX requires all options, if any, to come before any operands ,但是 GNU 实用程序放宽了这一要求以允许混合选项和操作数以方便使用。
无论哪种方式,-
后跟一个字母或数字通常表示一个选项。
为了允许传递碰巧以-
开头的操作数,特殊选项-
可用于告诉任何实用程序:将任何后续参数视为操作数,即使它们看起来像选项。
由于操作数 -q
在这种情况下看起来 像一个选项,在它前面加上 --
以将其标记为 操作数 是必须的。
至于如何将字符串-q
本身作为参数传递:
-q
包含没有 shell 元字符,因此 shell 按原样将它传递给cat
- 无需引用。引用 (
'-q'
,"-q"
,$'-q'
,\- q
) 在这种情况下没有害处,但在这里绝对没有效果,因为 shell - 在应用任何扩展之后 - 简单地删除 任何引号字符(称为 quote removal 的过程),然后将单词传递给cat
(如 Charles Duffy 在问题的评论中注释)。
关于linux - cat `-q` 文件(在 linux 中)- 传递看起来像选项的操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38690364/