(Theo lời giải thích của grawity, điều đó xargs
chỉ stdin
ra /dev/null
.)
Các giải pháp cho vấn đề này là thêm -o
tham số để xargs
. Từ man xargs
:
-o
Mở lại stdin như /dev/tty
trong tiến trình con trước khi thực hiện lệnh. Điều này rất hữu ích nếu bạn muốn xargs
chạy một ứng dụng tương tác.
Do đó, dòng mã sau sẽ phù hợp với bạn:
tìm thấy . -name "* .txt" | xargs -o vim
GNU xargs hỗ trợ phần mở rộng này kể từ một số bản phát hành năm 2017 (với tên tùy chọn dài --open-tty
).
Đối với các phiên bản cũ hơn hoặc các phiên bản khác của xargs, bạn có thể chuyển vào rõ ràng /dev/tty
để giải quyết vấn đề:
find . -name "*.txt" | xargs bash -c '</dev/tty vim "$@"' ignoreme
(Có ignoreme
ở đó để chiếm $ 0, do đó $ @ là tất cả các đối số từ xargs.)
find
hoặc hoàn toàn không sử dụngxargs
. Mở vim không có đối số, sau đó chạy:args **/*.txt<CR>
để đặt đối số của vim từ bên trong trình chỉnh sửa.