ใช่คุณสามารถgrep /dev/sda1และ/procแต่คุณอาจไม่ต้องการ รายละเอียดเพิ่มเติม:
ใช่คุณสามารถเรียกใช้ grep /dev/sda1เนื้อหาไบนารีของ แต่ด้วยฮาร์ดดิสก์ขนาดใหญ่ที่ทันสมัยจะใช้เวลานานมากและผลลัพธ์ไม่น่าจะมีประโยชน์
ใช่คุณสามารถ grep เนื้อหาของ/procแต่ระวังว่าหน่วยความจำของคอมพิวเตอร์ของคุณถูกแมปในนั้นเป็นไฟล์ บนคอมพิวเตอร์สมัยใหม่ที่มี RAM ขนาดกิกะไบต์จะใช้เวลานานในการ grep และอีกครั้งผลลัพธ์ไม่น่าจะมีประโยชน์
เป็นข้อยกเว้นถ้าคุณกำลังค้นหาข้อมูลบนฮาร์ดดิสก์ที่มีระบบไฟล์ที่เสียหายคุณอาจเรียกใช้grep something /dev/sda1เป็นส่วนหนึ่งของความพยายามในการกู้คืนข้อมูลของไฟล์
ไฟล์ที่มีปัญหาอื่น ๆ ใน /dev
ฮาร์ดดิสก์และพาร์ติชั่นฮาร์ดดิสก์ที่อยู่ด้านล่าง/devนั้นสามารถทำได้หากมีความอดทนมากพอ อย่างไรก็ตามไฟล์อื่น ๆ (หมวก: 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จะมีสัญญาณให้หยุด
มันจะมีประโยชน์ในการ grep /dev/urandomเมื่อสร้างรหัสผ่าน ในการรับตัวอย่างเช่นตัวอักษรและตัวเลขห้าตัว:
$ 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จากการค้นหา recursive grep กับ:
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ค้นหาไฟล์/procที่นำไปสู่หน่วยความจำที่ถูกแมปมันอาจเกิดขึ้นที่grepกระทบ EOF ในหน่วยความจำ (สุ่ม) และตีความข้อมูลต่อไปนี้เป็น ชื่อไฟล์ใหม่ที่จะค้นหา? ฉันเริ่มอ่านgrepซอร์สโค้ด แต่ฉันเดาว่าฉันจะไม่เห็นมันมากเกินไป