예, 당신은 할 수 grep
/dev/sda1
및 /proc
하지만 당신은 아마 싶지 않아. 더 자세하게:
예,의 바이너리 내용을 grep 할 수 있습니다 /dev/sda1
. 그러나 현대의 대형 하드 디스크에서는 시간이 오래 걸리고 결과가 유용하지 않을 수 있습니다.
그렇습니다. 내용을 정리할 수는 /proc
있지만 컴퓨터의 메모리는 파일로 매핑되어 있습니다. 기가 바이트의 RAM이 장착 된 최신 컴퓨터에서는 grep하는 데 시간이 오래 걸리고 결과가 유용하지 않을 수 있습니다.
예외적으로, 파일 시스템이 손상된 하드 디스크 grep something /dev/sda1
에서 데이터를 찾는 경우 파일 데이터 복구 시도의 일부로 실행될 수 있습니다 .
다른 문제가있는 파일 /dev
/dev
인내심이 충분하다면 하드 디스크와 하드 디스크 파티션 이 손상 될 수 있습니다. 그러나 다른 파일 (hat tip : user2313067 )은 문제를 일으킬 수 있습니다.
/dev/zero
무한 길이의 파일입니다. 다행히도 grep
(적어도 GNU 버전)은 그것을 건너 뛸 정도로 똑똑합니다.
$ grep something /dev/zero
grep: input is too large to count
/dev/random
그리고 /dev/urandom
또한 무한하다. 중지하라는 신호가 grep something /dev/random
없으면 명령 이 영원히 실행됩니다 grep
.
/dev/urandom
암호를 생성 할 때 grep하는 것이 유용 할 수 있습니다 . 예를 들어 5 개의 임의의 영숫자 문자를 얻으려면 :
$ grep --text -o '[[:alnum:]]' /dev/urandom | head -c 10
G
4
n
X
2
문자를 충분히받은 후 head
파이프를 닫아서 grep을 종료시키기 때문에 이것은 무한하지 않습니다 .
무한 루프
"... 링크 ... 횡단 할 때 무한 루프 생성 ..."
Grep (적어도 GNU 버전)은 그렇게하지 않을만큼 똑똑합니다. 두 가지 경우를 고려해 봅시다.
이 -r
옵션을 사용하면 grep 은 명령 줄에 명시 적으로 지정되어 있지 않으면 심볼릭 링크를 따르지 않습니다 . 따라서 무한 루프는 불가능합니다.
이 -R
옵션을 사용하면 grep 은 기호 링크를 따르지만이를 확인하고 루프에 걸리지 않습니다. 설명하기 위해 :
$ mkdir a
$ ln -s ../ a/b
$ grep -R something .
grep: warning: ./a/b: recursive directory loop
문제가있는 디렉토리에서 제외 grep -r
옆으로, grep
grep이 특정 파일이나 디렉토리를 검색하지 못하게하는 제한된 기능을 제공합니다. 예를 들어, 모든 디렉토리 이름을 제외 할 수 있습니다 proc
, sys
그리고 dev
와 그렙의 재귀 검색에서 :
grep --exclude-dir proc --exclude-dir sys --exclude-dir dev -r something /
또한, 우리는 제외 할 수 있습니다 proc
, sys
그리고 dev
떠들썩한 파티의 확장 globs의 사용 :
shopt -s extglob
grep -r something /!(proc|sys|dev)
grep
파일을 검색 하면 (랜덤) 메모리 내부의 EOF에 도달 하여 다음 데이터를 다음과 같이 해석 할 수 있습니다. 검색 할 새 파일 이름? 소스 코드를 읽기 시작 했지만 너무 많이 보지 않을 것 같습니다./proc
grep
grep