Tee
ไม่ไร้ประโยชน์
คุณอาจรู้หรือไม่? ถ้าไม่อ่าน! หรือถ้าคุณรู้ว่ามันทำงานอย่างไร แต่ไม่แน่ใจว่าทำไมมันถึงมีอยู่ให้ข้ามไปจนสุดเพื่อดูว่ามันเข้ากับปรัชญาของ Unix ได้อย่างไร
อะไรคือวัตถุประสงค์ของการtee
?
ที่ง่ายที่สุดจะใช้ข้อมูลในอินพุตมาตรฐานและเขียนลงในเอาต์พุตมาตรฐานและหนึ่งไฟล์ (หรือมากกว่า) มันได้รับการเปรียบกับชิ้นส่วนประปาในวิธีที่มันแยกหนึ่งอินพุตเป็นสองเอาท์พุท (และสองทิศทาง)
ตัวอย่าง
ลองมาตัวอย่างแรกของคุณ:
do_something | tee -a logfile
สิ่งนี้จะเอาท์พุทของdo_something
และผนวกเข้ากับ logfile ในขณะที่ยังแสดงให้ผู้ใช้ ในความเป็นจริงหน้า Wikipedia ที่tee
มีต่อไปนี้เป็นตัวอย่างที่สอง:
ในการดูและผนวกเอาต์พุตจากคำสั่งไปยังไฟล์ที่มีอยู่:
lint program.c | tee -a program.lint
สิ่งนี้แสดงเอาต์พุตมาตรฐานของคำสั่ง lint program.c ที่คอมพิวเตอร์และในขณะเดียวกันก็จะเพิ่มสำเนาของมันไว้ที่ส่วนท้ายของไฟล์ program.lint หากไฟล์ program.lint ไม่มีอยู่ไฟล์นั้นจะถูกสร้างขึ้น
ตัวอย่างถัดไปมีประโยชน์หลายอย่าง: การเพิ่มระดับสิทธิ์ :
วิธีอนุญาตให้มีการเพิ่มระดับสิทธิ์:
cat ~/.ssh/id_rsa.pub | ssh admin@server "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null"
ตัวอย่างนี้แสดงการทีใช้เพื่อข้ามข้อ จำกัด โดยธรรมชาติในsudo
คำสั่ง sudo
ไม่สามารถไพพ์เอาต์พุตมาตรฐานไปยังไฟล์ โดยการทิ้งการสตรีมมาตรฐานลงใน/dev/null
เรายังระงับเอาต์พุตที่มิร์เรอร์ในคอนโซล คำสั่งด้านบนให้การเข้าถึงรูทผู้ใช้ปัจจุบันไปยังเซิร์ฟเวอร์ผ่าน ssh โดยการติดตั้งกุญแจสาธารณะของผู้ใช้ไปยังรายการการอนุญาตคีย์ของเซิร์ฟเวอร์
หรือบางทีคุณต้องการที่จะเอาท์พุทของคำสั่งหนึ่งเขียนมันที่ไหนสักแห่งและใช้มันเป็นอินพุตไปยังคำสั่งอื่น?
คุณยังสามารถใช้คำสั่ง tee เพื่อเก็บเอาต์พุตของคำสั่งไปยังไฟล์และเปลี่ยนทิศทางเอาต์พุตเดียวกันกับอินพุตไปยังคำสั่งอื่น
คำสั่งต่อไปนี้จะสำรองข้อมูลของรายการ crontab และส่งรายการ crontab เป็นอินพุตไปยังคำสั่ง sed ซึ่งจะทำการทดแทน หลังจากการทดแทนมันจะถูกเพิ่มเป็นงาน cron ใหม่
$ crontab -l | tee crontab-backup.txt | sed 's/old/new/' | crontab –
(เครดิตกับตัวอย่างการใช้คำสั่ง Tee )
Tee
ทำงานร่วมกับปรัชญา Unix:
เขียนโปรแกรมที่ทำสิ่งหนึ่งและทำได้ดี เขียนโปรแกรมเพื่อทำงานร่วมกัน เขียนโปรแกรมเพื่อจัดการสตรีมข้อความเนื่องจากเป็นอินเตอร์เฟสสากล
(เครดิตกับพื้นฐานของปรัชญา Unix )
tee
เหมาะกับสิ่งเหล่านี้:
- มันทำสิ่งหนึ่ง: สร้างสำเนาของอินพุตเพิ่มเติม
- ใช้งานได้กับโปรแกรมอื่น ๆ เพราะเป็นกาว (หรือชิ้นส่วนประปา 'T' หากคุณต้องการ) ที่ช่วยให้โปรแกรมอื่นทำงานร่วมกันได้ดังตัวอย่างด้านบน
- มันทำได้โดยการจัดการสตรีมข้อความที่กำหนดในอินพุตมาตรฐาน