วิธีใช้คำสั่ง Echo บน Linux
echo
คำสั่งเป็นที่สมบูรณ์แบบสำหรับการเขียนรูปแบบข้อความไปยังหน้าต่าง terminal และไม่จำเป็นต้องเป็นข้อความคงที่ สามารถรวมตัวแปรเชลล์ชื่อไฟล์และไดเร็กทอรี คุณยังสามารถเปลี่ยนเส้นทางเสียงสะท้อนเพื่อสร้างไฟล์ข้อความและไฟล์บันทึก ทำตามคำแนะนำง่ายๆนี้เพื่อดูวิธีการ
Echo ทำซ้ำสิ่งที่คุณบอกให้ทำซ้ำ
ซุสชอบที่จะออกจากภูเขาโอลิมปัสเพื่อคบหากับนางไม้แสนสวย ในการเดินทางครั้งหนึ่งเขาบอกนางไม้ภูเขาที่เรียกว่าเอคโค่เพื่อไล่ตามเฮร่าภรรยาของเขาหากเธอตามเขาไป เฮร่าตามหาซุสและเอคโค่ก็ทำทุกวิถีทางเพื่อให้เฮร่าคุยกัน ในที่สุดเฮร่าก็เสียอารมณ์และสาปแช่งก้องผู้น่าสงสารเพื่อให้เธอพูดซ้ำคำสุดท้ายที่คนอื่นพูด สิ่งที่ Hera ทำกับ Zeus เมื่อเธอติดต่อกับเขาคือใคร ๆ ก็เดาได้
และนั่นก็เป็นสิ่งecho
ที่ดีมากในชีวิต มันทำซ้ำสิ่งที่บอกให้ทำซ้ำ นั่นเป็นฟังก์ชั่นง่ายๆ แต่มีความสำคัญ หากไม่มีecho
เราจะไม่สามารถรับเอาต์พุตที่มองเห็นได้จากเชลล์สคริปต์เช่น
แม้ว่าจะไม่ได้รับเสียงระฆังและนกหวีดมากมาย แต่ก็มีโอกาสที่ดีที่จะecho
มีความสามารถบางอย่างที่คุณไม่รู้หรือคุณลืมไป
เสียงสะท้อน? ก้อง!
ระบบ Linux ส่วนใหญ่มีecho
ไฟล์. Bash shell มีอยู่ในตัวecho
และมีเวอร์ชันปฏิบัติการไบนารีด้วยecho
เช่นกัน
เราสามารถดูสองเวอร์ชันที่แตกต่างกันได้โดยใช้คำสั่งต่อไปนี้:
พิมพ์ echo
เสียงสะท้อนที่ไหน
type
คำสั่งบอกให้เราทราบว่าคำสั่งที่เราผ่านไปมันเป็นอาร์กิวเมนต์ที่เป็น builtin เปลือกปฏิบัติการไบนารีนามแฝงหรือมีฟังก์ชั่น รายงานให้เราทราบว่าecho
เป็นเปลือกที่สร้างขึ้น
ทันทีที่พบคำตอบให้type
หยุดค้นหาการแข่งขันต่อไป ดังนั้นจึงไม่ได้บอกเราว่ามีคำสั่งอื่นที่มีชื่อเดียวกันอยู่ในระบบหรือไม่ แต่มันบอกเราว่าเจออันไหนก่อน และนั่นคือสิ่งที่จะถูกใช้โดยค่าเริ่มต้นเมื่อเราออกคำสั่งนั้น
whereis
คำสั่งรูปลักษณ์สำหรับไบนารีซอร์สโค้ดและหน้าคนสำหรับคำสั่งที่เราผ่านไปเป็นพารามิเตอร์บรรทัดคำสั่งของมัน ไม่มองหาเชลล์บิวด์อินเนื่องจากไม่มีไบนารีที่เรียกใช้งานแยกต่างหาก พวกมันเป็นส่วนหนึ่งของ Bash ที่เรียกใช้งานได้
whereis
รายงานคำสั่งที่echo
เป็นไบนารีอยู่ใน/bin
ไดเรกทอรี
ในการใช้เวอร์ชันนั้นecho
คุณจะต้องเรียกอย่างชัดเจนโดยระบุเส้นทางไปยังไฟล์ปฏิบัติการบนบรรทัดคำสั่ง:
/ bin / echo --version
เชลล์ในตัวไม่ทราบว่า--version
อาร์กิวเมนต์บรรทัดคำสั่งคืออะไรเพียงแค่ทำซ้ำในหน้าต่างเทอร์มินัล:
เสียงสะท้อน - รุ่น
ตัวอย่างที่แสดงที่นี่ทั้งหมดใช้เวอร์ชันเริ่มต้นของecho
ใน Bash shell
การเขียนข้อความไปยัง Terminal
ในการเขียนสตริงข้อความธรรมดาลงในหน้าต่างเทอร์มินัลให้พิมพ์echo
และสตริงที่คุณต้องการให้แสดง:
echo ฉันชื่อเดฟ
ข้อความซ้ำสำหรับเรา แต่เมื่อคุณทดลองคุณจะพบในไม่ช้าว่าสิ่งต่างๆอาจซับซ้อนขึ้นเล็กน้อย ดูตัวอย่างนี้:
echo ฉันชื่อเดฟและฉันเป็นคนเก่ง
หน้าต่างเทอร์มินัลแสดง >
ป้ายและนั่งรออยู่ Ctrl + C จะนำคุณกลับสู่พรอมต์คำสั่ง เกิดอะไรขึ้นที่นั่น?
อ้างเดียวหรือเครื่องหมายวรรคตอนในคำว่า“ฉัน” echo
สับสน มันตีความว่าเครื่องหมายคำพูดเดียวเป็นจุดเริ่มต้นของส่วนที่ยกมาของข้อความ เนื่องจากตรวจไม่พบเครื่องหมายคำพูดเดียวที่ปิด echo
จึงกำลังรอข้อมูลเพิ่มเติม คาดว่าข้อมูลเพิ่มเติมเพื่อรวมเครื่องหมายคำพูดเดี่ยวที่ขาดหายไปซึ่งกำลังรออยู่
หากต้องการรวมเครื่องหมายคำพูดเดียวในสตริงวิธีแก้ปัญหาที่ง่ายที่สุดคือการรวมสตริงทั้งหมดไว้ในเครื่องหมายคำพูดคู่:
echo "ฉันชื่อเดฟและฉันเป็นคนเกินบรรยาย"
การห่อข้อความของคุณด้วยเครื่องหมายอัญประกาศเป็นคำแนะนำทั่วไปที่ดี ในสคริปต์มันหมดจด delimits echo
พารามิเตอร์ที่คุณกำลังผ่านไป สิ่งนี้ทำให้การอ่านและการแก้ไขข้อบกพร่อง - สคริปต์ง่ายขึ้นมาก
จะเกิดอะไรขึ้นถ้าคุณต้องการรวมอักขระเครื่องหมายคำพูดคู่ในสตริงข้อความของคุณ? ทำได้ง่ายเพียงใส่แบ็กสแลช\
หน้าเครื่องหมายอัญประกาศคู่ (โดยไม่ต้องเว้นวรรค)
echo "ฉันชื่อเดฟและฉันเป็น \" เกินบรรยาย \ ""
สิ่งนี้รวมคำว่า“ geek” ไว้ในเครื่องหมายอัญประกาศคู่สำหรับเรา เราจะเห็นอักขระที่ใช้เครื่องหมายทับขวาเหล่านี้เพิ่มเติมในไม่ช้า
การใช้ตัวแปรด้วยเสียงสะท้อน
จนถึงตอนนี้เราได้เขียนข้อความที่กำหนดไว้ล่วงหน้าลงในหน้าต่างเทอร์มินัล เราสามารถใช้ตัวแปรecho
เพื่อสร้างเอาต์พุตที่มีไดนามิกมากขึ้นและมีค่าที่เชลล์แทรกเข้ามาให้เรา เราสามารถกำหนดตัวแปรง่ายๆด้วยคำสั่งนี้:
my_name = "เดฟ"
my_name
มีการสร้างตัวแปรที่เรียกว่า ได้รับการกำหนดค่าของข้อความ "Dave" เราสามารถใช้ชื่อตัวแปรในสตริงที่เราส่งผ่านไปecho
ได้และค่าของตัวแปรจะถูกเขียนลงในหน้าต่างเทอร์มินัล คุณต้องใส่เครื่องหมายดอลลาร์$
หน้าชื่อตัวแปรเพื่อแจ้งให้echo
ทราบว่าเป็นตัวแปร
มีข้อแม้คือ หากคุณพันสตริงของคุณด้วยเครื่องหมายอัญประกาศเดี่ยวecho
จะถือว่าทุกอย่างเป็นไปอย่างแท้จริง ในการแสดงค่าตัวแปรไม่ใช่ชื่อของตัวแปรให้ใช้เครื่องหมายอัญประกาศคู่
echo 'ฉันชื่อ $ my_name'
echo "ฉันชื่อ $ my_name"
ค่อนข้างเหมาะที่ควรทำซ้ำ:
- ใช้เพียงครั้งเดียวเครื่องหมายคำพูดผลลัพธ์ในข้อความที่ถูกเขียนไปยังหน้าต่าง terminal ในตัวอักษรแฟชั่น
- การใช้ เครื่องหมายอัญประกาศคู่ส่งผลให้ตัวแปรถูกตีความหรือเรียกอีกอย่างว่าการขยายตัวแปรและค่าจะถูกเขียนลงในหน้าต่างเทอร์มินัล
ที่เกี่ยวข้อง: วิธีการทำงานกับตัวแปรใน Bash
การใช้คำสั่งด้วยเสียงสะท้อน
เราสามารถใช้คำสั่งกับecho
และรวมเอาท์พุทลงในสตริงที่เขียนลงในหน้าต่างเทอร์มินัล เราต้องใช้เครื่องหมายดอลลาร์$
ราวกับว่าคำสั่งเป็นตัวแปรและรวมคำสั่งทั้งหมดไว้ในวงเล็บ
เราจะใช้คำสั่ง date echo
เคล็ดลับหนึ่งคือการใช้คำสั่งในตัวเองก่อนที่จะเริ่มใช้กับ ด้วยวิธีนี้หากมีบางอย่างผิดปกติกับไวยากรณ์ของคำสั่งของคุณให้คุณระบุและแก้ไขก่อนที่จะรวมไว้ในecho
คำสั่ง จากนั้นหากecho
คำสั่งไม่เป็นไปตามที่คุณคาดหวังคุณจะรู้ว่าปัญหาต้องมาจากecho
ไวยากรณ์เพราะคุณได้พิสูจน์ไวยากรณ์ของคำสั่งแล้ว
ลองสิ่งนี้ในหน้าต่างเทอร์มินัล:
วันที่ +% D
และพอใจที่เราได้รับสิ่งที่คาดหวังจากคำสั่ง date เราจะรวมเข้ากับecho
คำสั่ง:
echo "วันที่ของวันนี้คือ $ (วันที่ +% D)"
สังเกตว่าคำสั่งอยู่ในวงเล็บและเครื่องหมายดอลลาร์$
อยู่ข้างหน้าวงเล็บแรก
การจัดรูปแบบข้อความด้วยเสียงสะท้อน
-e
(เปิดใช้งานหนีทับขวา) ตัวเลือกที่ช่วยให้เราใช้ตัวอักษรทับขวาหนีบางอย่างที่จะเปลี่ยนรูปแบบของข้อความ เหล่านี้คืออักขระที่ใช้เครื่องหมายแบ็กสแลชที่เราสามารถใช้ได้:
- \ a : การแจ้งเตือน (ในอดีตเรียกว่า BEL) สิ่งนี้จะสร้างเสียงเตือนเริ่มต้น
- \ b : เขียนอักขระ backspace
- \ c : ละทิ้งผลลัพธ์เพิ่มเติมใด ๆ
- \ e : เขียนอักขระหลีก
- \ f : เขียนอักขระฟีดฟอร์ม
- \ n : เขียนบรรทัดใหม่
- \ r : เขียนการกลับรถ
- \ t : เขียนแท็บแนวนอน
- \ v : เขียนแท็บแนวตั้ง
- \\ : เขียนอักขระแบ็กสแลช
ลองใช้บางส่วนและดูว่าพวกเขาทำอะไร
echo -e "นี่คือข้อความบรรทัดยาว \ n แบ่งเป็นสามบรรทัด \ n กับ \ ttabs \ ton \ tth \ tthird \ tline"
ข้อความถูกแบ่งออกเป็นบรรทัดใหม่ที่เราใช้\n
อักขระและมีการแทรกแท็บที่เราใช้\t
อักขระ
echo -e "ที่นี่ \ vare \ vvertical \ vtabs"
เช่นเดียวกับ\n
อักขระขึ้นบรรทัดใหม่แท็บแนวตั้ง\v
จะย้ายข้อความไปที่บรรทัดด้านล่าง แต่ไม่เหมือนกับ \n
อักขระขึ้นบรรทัดใหม่\v
แท็บแนวตั้งจะไม่ขึ้นบรรทัดใหม่ที่คอลัมน์ศูนย์ ใช้คอลัมน์ปัจจุบัน
\b
ตัวอักษร Backspace ย้ายกลับเคอร์เซอร์ตัวละครตัวหนึ่ง หากมีการเขียนข้อความในเทอร์มินัลมากขึ้นข้อความนั้นจะเขียนทับอักขระก่อนหน้า
เสียงสะท้อน -e "123 \ b4"
“ 3” เขียนทับโดย“ 4”
\r
ตัวอักษรกลับรถทำให้เกิด echo
เพื่อกลับไปยังจุดเริ่มต้นของบรรทัดปัจจุบันและเขียนข้อความใด ๆ เพิ่มเติมจากศูนย์คอลัมน์
เสียงสะท้อน -e "123 \ r456"
อักขระ“ 123” ถูกเขียนทับด้วยอักขระ“ 456”
\a
ตัวอักษรการแจ้งเตือนจะผลิตเสียงดัง“bleep.” ใช้เสียงแจ้งเตือนเริ่มต้นสำหรับธีมปัจจุบันของคุณ
echo -e "ทำเสียงดัง \ a"
-n
(ไม่มีการขึ้นบรรทัดใหม่) ตัวเลือกที่ไม่ได้เป็นลำดับทับขวาหนี แต่ก็ไม่ส่งผลกระทบต่อเครื่องสำอางของรูปแบบข้อความดังนั้นเราจะหารือเกี่ยวกับมันนี่ ป้องกันไม่ให้echo
เพิ่มขึ้นบรรทัดใหม่ที่ท้ายข้อความ พรอมต์คำสั่งจะปรากฏขึ้นหลังข้อความที่เขียนลงในหน้าต่างเทอร์มินัลโดยตรง
echo -n "ไม่มีการขึ้นบรรทัดใหม่สุดท้าย"
ใช้เสียงสะท้อนกับไฟล์และไดเร็กทอรี
คุณสามารถใช้echo
เป็นเวอร์ชันของls
. ตัวเลือกของคุณมีน้อยและห่างไกลเมื่อคุณใช้echo
แบบนี้ หากคุณต้องการความเที่ยงตรงหรือการควบคุมที่ดีคุณควรใช้ls
และตัวเลือกมากมาย
คำสั่งนี้แสดงรายการไฟล์และไดเร็กทอรีทั้งหมดในไดเร็กทอรีปัจจุบัน:
เสียงสะท้อน *
คำสั่งนี้แสดงรายการไฟล์และไดเร็กทอรีทั้งหมดในไดเร็กทอรีปัจจุบันที่ชื่อขึ้นต้นด้วย“ D”:
เสียงสะท้อน D *
คำสั่งนี้แสดงรายการไฟล์“ .desktop” ทั้งหมดในไดเร็กทอรีปัจจุบัน:
เสียงสะท้อน * .desktop
ใช่. สิ่งนี้ไม่ได้เล่นเพื่อecho
จุดแข็งของ ใช้ls
.
การเขียนไฟล์ด้วยเสียงสะท้อน
เราสามารถเปลี่ยนเส้นทางเอาต์พุตจากecho
และสร้างไฟล์ข้อความหรือเขียนลงในไฟล์ข้อความที่มีอยู่
หากเราใช้ตัว>
ดำเนินการเปลี่ยนเส้นทางไฟล์จะถูกสร้างขึ้นหากไม่มีอยู่ หากมีไฟล์อยู่เอาต์พุตจากecho
จะถูกเพิ่มที่จุดเริ่มต้นของไฟล์โดยเขียนทับเนื้อหาก่อนหน้านี้
หากเราใช้ตัว>>
ดำเนินการเปลี่ยนเส้นทางไฟล์จะถูกสร้างขึ้นหากไม่มีอยู่ เอาต์พุตจากecho
จะถูกเพิ่มที่ส่วนท้ายของไฟล์และไม่เขียนทับเนื้อหาที่มีอยู่ของไฟล์
echo "กำลังสร้างไฟล์ใหม่" > sample.txt
echo "กำลังเพิ่มไฟล์" >> sample.txt
cat sample.txt
ไฟล์ใหม่ถูกสร้างขึ้นโดยคำสั่งแรกและข้อความจะถูกแทรกลงในไฟล์ คำสั่งที่สองเพิ่มบรรทัดข้อความที่ด้านล่างของไฟล์ cat
คำสั่งแสดงเนื้อหาของไฟล์ที่จะหน้าต่าง terminal
และแน่นอนเราสามารถรวมตัวแปรเพื่อเพิ่มข้อมูลที่เป็นประโยชน์ลงในไฟล์ของเราได้ หากไฟล์นั้นเป็นไฟล์บันทึกเราอาจต้องการเพิ่มการประทับเวลาลงไป เราสามารถทำได้ด้วยคำสั่งถัดไป
สังเกตเครื่องหมายคำพูดเดี่ยวรอบ ๆ พารามิเตอร์สำหรับdate
คำสั่ง ซึ่งป้องกันไม่ให้ช่องว่างระหว่างพารามิเตอร์ถูกตีความว่าเป็นส่วนท้ายของรายการพารามิเตอร์ ตรวจสอบให้แน่ใจว่าพารามิเตอร์ถูกส่งผ่านไป date
อย่างถูกต้อง
echo "ไฟล์บันทึกเริ่มต้น: $ (วันที่ + '% D% T')"> logfile.txt
แมว logfile.txt
ไฟล์บันทึกของเราถูกสร้างขึ้นสำหรับเราและcat
แสดงให้เราเห็นว่ามีการเพิ่มทั้ง datestamp และ timestamp เข้าไป
ที่เกี่ยวข้อง: stdin, stdout และ stderr บน Linux คืออะไร?
นั่นคือเสียงสะท้อนของ Repertoire
คำสั่งง่ายๆ แต่ขาดไม่ได้ ถ้ามันไม่มีเราก็ต้องคิดค้นมันขึ้นมา
เชนานิแกนส์ของซุสทำได้ดีมาก