ฉันต้องการที่จะบันทึกข้อความหลายบรรทัดลงในระบบบันทึกผ่านทาง commabnd
echo -e "foo\nbar" | logger
แต่มันปรากฏเป็น 2 บันทึก
เป็นไปได้หรือไม่ที่จะบันทึกเป็นบันทึกเดียว?
ฉันต้องการที่จะบันทึกข้อความหลายบรรทัดลงในระบบบันทึกผ่านทาง commabnd
echo -e "foo\nbar" | logger
แต่มันปรากฏเป็น 2 บันทึก
เป็นไปได้หรือไม่ที่จะบันทึกเป็นบันทึกเดียว?
คำตอบ:
คนตัดไม้ไม่ได้มีฟังก์ชั่นนี้มันเป็นพื้นเส้นแนว - ทุกบรรทัดเป็นข้อความใหม่
ข้อความบันทึกหลายบรรทัดยังเป็นความเจ็บปวดอย่างแท้จริงในการจัดการกับการใช้สาธารณูปโภคมาตรฐานเช่น grep ฯลฯ ขึ้นอยู่กับเวลาที่มาถึงข้อความอาจแตกได้ทำให้ยากต่อการติดตามข้อมูลที่เกี่ยวข้อง
ทางออกที่ดีกว่าคือการบันทึกข้อความของคุณเป็นข้อความเดียว @Benjamin ขอแนะนำให้คุณใช้ tr หรือใช้ echo -En หากคุณจำเป็นต้องมี \ n เพื่อจุดประสงค์ในการแสดงผลในภายหลังให้ใช้ tr เพื่อเปลี่ยน \ n เป็นอักขระอื่น ๆ ที่ยูทิลิตี้ของคุณจะไม่สร้างเพื่อเขียนบันทึกและเมื่ออ่านใช้ tr เพื่อแปลงกลับเป็น \ n
แน่นอนว่าแทนที่ \ n ด้วยช่องว่างเช่นนี้
echo -e "foo \ nbar" | tr '\ n' '' | คนตัดไม้
อีกทางเลือกหนึ่ง - สมมติว่าคุณต้องการให้บรรทัดคั่นด้วย 'newline' - จะเขียนเป็นไฟล์ temp ก่อนจากนั้นผู้ใช้
logger -t <title> -f <temp-file>
แยกเอาท์พุท ...
ตัวอย่าง:
ip route show |while read line; do logger -t TEST $line; done