我在尝试使用logcat时遇到了zsh
的以下错误
即,输入时:
adb logcat *:D
我在zsh中收到以下错误
zsh: no matches found: *:D
我必须像*
一样逃避:
adb logcat \*:D
使用bash时,我没有收到以下错误 为什么会这样?
答案 0 :(得分:10)
zsh
会默认警告你。另一方面,Bash将未展开的glob传递给app,如果您不确定哪些匹配(或者如果您犯了错误),则这是一个潜在的问题。您可以告诉zsh传递未评估的参数,例如使用setopt nonomatch
的bash:
NOMATCH (+3) <C> <Z>
If a pattern for filename generation has no matches, print an
error, instead of leaving it unchanged in the argument list.
This also applies to file expansion of an initial `~' or `='.
或者使用setopt NULL_GLOB
删除参数:
NULL_GLOB (-G)
If a pattern for filename generation has no matches, delete the
pattern from the argument list instead of reporting an error.
Overrides NOMATCH.
Bash实际上具有相同的选项(setopt nullglob
),可以使用setopt failglob
模拟zsh
答案 1 :(得分:2)
bash
会尝试扩展它 - 只是当它无法匹配任何内容时,它会让*
通过您正在调用的程序。 zsh
没有(至少默认情况下)。
您可以通过设置bash
选项使zsh
像failglob
一样行事。相反,您可以通过关闭zsh
选项使bash
像默认NOMATCH
一样工作。
答案 2 :(得分:1)
就adb
而言,无需使用反斜杠进行转义。你可以尝试
adb logcat '*:I'
或环境变量
export ANDROID_LOG_TAGS="*:I"
adb logcat