Score:1

การตั้งชื่อไฟล์โดยใช้เนื้อหาของเอาต์พุตเทอร์มินัล

ธง cn

หัวข้อนี้ ที่นี่ กล่าวถึงวิธีส่งออกเนื้อหาเทอร์มินัลไปยังไฟล์ โดยเฉพาะอย่างยิ่งกับสิ่งนี้:

คำสั่ง |& tee output.txt

คำถาม: เป็นไปได้ไหมที่จะใช้ส่วนหนึ่งของเนื้อหาเอาต์พุตเพื่อตั้งชื่อไฟล์ ตัวอย่างเช่น สมมติว่าเนื้อหาถูกพิมพ์ออกมาทีละบรรทัดดังนี้:

การกระทำ_1_last_time_2021_06_15_21_34_56
การกระทำ_2_last_time_2021_06_15_21_35_23
การกระทำ_3_last_time_2021_06_15_21_43_45
...
การกระทำ_320032_last_time_2021_06_15_23_59_14

เป็นไปได้ไหมที่จะใช้เนื้อหาของบรรทัดสุดท้ายในการตั้งชื่อไฟล์ แทนที่จะเป็น out.txt บนบรรทัดคำสั่ง? ตัวแปรบางอย่างอาจจะ? ที่นี่ บรรทัดสุดท้ายจะถือว่าถูกกำหนดเป็นบรรทัดที่ปรากฏก่อนที่ไฟล์จะปิด (และคำสั่งทำงานเสร็จสิ้น)

Score:5
ธง hr

ไม่ว่าคุณจะแก้ปัญหานี้อย่างไร คุณจะต้องบัฟเฟอร์เอาต์พุตคำสั่งจนกว่าคุณจะสามารถอ่านบรรทัดสุดท้ายได้ เพื่อที่จะรู้ว่าต้องเขียนตรงไหน

วิธีเดียวที่เหมาะสมที่ฉันคิดได้คือใช้ไฟล์ชั่วคราว จากนั้นเปลี่ยนชื่อ:

tmpfile=$(mktemp)
outfile=$(คำสั่ง | tee "$tmpfile" | หาง -n 1)
mv "$tmpfile" "$outfile"

คุณสามารถเปลี่ยน | ถึง |& หากคุณต้องการจับภาพทั้ง stdout และ stderr - แต่โปรดทราบว่าสิ่งนี้ อาจ ส่งผลให้เกิดการตั้งชื่อไฟล์เอาต์พุตหลังจากข้อความแสดงข้อผิดพลาด (แม้ว่าจะมีวิธีหลีกเลี่ยงโดยใช้ตัวอธิบายไฟล์ที่ชาญฉลาด fu)

อาจเป็นไปได้ที่จะใช้โซลูชันอื่นโดยใช้ ฟองน้ำ คำสั่ง (จากแพ็คเกจ เพิ่มเติม) แต่นั่นน่าจะใช้เทคนิคเดียวกันภายใต้ประทุน ในความเป็นจริงหน้าคนกล่าวว่า

   เมื่อเป็นไปได้ ฟองน้ำจะสร้างหรืออัปเดตไฟล์เอาต์พุตทีละอะตอม
   เปลี่ยนชื่อไฟล์ temp ให้เข้าที่

ตัวเลือกอื่นอาจใช้ รายได้ เพื่อกลับบรรทัดเพื่อให้คุณอ่านบรรทัดสุดท้ายก่อน แล้วจึง รายได้ อีกครั้งเพื่อเรียกคืนลำดับเอาต์พุต อย่างไรก็ตามนั่นเกี่ยวข้องกับการบัฟเฟอร์เอาต์พุตทั้งหมด สองครั้ง.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา