Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

tee Command ใน Linux – Split Shell Output [ตัวอย่าง]

ที คำสั่งใน Linux Shell/บรรทัดคำสั่งแยกเอาต์พุตของแอปพลิเคชัน – ส่งเอาต์พุตไปยังทั้งไฟล์ และ STDOUT (คอนโซลหรือแอปพลิเคชันอื่น) วิธีใช้งาน

ที คำสั่งตั้งชื่อตาม T-splitter ที่ใช้ในระบบประปา ซึ่งเป็นท่อที่เปลี่ยนเส้นทางน้ำจากแหล่งเดียวในสองทิศทาง

รูปแบบคำสั่งที

ที เป็นคำสั่งที่มีจุดประสงค์และรูปแบบที่เรียบง่าย:

tee OPTIONS FILE

โปรดทราบว่า:

  • ตัวเลือก เป็นรายการตัวเลือกจากตารางด้านล่าง
  • ไฟล์ เป็นเส้นทางไปยังไฟล์ที่คุณต้องการบันทึกผลลัพธ์
  • อินพุตต้องถูกไพพ์หรือเปลี่ยนเส้นทางไปที่ที – มิฉะนั้น จะใช้งานไม่ได้
    • ทำได้โดยเปลี่ยนเส้นทางอินพุต/เอาต์พุตมาตรฐาน ดูตัวอย่างด้านล่าง
  • ตี๋ จะส่งออกข้อมูลที่ให้ไว้ทั้งไปยัง FILE ระบุเช่นเดียวกับ STDOUT (เอาต์พุตมาตรฐาน)
    • โดยค่าเริ่มต้น สิ่งนี้จะถูกส่งออกไปยังคอนโซล แต่สามารถเปลี่ยนเส้นทางไปยังแอปพลิเคชันอื่นได้

ตัวเลือก

ต่อไปนี้คือตัวเลือกที่ใช้บ่อยที่สุดสำหรับเสื้อยืด คำสั่ง:

-a, –append ผนวกกับไฟล์ที่กำหนด ห้ามเขียนทับ
-i, –ignore-interrupts ละเว้นสัญญาณขัดจังหวะ

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

man tee

ตี๋ ตัวอย่างคำสั่ง

นี่คือตัวอย่างง่ายๆ ของการที สามารถใช้ได้

ตัวอย่างทั้งหมดเหล่านี้ใช้ echo คำสั่งซึ่งเพียงแค่ส่งออกข้อความที่ให้มา

ดูและบันทึกผลลัพธ์จากคำสั่งไปยังไฟล์ใหม่

ผลลัพธ์ของ echo คำสั่งจะถูกส่งไปยัง tee ซึ่งจะบันทึกลงในไฟล์และส่งออกไปยังคอนโซล:

echo "hello!" | tee hello.txt

หากเป็นไฟล์ hello.txt ที่มีอยู่ก็จะถูกเขียนทับ

ดูและบันทึกผลลัพธ์จากคำสั่งไปยังไฟล์ที่มีอยู่

ตัวอย่างนี้ทำเช่นเดียวกันกับด้านบน แต่จะต่อท้ายไฟล์ที่มีอยู่แทนที่จะเขียนทับ:

echo "hello again!" | tee -a hello.txt

บันทึกหรือผนวกเอาต์พุตไปยังหลายไฟล์

สามารถระบุไฟล์ได้หลายไฟล์ โดยคั่นด้วยช่องว่าง:

echo "hello several files!" | tee hello1.txt hello2.txt hello3.txt

เปลี่ยนเส้นทาง/ไปป์ ที ผลลัพธ์

เอาต์พุตมาตรฐานของ ที สามารถวางท่อและเปลี่ยนเส้นทางได้ ตัวอย่างด้านล่างจะบันทึกผลลัพธ์ของ echo ไปที่ hello.txt ที่ ผลลัพธ์จะถูกส่งต่อไปยัง grep คำสั่งแทนที่จะส่งออกไปยังคอนโซล:

echo "hello!" | tee hello.txt | grep hello

ตัวอย่างเช่น คำสั่ง grep (ซึ่งใช้สำหรับค้นหาการป้อนข้อความ) เพียงแค่ค้นหาผลลัพธ์จากทีสำหรับคำว่า "hello"

ละเว้นการขัดจังหวะ

การละเว้นการขัดจังหวะ (เช่น การกด CTRL + C เพื่อออกจากคำสั่ง) อาจส่งผลให้เอาต์พุตสะอาดขึ้นจาก ที :

echo "hello!" | tee -i hello.txt

การใช้ ที ด้วย sudo

sudo คำสั่งช่วยให้คุณสามารถรันคำสั่งในฐานะผู้ใช้ root โดยไม่ต้องเข้าสู่ระบบในฐานะ root และมักใช้

ในตัวอย่างต่อไปนี้ – sudo ไม่ ไม่ อนุญาตให้คุณเปลี่ยนเส้นทางผลลัพธ์ของคำสั่งเป็น sudo คำสั่งเองไม่ได้ทำการเปลี่ยนเส้นทางตามที่ปรากฏก่อนสัญลักษณ์เปลี่ยนเส้นทาง (> ):

sudo echo "hello!" > /root/hello.txt

…การดำเนินการนี้จะล้มเหลวโดยมีข้อผิดพลาดในการอนุญาตเนื่องจาก /root ไดเร็กทอรีต้องใช้สิทธิ์ของรูท แต่ sudo คำสั่งใช้สิทธิ์เหล่านี้กับ echo . เท่านั้น คำสั่ง – ไม่ใช่การเปลี่ยนเส้นทางที่ตามมาภายหลัง

เคล็ดลับในการแก้ปัญหานี้คือการใช้ที คำสั่ง:

echo "hello!" | sudo tee /root/hello.txt

สิ่งนี้จะได้ผลเพราะผลลัพธ์ของ echo คำสั่งถูกส่งไปยัง ที ซึ่ง คือ ดำเนินการด้วยสิทธิ์ของผู้ดูแลระบบผ่าน sudo – และ ที บันทึกผลลัพธ์