通过管道将 adb 输出传输到 less 的行为不可预测

通过管道将 adb 输出传输到 less 的行为不可预测

使用less查看某些命令的输出adb通常无法按预期工作。

例如,按空格键前进到下一个屏幕通常不会执行任何操作,但第二次按空格键将会前进。 (但这是不一致的。)

另一个怪癖是,搜索正则表达式将返回“未找到模式”,即使该模式确实存在。

重现:

adb shell dumpsys jobscheduler | less

实际行为:

  • 按空格键并不总是前进到下一个屏幕

预期行为:

  • 按空格键可靠地前进到下一个屏幕

答案1

问题是adb shell从标准输入读取(这似乎没有记录),这与 less 也从标准输入读取的努力相冲突。

有几种方法可以解决这个问题:

# Provide the -n ("don't read from shell") switch
adb shell -n dumpsys jobscheduler | less

# Read from /dev/null
adb shell dumpsys jobscheduler </dev/null | less

# Replace "shell" with the (undocumented) exec-out command, which does not redirect stdin
adb exec-out dumpsys jobscheduler | less

# Run adb via process substitution
less <(adb shell dumpsys jobscheduler)

相关内容