adb出力をlessにパイプすると、予期せず動作します。

adb出力をlessにパイプすると、予期せず動作します。

ビューを使用すると、less特定のコマンドの出力がadb期待どおりに機能しないことがよくあります。

たとえば、次の画面に進むためにスペースバーを押すと通常は何も起こりませんが、スペースバーを2回押すと前に進みます。 (しかしこれは一貫性がありません。)

別の珍しい点は、正規表現を検索すると、パターンが存在しても「パターンが見つかりません」が返されることです。

再現するには:

adb shell dumpsys jobscheduler | less

実際の動作:

  • スペースバーを押しても常に次の画面に進むわけではありません

予想される動作:

  • スペースバーを押すと、安定して次の画面に進みます。

答え1

問題はadb shellstdin(文書化されていないようです)で読むことです。

この問題を解決する方法はいくつかあります。

# 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)

関連情報