/sys 파일의 Grep은 아무것도 반환하지 않습니다.

/sys 파일의 Grep은 아무것도 반환하지 않습니다.

문자열에 대한 디렉토리를 검색하고 싶습니다 /sys/class/tty/*. 그래서 나는 다음을 시도했습니다.

# grep -rn path -e pattern

그러나 아무것도 반환하지 않습니다. 예:

# cat /sys/class/tty/ttySTM0/iomem_base 
0x40010000

# ls -l /sys/class/tty/ttySTM0/iomem_base 
-r--r----- 1 root root 4096 Jan 17 10:37 /sys/class/tty/ttySTM0/iomem_base

# grep -rn /sys/class/tty/ -e 0x40010000
#

다른 디렉토리에서 동일한 구문을 사용하면 작동하는 것 같습니다.

# grep -rn /opt -e Could
# /opt/logs/joku1_log.txt:29:Could not read interface wlan0 flags: No such device

그러한 연구에 주의할 점이 있나요? 내 목표는 어느 것이 tty특정 주소를 가지고 있는지 찾는 것입니다 iomem_base.

답변1

다음 옵션 중 하나를 사용하십시오.

grep -rn /sys/class/tty/* -e 0x40010000 2> /dev/null

grep -Rn /sys/class/tty/ -e 0x40010000 2> /dev/null

첫 번째 명령의 glob은 명령줄에 지정되지 않은 심볼릭 링크를 따르도록 하는 데 필요합니다. glob의 내용은 /sys/class/tty모두 /sys/devices/virtual/tty내용에 대한 심볼릭 링크 이기 때문입니다 /sys/devices/platform/serial####/tty.

기본적으로 두 번째 명령의 명령은 -R심볼릭 링크 뒤에 있으며 glob이 필요하지 않습니다.

2> /dev/nullSend Input/output errorPermission deniedmessage를 추가한 /dev/null이유는 이들 중 어느 것도 반환되지 않을 때 출력을 읽기가 더 쉽기 때문입니다.

답변2

의 항목은 /sys/class/tty디렉토리에 대한 심볼릭 링크이며 디렉토리의 여러 부분은 /sys장치가 내부적으로 연결되는 방식에 따라 구성됩니다. grep -r디렉토리에 대한 기호 링크는 따르지 않습니다.

grep -R심볼릭 링크를 따르지만 재귀적으로 탐색할 때 디렉터리를 따르는 것은 잘못된 생각입니다 . /sys왜냐하면 무한 루프(링크하려는 링크 /sys/foo/bar)가 있기 때문입니다./sys/corge/wibble/sys/foo

따라서 경로가 더 정확하게 지정됩니다. 이는 모든 tty 장치에 대한 모든 파일을 검색하는 데 충분합니다.

grep -l -r -x 0x40010000 /sys/class/tty/*/

그런데, 당신은 이미 파일의 전체 내용을 알고 있고 파일 이름이 필요하기 때문에 -n이것은 쓸모가 없으며 -l깔끔한 출력을 제공할 것입니다. -x잘못된 긍정을 방지하는 데 도움이 됩니다(그러나 내용의 iomem_base길이가 고정되어 있으므로 여기서는 필요하지 않습니다).

하지만 파일의 기본 이름을 알고 있으므로 해당 파일을 검색하면 됩니다.

grep -l -x 0x40010000 /sys/class/tty/*/iomem_base

관련 정보