ฟังก์ชัน Bash printf: 7 ตัวอย่างสำหรับ Linux

ฟังก์ชัน Bash printf: 7 ตัวอย่างสำหรับ Linux

หากคุณใช้เปลือก Bash มาระยะหนึ่งแล้ว คุณอาจรู้วิธีพิมพ์สตริงในเทอร์มินัล Linux โดยใช้คำสั่ง echo อย่างไรก็ตาม คำสั่ง printf ทำให้การพิมพ์ข้อความด้วยการจัดรูปแบบเฉพาะง่ายขึ้นมาก





วันนี้เราจะมาเรียนรู้วิธีใช้ฟังก์ชัน printf เพื่อพัฒนาทักษะการเขียนสคริปต์ทุบตีของเรา





ฟังก์ชั่น Bash printf คืออะไร?

ตามชื่อที่แนะนำ printf เป็นฟังก์ชันที่พิมพ์สตริงข้อความที่จัดรูปแบบ ซึ่งหมายความว่าคุณสามารถเขียนโครงสร้างสตริง (รูปแบบ) และเติมด้วยค่า (อาร์กิวเมนต์) ในภายหลัง





หากคุณคุ้นเคยกับภาษาการเขียนโปรแกรม C/C++ คุณอาจทราบแล้วว่า printf ทำงานอย่างไร Printf ในเชลล์ Bash นั้นคล้ายกันมาก แต่มีความแตกต่างเล็กน้อยเล็กน้อย

เรียนรู้เพิ่มเติม: ไซต์ที่ดีที่สุดในการเริ่มต้นเขียนโปรแกรม C++



วิธีใช้ printf ใน Bash Shell

ไวยากรณ์พื้นฐานสำหรับ printf คือ:

printf format [argument]

Printf จะพิมพ์ รูปแบบ สตริงขณะใช้งาน การรั่วไหล ( ) และ คำสั่ง ( % ) ผ่านการใช้งานตามที่กำหนด ข้อโต้แย้ง . สังเกตผลลัพธ์ของคำสั่งต่อไปนี้:





$ printf 'Hello, %s' world
Hello, world

Printf เอา โลก โต้แย้งและแทนที่ %NS อักขระในสตริงที่ระบุด้วย

คุณอาจสังเกตเห็นว่าหลังจากผลลัพธ์ Bash จะไม่สร้างบรรทัดใหม่ให้คุณ ไม่เหมือนกับคำสั่ง echo printf จะไม่ถือว่าคุณต้องการขึ้นบรรทัดใหม่หลังจากพิมพ์เอาต์พุตแล้ว ดังนั้น คุณจะต้องใช้อักขระขึ้นบรรทัดใหม่ NS ในแต่ละกรณี





เมื่อต้องการพิมพ์สตริงแล้วย้ายไปขึ้นบรรทัดใหม่ ให้พิมพ์ printf 'สวัสดีชาวโลก ' .

Hello, world

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

$ printf 'My name is %s ' Jordan Gloor
My name is Jordan My name is Gloor

คุณควรทราบด้วยว่าหากไม่มีอาร์กิวเมนต์ printf จะตีความคำสั่งใดๆ เป็น 0 (สำหรับตัวเลข) และ โมฆะ (สำหรับสตริง)

$ printf 'Hello, %s.'
Hello, .

ตอนนี้คุณรู้แล้วว่าการเขียนสคริปต์ Bash กับ printf ใน Linux ทำงานอย่างไร คุณก็พร้อมที่จะเริ่มใช้งานในคำสั่งของคุณแล้ว

Linux Bash printf ตัวอย่าง

Printf มีตัวระบุรูปแบบมากมายที่คุณสามารถใช้ได้ในสคริปต์ของคุณ แต่วันนี้เราจะมาพูดถึงฟังก์ชันทั่วไปบางส่วนเท่านั้น

1. จัดรูปแบบเอาต์พุตด้วยสตริง

ในการจัดรูปแบบเอาต์พุตด้วยสตริงข้อความ ให้ใช้ %NS คำสั่ง

$ printf '%s is one of the largest online %s.' MUO 'technology publications'
MUO is one of the largest online technology publications.

2. จัดรูปแบบสตริงเอาต์พุตด้วยทศนิยม

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

$ printf 'MUO was founded in %d.' 2007
MUO was founded in 2007.

โปรดทราบว่าหากคุณต้องการใช้ทศนิยมที่ไม่ได้ลงนามในผลลัพธ์ คุณจะต้องใช้ % ยู คำสั่งแทน

สร้างตัวกรอง snapchat ของคุณเองฟรี

ที่เกี่ยวข้อง: 'Bash' หมายถึงอะไรใน Linux?

3. ฟังก์ชันเอาต์พุตทางคณิตศาสตร์โดยใช้ printf

การจัดรูปแบบฟังก์ชันทางคณิตศาสตร์ด้วยคำสั่ง printf เป็นเรื่องง่าย เพียงวางนิพจน์ของคุณไว้ในวงเล็บคู่เหมือนปกติใน Bash แล้วระบุนิพจน์ในรายการอาร์กิวเมนต์

$ printf '1 + 1 is %d' $((1+1))
1 + 1 is 2

4. จัดรูปแบบเลขฐานสิบหก

หากคุณต้องการจัดรูปแบบเลขฐานสิบหก ให้ใช้ % NS สำหรับตัวพิมพ์เล็กและ % NS สำหรับตัวพิมพ์ใหญ่

$ printf %X 1000
3E8C

หากต้องการพิมพ์วันที่และเวลาปัจจุบัน คุณสามารถรวม printf กับ วันที่ คำสั่งและส่งคำสั่งต่อไปนี้

$ printf '%(%m-%d-%Y %H:%M:%S)T' $(date +%s)
03-26-2021 15:27:57

คุณสามารถดูตัวระบุรูปแบบสำหรับเดือน วัน ปี ชั่วโมง นาที และวินาทีในผลลัพธ์ดังกล่าว

6. จัดรูปแบบสตริงด้วยอักขระ Unicode

ในการพิมพ์อักขระ Unicode ด้วย printf ให้ใช้ ยู หลบหนีสำหรับ Unicode 16 บิตและ ยู สำหรับ Unicode 32 บิต

ตัวอย่างเช่น คุณสามารถพิมพ์ ลิขสิทธิ์ สัญลักษณ์ด้วยคำสั่งต่อไปนี้:

$ printf 'u00A9'
©

7. เพิ่มระยะห่างให้กับผลลัพธ์

คุณสามารถจัดรูปแบบสตริงของคุณด้วยการเว้นวรรคโดยกำหนดจำนวนอักขระที่พิมพ์น้อยที่สุดก่อนตัวระบุคำสั่ง อักขระที่ไม่ได้ใช้จะถูกเติมด้วยช่องว่าง

เช่น พิมพ์ printf '%s:%5d ' 'ค่า 1' 25 'ค่า 2' 120 จะส่งออก:

Value 1: 25
Value 2: 120

NS %5d ตัวระบุรูปแบบในเอาต์พุตแสดงว่าสตริงที่จัดรูปแบบจะมีอักขระอย่างน้อยห้าตัว เนื่องจาก 25 มีตัวเลขเพียงสองหลัก ช่องว่างจะถูกเพิ่มในอักขระที่เหลือ

หากคุณส่งค่าลบเป็นความกว้าง คำสั่งจะถูกปรับให้ชิดซ้ายแทนชิดขวา

$ printf '%-10s: %d ' 'Circles' 25 'Boxes' 120
Circles : 25 Boxes : 120

หากคุณต้องการสร้างตัวแปร width คุณสามารถส่งเครื่องหมายดอกจันแทนตัวเลข และ printf จะใช้ตัวเลขถัดไปที่พบในรายการอาร์กิวเมนต์

$ printf '%*s: %d ' -10 'Circles' 25 -10 'Boxes' 120
Circles : 25 Boxes : 120

ที่เกี่ยวข้อง: ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับ Bash For Loops ใน Linux

เรียนรู้คำสั่ง Linux printf

ด้วยคำสั่ง printf ในแถบยูทิลิตี้การเขียนสคริปต์ Bash ของคุณ คุณก็พร้อมที่จะเริ่มพิมพ์ข้อความที่ซับซ้อนและหลากหลายในเทอร์มินัลของคุณ ขณะที่คุณกำลังพัฒนาสคริปต์ Bash สิ่งสำคัญคือต้องแน่ใจว่าคุณกำลังทำงานในสภาพแวดล้อมที่มีประสิทธิผลมากที่สุดเท่าที่จะเป็นไปได้ สิ่งนี้จะไม่เพียงแต่ปรับปรุงทักษะบรรทัดคำสั่งของคุณ แต่ยังช่วยปรับปรุงเวิร์กโฟลว์ของคุณโดยทั่วไป

แบ่งปัน แบ่งปัน ทวีต อีเมล 10 สุดยอด Linux Distros สำหรับนักพัฒนา

พร้อมที่จะเริ่มพัฒนาระบบปฏิบัติการโอเพ่นซอร์สแล้วหรือยัง? นี่คือ Linux distros ที่ดีที่สุดสำหรับการเขียนโปรแกรม

วิธีการจัดการสายเคเบิลบนโต๊ะ
อ่านต่อไป หัวข้อที่เกี่ยวข้อง
  • ลินุกซ์
  • Linux Bash Shell
  • คำสั่งลินุกซ์
เกี่ยวกับผู้เขียน Jordan Gloor(เผยแพร่แล้ว 51 บทความ)

Jordan เป็นพนักงานเขียนบทที่ MUO ผู้หลงใหลในการทำให้ Linux สามารถเข้าถึงได้และปราศจากความเครียดสำหรับทุกคน เขายังเขียนคำแนะนำเกี่ยวกับความเป็นส่วนตัวและประสิทธิภาพการทำงาน

เพิ่มเติมจาก Jordan Gloor

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก