มีทางเลือก cat ที่รองรับเอาต์พุตที่ไม่มีบัฟเฟอร์หรือไม่?


3

ฉันกำลังมองหาโปรแกรมที่จะคัดลอก stdin ไปยัง stdout ขณะที่แสดงตัวควบคุม (เช่น cat -v ) และไม่ต้องรอ EOF (อินพุตมาจาก a tail -f ) ฉันมี GNU | Linux; cat ที่ติดตั้งจะไม่สนใจ -u ธง.

คำตอบ:


3

GNU cat ละเว้น -u เพราะมันเป็นผลลัพธ์ ไม่อับชื้นเสมอไป . ดังนั้นเมื่อคุณขอผลลัพธ์ที่ไม่มีข้อผิดพลาดด้วย -uคุณจะได้รับมัน (แต่คุณจะได้รับมันด้วยแม้ว่าคุณจะไม่ขอมันก็ตาม)

GNU tail มีพฤติกรรมที่ไม่เปลี่ยนแปลงเสมอ

เพื่อพิสูจน์สิ่งนี้ในเปลือกหนึ่งฉันได้:

while :; do echo -ne "hello\t"; sleep 1;done > testtail

ซึ่งผนวกคำว่า 'hello' ตามด้วยแท็บทุกวินาที (โดยไม่มีการขึ้นบรรทัดใหม่)

ในเปลือกอื่นฉันได้ ( cat -T เหมือนกับ cat -v - มันแสดงแท็บเป็น ^ I):

tail -f testtail | cat -T

ซึ่งให้ฉัน:

hello^Ihello^Ihello^Ihello^I ...

อัพเดททุกวินาที


3

BSD cat 's -u ตัวเลือกปิดการใช้งานบัฟเฟอร์ออก จาก man cat:

-u      Disable output buffering.

ตามหน้า man ของเครื่องนี้ -u จะถูกละเว้น
Blacklight Shining

@BlacklightShining โอกาสที่คุณไม่ได้ใช้ BSD cat
Daniel Beck

ไม่มันเป็น GNU cat (หรือเวอร์ชั่นใดก็ตามที่เป็นมาตรฐานบน Ubuntu) ฉันเดาว่าฉันควรจะเจาะจงมากขึ้น ...
Blacklight Shining
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.