Metacharacters ของ Linux และความหมาย

อักขระเมตาคืออักขระใดๆ ที่มีความหมายพิเศษ เช่น กะรัต (^), เครื่องหมายดอลลาร์ ($) หรือเครื่องหมายดอกจัน (*) ลินุกซ์มีเมตาคาแรคเตอร์เหล่านี้อยู่พอสมควร และความหมายก็แตกต่างกันไปตาม คำสั่งลินุกซ์ หรือโปรแกรมที่คุณใช้

Full Stop เป็น Metacharacter (.)

หยุดเต็ม (.) ระบุตำแหน่งปัจจุบันเมื่อรันคำสั่งเช่น ซีดี, หา, หรือ sh. ในการใช้งานเช่น awk, grepและ sed เป็นไวด์การ์ดที่ระบุจำนวนอักขระใดๆ ที่ระบุ

ตัวอย่างเช่น คำสั่งต่อไปนี้จะค้นหาทั้งหมด ไฟล์ MP3 ในโฟลเดอร์ปัจจุบันและโฟลเดอร์ย่อย

หา. -type f -name '*.mp3'

หากคุณเรียกใช้คำสั่งนั้นในไดเร็กทอรีการทำงานปัจจุบัน (pwd) คุณจะเห็นผลลัพธ์ที่ส่งคืน สมมติว่าคุณเก็บไฟล์ MP3 ไว้ในโฟลเดอร์เพลงในโฟลเดอร์เริ่มต้นของคุณ

ตอนนี้ดูคำสั่งนี้:

ps -ef | grep f..fox

คำสั่ง ps แสดงรายการกระบวนการที่ทำงานอยู่ทั้งหมดบนคอมพิวเตอร์ของคุณ คำสั่ง grep รับบรรทัดอินพุตและค้นหารูปแบบ

อักขระจุดลินุกซ์

คำสั่ง ps -ef ดึงรายการกระบวนการที่ทำงานอยู่ ท่อ (|) metacharacter ส่งรายการนั้นไปยังคำสั่ง grep ซึ่งค้นหาบรรทัดใด ๆ ในรายการที่มี ฉ..foxโดยที่จุดหมายถึงอักขระสองตัวใดตัวหนึ่ง

หาก Firefox ทำงานอยู่ คุณจะได้ผลลัพธ์ที่ตรงกัน ในทำนองเดียวกัน หากโปรแกรมที่ชื่อว่า fonefox หรือ freefox กำลังทำงาน โปรแกรมเหล่านี้จะถูกส่งคืนด้วย

หากคุณต้องการค้นหาอักขระเพียงตัวเดียว แทนที่จะใช้อักขระเมตาหยุดแบบเต็ม (.) ให้ใช้? อักขระเมตา ใช้? metacharacter หมายถึงอักขระเดี่ยวใดๆ ที่จุดเริ่มต้นหรือจุดสิ้นสุดของรูปแบบ

เครื่องหมายดอกจันเป็น Metacharacter (*)

เครื่องหมายดอกจัน (*) เป็น metacharacter ที่เป็นที่รู้จักในระดับสากล หมายถึง 0 หรือมากกว่าของอักขระใด ๆ เมื่อค้นหารูปแบบ ตัวอย่างเช่น:

ls *.flac
รายการดอกจันลินุกซ์

NS *.flac ส่วนหนึ่งของคำสั่งส่งคืนการจับคู่สำหรับชื่อไฟล์ที่ลงท้ายด้วย .flac ในทำนองเดียวกัน คุณสามารถใช้เครื่องหมายดอกจันกับคำสั่ง grep ในส่วนสุดท้ายดังนี้:

ps -ef | grep f*foox

สิ่งนี้แตกต่างกันเล็กน้อยเนื่องจากดอกจันหมายถึงศูนย์หรือมากกว่านั้น เช่นเดียวกับการค้นหา firefox, facefox และ fonefox มันยังพบ flutefox, ferretfox และ fefox

อักขระดอกจันลินุกซ์

กะรัตเป็น Metacharacter (^)

กะรัต (^) ใช้เพื่อแสดงถึงจุดเริ่มต้นของบรรทัดหรือสตริง แล้วมันใช้ยังไง?

คำสั่ง ls แสดงรายการไฟล์ในโฟลเดอร์ดังนี้:

ls -a

หากคุณต้องการแสดงรายการไฟล์ในโฟลเดอร์ที่ขึ้นต้นด้วยสตริง เช่น gnome คุณสามารถใช้กะรัตเพื่อระบุสตริงนั้นได้ ตัวอย่างเช่น:

ls -a | grep ^gnome

รายการนี้จะแสดงรายการไฟล์ที่ขึ้นต้นด้วย gnome หากคุณต้องการไฟล์ที่มี gnome ที่ใดก็ได้ในชื่อไฟล์ ให้ใช้เครื่องหมายดอกจัน

ตัวอักษรกะรัตลินุกซ์

ในตัวอย่างข้างต้น คำสั่ง ls จะส่งคืนรายชื่อไฟล์และส่งรายการนั้นไปยังคำสั่ง grep ซึ่งใช้สำหรับการจับคู่รูปแบบ Grep รู้ดีว่าสัญลักษณ์กะรัตหมายถึงการค้นหาทุกอย่างที่ขึ้นต้นด้วยอักขระที่ตามมา และในกรณีนี้ นั่นคือคำพังเพย

สัญลักษณ์ดอลลาร์เป็น Metacharacter ($)

สัญลักษณ์ดอลลาร์ ($) มีความหมายหลายอย่างในฐานะ metacharacter ใน Linux เมื่อใช้เพื่อจับคู่รูปแบบ หมายถึงสิ่งที่ตรงกันข้ามกับกะรัตและหมายถึงรูปแบบใดๆ ที่ลงท้ายด้วยสตริงเฉพาะ ตัวอย่างเช่น:

ls | grep png$

แสดงรายการไฟล์ทั้งหมดที่ลงท้ายด้วย png

สัญลักษณ์ดอลลาร์ยังใช้เพื่อเข้าถึงตัวแปรสภาพแวดล้อมภายใน bash shell ตัวอย่างเช่น:

#! /bin/bash
สุนัขส่งออก=มอลลี่
echo $dog
อักขระเครื่องหมายดอลลาร์ลินุกซ์

เส้น สุนัขส่งออก=มอลลี่ สร้างตัวแปรสภาพแวดล้อมที่เรียกว่า หมา และกำหนดมูลค่า มอลลี่. ในการเข้าถึงตัวแปรสภาพแวดล้อม ให้ใช้สัญลักษณ์ $ ด้วยสัญลักษณ์ $, the echo $dog คำสั่งแสดงมอลลี่ หากไม่มีมัน เสียงสะท้อนสุนัข คำสั่งแสดงคำว่า dog

หนี Metacharacters (\\)

บางครั้งคุณไม่ต้องการให้ metacharacter มีความหมายพิเศษ ตัวอย่างเช่น ถ้าไฟล์ชื่อ f.refox และอีกไฟล์หนึ่งชื่อ firefox.

ตอนนี้ดูที่คำสั่งต่อไปนี้:

ls | grep f.refox

คิดว่าจะได้อะไรกลับมา? ทั้ง f.refox และ firefox ถูกส่งกลับเนื่องจากทั้งคู่ตรงกับรูปแบบ

อักขระหลีกลินุกซ์

ในการส่งคืน f.refox เท่านั้น ให้หลีกเลี่ยงจุดหยุดทั้งหมดเพื่อหมายถึงการหยุดเต็มจริง ๆ ดังนี้:

ls | grep f\\.refox

วงเล็บเป็น Metacharacter ([])

คุณสามารถใช้วงเล็บ ([ ]) เมื่อค้นหารูปแบบ วงเล็บระบุตัวอักษรเฉพาะเพื่อให้ตรงกับที่ใดก็ได้ในรูปแบบ ตัวอย่างเช่น:

ls | เกรป [abc]

รายการนี้แสดงรายการไฟล์ทั้งหมดที่มีตัวอักษร a, b หรือ c

อักขระวงเล็บลินุกซ์

คุณสามารถใช้วงเล็บที่จุดเริ่มต้น สิ้นสุด หรือตรงกลางของรูปแบบการค้นหา

หากต้องการค้นหาช่วงตัวอักษร ให้ใช้อักขระยัติภังค์ (-) ตัวอย่างเช่น, ลส [a-h]* ส่งคืนไฟล์ที่ขึ้นต้นด้วยตัวอักษรใดๆ ตั้งแต่ a ถึง h

Metacharacter สำเนียงหลุมฝังศพ

ในตัวอย่างข้างต้น metacharacter ของไพพ์จะส่งผลลัพธ์ของคำสั่งหนึ่ง (เช่นคำสั่ง ls) ไปยังคำสั่งอื่น (เช่นคำสั่ง grep)

อีกวิธีหนึ่งในการทำเช่นนี้คือการใช้เครื่องหมายอัญประกาศด้านหลัง หรือที่เรียกว่า หลุมฝังศพที่เน้นเสียง (`) เพื่อแทรกผลลัพธ์ของคำสั่งหนึ่งไปยังคำสั่งอื่น เมื่อต้องการทำสิ่งนี้ ให้เก็บผลลัพธ์ของคำสั่งหนึ่งคำสั่งไว้ในตัวแปร ตัวอย่างเช่น:

command=`ls -lah`
echo $ command
ลินุกซ์ backtick ตัวอักษร

ตัวอย่างนี้ประดิษฐ์ขึ้นมาเป็นพิเศษ และคุณจะไม่เคยทำแบบนั้นเลย แต่คุณสามารถเห็นวิธีการทำงาน อักขระ backtick รันคำสั่งและบันทึกผลลัพธ์ สิ่งนี้มีประโยชน์ในการเขียนสคริปต์ แต่มีความยืดหยุ่นน้อยกว่าการใช้ไพพ์สำหรับคำสั่งง่ายๆ

Metacharacters ทั่วไปและความหมายของพวกเขา

อักขระ ความหมาย
. ตัวอักษรใดก็ได้
* อักขระศูนย์หรือมากกว่า
^ จับคู่บรรทัดหรือสตริงที่ขึ้นต้นด้วยรูปแบบ (เช่น ^gnome)
$ จับคู่บรรทัดหรือสตริงที่ลงท้ายด้วยรูปแบบ (เช่น gnome$)
\ หนีอักขระตัวถัดไปเพื่อลบความหมายพิเศษ
[] จับคู่หนึ่งในรายการหรือช่วง (เช่น ["abc", "def"] หรือ [1..9])
+ จับคู่คำนำหน้าอย่างน้อย 1 รายการ (เช่น grep a+)
? ตรงกับศูนย์หรือหนึ่งที่อยู่ข้างหน้า