(ต่อจากคำอธิบายของ grawity xargs
ชี้stdin
ไปที่/dev/null
)
วิธีการแก้ปัญหานี้คือการเพิ่มพารามิเตอร์-o
xargs
จากman xargs
:
-o
เปิด stdin อีกครั้งเช่นเดียวกับ/dev/tty
ในกระบวนการลูกก่อนดำเนินการคำสั่ง สิ่งนี้มีประโยชน์หากคุณต้องการxargs
เรียกใช้แอปพลิเคชันแบบโต้ตอบ
ดังนั้นบรรทัดของรหัสต่อไปนี้จะทำงานให้คุณ:
หา -name "* .txt" | xargs -o vim
GNU xargs สนับสนุนส่วนขยายนี้ตั้งแต่มีการเปิดตัวบางส่วนในปี 2560 (ด้วยชื่อตัวเลือกแบบยาว--open-tty
)
สำหรับรุ่นเก่าหรือรุ่นอื่น ๆ คุณสามารถส่ง/dev/tty
ต่อเพื่อแก้ไขปัญหาได้อย่างชัดเจน:
find . -name "*.txt" | xargs bash -c '</dev/tty vim "$@"' ignoreme
(ที่ignoreme
นั่นจะใช้เวลาถึง $ 0 ดังนั้น $ @ เป็นอาร์กิวเมนต์ทั้งหมดจาก xargs.)
find
หรือxargs
เลย เปิดเป็นกลุ่มโดยไม่มีอาร์กิวเมนต์จากนั้นเรียกใช้:args **/*.txt<CR>
เพื่อตั้งค่าอาร์กิวเมนต์ของกลุ่มจากภายในเครื่องมือแก้ไข