(ต่อจากคำอธิบายของ 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>เพื่อตั้งค่าอาร์กิวเมนต์ของกลุ่มจากภายในเครื่องมือแก้ไข