adb 출력을 less로 파이프하면 예기치 않게 동작합니다.

adb 출력을 less로 파이프하면 예기치 않게 동작합니다.

보기를 사용하면 less특정 명령의 출력이 adb예상대로 작동하지 않는 경우가 많습니다.

예를 들어, 다음 화면으로 넘어가기 위해 스페이스바를 누르면 일반적으로 아무 일도 일어나지 않지만, 스페이스바를 두 번째로 누르면 앞으로 넘어갑니다. (그러나 이것은 일관성이 없습니다.)

또 다른 특이한 점은 정규식을 검색하면 패턴이 존재하더라도 "패턴을 찾을 수 없음"이 반환된다는 것입니다.

재현하려면:

adb shell dumpsys jobscheduler | less

실제 동작:

  • 스페이스바를 눌러도 항상 다음 화면으로 넘어가지는 않습니다

예상되는 동작:

  • 스페이스바를 누르면 안정적으로 다음 화면으로 넘어갑니다.

답변1

문제는 adb shellstdin(문서화되지 않은 것 같음)에서 읽는 것인데, 이는 stdin에서도 읽으려는 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)

관련 정보