ที คำสั่งใน 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 – และ ที บันทึกผลลัพธ์