我正在尝试执行以下命令,其中我使用了 kill 和 exec 命令。
kill -l -exec grep -i 'term' {} +
因为, kill -l 返回所有终止信号的列表,我想使用 grep 和不区分大小写的 -i 标志来查找所有包含单词“term”的信号。但是,它返回以下错误。有人可以建议为什么会这样吗?
-bash: kill: grep: invalid signal specification
-bash: kill: -i: invalid signal specification
15
-bash: kill: {}: invalid signal specification
-bash: kill: +: invalid signal specification
-exec cmd {} +
是find
命令和find
单独命令的成语。它在那里使用cmd
它找到的文件作为参数运行。-exec
没有选项,它通常称为谓词,用于构成find
表达式的条件和操作链(find
还支持在应该开始查找的文件/目录列表之前传递的选项)。kill
是一个内置在大多数 shell 中的命令,用于根据进程 ID 或它们所属的 shell 作业向进程发送信号。大多数实现还支持一个
-l
选项,该选项列出可能以随实现而变化的格式发送的信号。有些列表信号每行一个,有些在列中,有些只是空格分隔,有些包括信号名称和编号。如果除了
-l
选项之外,您还传递了一个信号名称或编号(带有或不SIG
带有某些实现的前缀),一些kill
实现将输出相应的信号编号/名称,尽管有些总是打印名称,有些只接受数字。所以:
例如,在某些
kill
实现中,包括 shell 的kill
内置zsh
将输出:在
15
大多数(如果不是全部)系统上,SIGTERM 的实际值。在
zsh
shell 中,信号名称(+ EXIT 也用于trap
)也可以在$signals
特殊数组中使用:给定信号的信号编号是它在数组中的索引减 1。
或者对于不区分大小写的匹配:
(
kill -l term
也适用于许多kill
实现)。使用该
-l
选项,不处于 POSIX 模式时bash
的kill
内置输出为:我可以将每一对
number) signal
与xargs -n 2
所以这应该做你要求的: