เกรป กำลังค้นหาไฟล์ ssh_known_hosts สำหรับบรรทัด (หรือบรรทัด) ที่ขึ้นต้นด้วย x06 (^ ระบุจุดเริ่มต้นของบรรทัดใน นิพจน์ทั่วไป) และแสดงผลออกมา
จาก ผู้ชาย ssh-keygen:
ssh-keygen -l [-f input_keyfile]
[...]
-l แสดงลายนิ้วมือของไฟล์รหัสสาธารณะที่ระบุ คีย์ RSA1 ส่วนตัว
ได้รับการสนับสนุนด้วย สำหรับคีย์ RSA และ DSA ssh-keygen พยายาม
ค้นหาไฟล์คีย์สาธารณะที่ตรงกันและพิมพ์ลายนิ้วมือ ถ้า
เมื่อรวมกับ -v การแสดงอักษรศิลป์ ASCII ของคีย์คือ supâ
ด้วยลายนิ้วมือ
ดังนั้น ssh-keygen -l -f - อ่านคีย์จากอินพุตมาตรฐาน (นั่นคือจากบรรทัดที่ส่งออกโดย เกรป) และส่งออกลายนิ้วมือ (- ใช้เป็นชื่อไฟล์หมายถึงอินพุตมาตรฐาน)
เดอะ เสด ส่วนที่ยากที่สุด เราต้องเข้าใจ Regular Expression เป็นอย่างดีจึงจะเข้าใจว่ามันทำอะไร
เสด รันคำสั่ง s/รูปแบบ/การแทนที่/ ในแต่ละบรรทัดของอินพุต นั่นคือแทนที่ ลวดลาย กับ เปลี่ยน และคัดลอกบรรทัดไปยังเอาต์พุตมาตรฐาน ถ้า ลวดลาย ไม่พบในบรรทัด บรรทัดจะถูกคัดลอกไม่เปลี่ยนแปลง
เดอะ ลวดลาย เสด กำลังมองหาคือ: ^.*\(SHA256:\S\+\).*(\([^)]\+\)). เป็นนิพจน์ทั่วไปแน่นอน
แยกย่อยได้ดังนี้
ต้นบรรทัด (^) ตามด้วยอักขระใดก็ได้ตั้งแต่ศูนย์ขึ้นไป (.*) ตามด้วยอันดับแรก กลุ่ม (ส่วนระหว่าง \( ... \); เราจะไปดูรายละเอียดในภายหลัง) ตามด้วยอักขระใด ๆ ที่เป็นศูนย์หรือมากกว่า (.*) ตามด้วยวินาที กลุ่มซึ่งอยู่ในวงเล็บตามตัวอักษร (\( ... \)).
กลุ่มแรกคือ SHA256:\S\+. นี่หมายถึงสตริงตามตัวอักษร SHA256:ตามด้วยอักขระที่ไม่ใช่ช่องว่างอย่างน้อยหนึ่งตัว (\S\+) - อย่างไรก็ตาม ควรสังเกตว่าไม่ใช่ทั้งหมด เสด การใช้งานจะสนับสนุน \S เป็นการระบุอักขระที่ไม่ใช่ช่องว่าง ดังนั้นการแข่งขันของกลุ่มแรก SHA256: ตามด้วยอักขระใด ๆ จนถึงช่องว่างแรก
กลุ่มที่สองคือ [^)]\+นั่นคือ อักขระอย่างน้อยหนึ่งตัวที่ไม่เท่ากับวงเล็บปิด เมื่อพิจารณาว่าทั้งกลุ่มอยู่ในวงเล็บ กลุ่มที่สองจะจับคู่สตริงใดๆ ที่อยู่ในวงเล็บ จนถึงวงเล็บปิด
สรุป, เสด ค้นหาในบรรทัดสำหรับรูปแบบที่ประกอบด้วย SHA256: บวกกับอักขระที่ไม่ใช่ช่องว่าง และสตริงใดๆ ที่อยู่ในวงเล็บ โดยมีสิ่งใดอยู่ระหว่างอักขระเหล่านั้น
รูปแบบที่ตรงกันจะถูกแทนที่ด้วย \2: \1 ซึ่งเป็นข้อความที่ตรงกับกลุ่มที่สอง (\2), ทวิภาค, เว้นวรรค และข้อความที่ตรงกับกลุ่มแรก (\1).
ตัวอย่างเช่น ถ้า ssh-keygen เอาต์พุตมีบรรทัดเช่น
เริ่มต้นบางอย่าง SHA256:123456 ตรงกลางบางอย่าง (ข้อความภายในวงเล็บ) สิ้นสุดบางอย่าง
เสด จะแทนที่บรรทัดนั้นด้วย
ข้อความภายในวงเล็บ: SHA256:123456 จบบางสิ่ง
เส้นที่ไม่มีรูปแบบจะไม่เปลี่ยนแปลง