ls “${VMX_DIR}” | grep -q delta > /dev/null 2>&1;
它列出 VMX_DIR 中的文件,然后将它们通过管道传输到 grep 中,但它在做什么?
答案1
它会检查是否存在包含的文件或路径delta
,${VMX_DIR}
然后通过 grep 的退出代码返回结果,因为如果找到匹配项,grep 将返回正常退出代码 0,如果没有找到匹配项,则返回失败代码 1。它在 bash 条件中很有用。
以下是它逐条语句所做的事情:
ls “${VMX_DIR}”
列出路径中存储的目录的内容${VMX_DIR}
| grep -q 增量
将结果通过管道传输到 grep,搜索目录列表的结果以delta
忽略任何到 stout 的输出。
> /dev/null 2>&1;
将 stdout 重定向到 ,/dev/null
这样就不会打印它。2>&1
告诉 bash 将 stderr 重定向到 stdout(现在将重定向到/dev/null
)。分号只是终止该行。
答案2
从grep
手册页中:
-q, --quiet, --silent
Quiet; do not write anything to standard output. Exit immedi-
ately with zero status if any match is found, even if an error
was detected. Also see the -s or --no-messages option.
基本上,这是在查找是否存在包含的文件名delta
,并返回true
是否false
存在。它实际上用这个真值做什么,从你那里的小片段中,任何人都可以猜测。
答案3
它似乎只是用于检测单词“delta”是否在列表中,在这种情况下它将返回 0,否则它将返回 1。因此,根据返回值,您可以知道 delta 是否存在。