ls -l --color=auto | tee output.log
ไม่มีท่อ / ทีมันมีสี ฉันจะทำให้มันเป็นสีได้อย่างไรในขณะที่ใช้งานtee
(สามารถระบายสีบนหน้าจอได้เท่านั้นฉันไม่สนใจสีในบันทึก)
ls -l --color=auto | tee output.log
ไม่มีท่อ / ทีมันมีสี ฉันจะทำให้มันเป็นสีได้อย่างไรในขณะที่ใช้งานtee
(สามารถระบายสีบนหน้าจอได้เท่านั้นฉันไม่สนใจสีในบันทึก)
คำตอบ:
เพียงแค่ใส่unbuffer
ก่อนคำสั่งใด ๆ เพื่อทำให้มันคิดว่ามันกำลังเขียนไปยังเอาต์พุตเชิงโต้ตอบแม้ว่ามันจะถูกไพพ์ไปยังไฟล์ที่เรียกใช้งานอื่นได้ ls
นี้จะรักษาสีในกรณีของ
ตัวอย่างเช่น
unbuffer ls -l --color=auto | tee output.log
หากคุณยังไม่ได้ติดตั้งไว้บน Ubuntu และดิสทริบิวชัน Debian-ish Linux อื่น ๆ ที่คุณสามารถติดตั้งunbuffer
ได้
sudo apt-get install expect-dev
xcodebuild
- แทนที่จะเป็นเส้นที่ไม่มีสี unbuffer xcodebuild | less -R
ทำงานได้อย่างไม่มีที่ติ
expect-dev
แพ็คเกจ expect
ก็เพียงพอแล้ว
ใช้ตัวเลือก ls --color=always
--color=auto
จะไม่ส่งสีไปป์ไลน์ด้วยเหตุผลที่ชัดเจน
หน้าหลักบอกว่าต่อไปนี้:
ด้วย --color = auto รหัสสีจะแสดงผลก็ต่อเมื่อเอาต์พุตมาตรฐานเชื่อมต่อกับเทอร์มินัล (tty)
ls -l
เป็นเพียงตัวอย่าง ผมมีคำสั่งที่แตกต่างอย่างสิ้นเชิง (Heroku บันทึก) tee
ที่แถบสีเมื่อประปา และฉันต้องการที่จะ "แก้ไข / เปลี่ยนแปลง" ที / ท่อไม่ใช่คำสั่งที่ฉันกำลังดำเนินการ
ls
เท่านั้น ดูคำตอบของฉันที่แก้ไขปัญหาสำหรับทุกโปรแกรมรวมถึงบันทึก heroku
ฉันจะขยายscript
โซลูชันที่ให้ไว้ในความคิดเห็นของคำตอบที่ยอมรับ การใช้script
อาจมีประโยชน์ในกรณีที่คุณไม่สามารถหรือไม่ต้องการติดตั้งแพกเกจคาดหวังที่มีunbuffer
คำสั่ง
พิมพ์ ls
เอาต์พุตไปยัง stdout และไฟล์ด้วยรหัสสี :
script -efq output.log -c "ls -l --color=auto"
โดยที่ ( man script
):
-e, --return Return the exit code of the child process. Uses the same format as bash termination on signal termination exit code is 128+n. -f, --flush Flush output after each write. This is nice for telecooperation: one person does `mkfifo foo; script -f foo', and another can supervise real-time what is being done using `cat foo'. -q, --quiet Be quiet (do not write start and done messages to either standard output or the typescript file).
ดูไฟล์เอาต์พุตด้วยสี:
less -r output.log
-e
เหมือนกับ--return
- ไม่จำเป็นสำหรับทั้งคู่ เป็น-efq
--return --flush --quiet