echo Hello World | nano - | less
Tôi muốn sửa đổi Hello -> Tạm biệt khi đang trong trình soạn thảo văn bản.
Nó không phải là với nano. Tôi bị mắc kẹt với việc đọc nano stdin nhưng yêu cầu tôi ghi vào một tệp (ghi vào - tạo một tệp có tên -)
echo Hello World | nano - | less
Tôi muốn sửa đổi Hello -> Tạm biệt khi đang trong trình soạn thảo văn bản.
Nó không phải là với nano. Tôi bị mắc kẹt với việc đọc nano stdin nhưng yêu cầu tôi ghi vào một tệp (ghi vào - tạo một tệp có tên -)
Câu trả lời:
Các moreutils gói có một lệnh lớn để làm điều này, được gọi là vipe
. Từ trang người đàn ông:
SYNOPSIS
command1 | vipe | command2
DESCRIPTION
vipe allows you to run your editor in the middle of a unix pipeline and
edit the data that is being piped between programs. Your editor will have
the full data being piped from command1 loaded into it, and when you close
it, that data will be piped into command2.
Theo mặc định, điều này sẽ sử dụng editor
lệnh, thường chỉ là một liên kết tượng trưng đến trình soạn thảo dòng lệnh mặc định. Bạn có thể thay đổi điều này bằng cách thay đổi liên kết (sử dụng update-alternatives
trên các hệ thống dựa trên Debian) hoặc sử dụng EDITOR
biến môi trường. Ví dụ, bạn có thể làm:
echo Hello World | EDITOR=nano vipe | less
Mặt khác, nếu trình soạn thảo văn bản cụ thể không hỗ trợ cho loại điều này, tôi nghĩ rằng bạn bị mắc kẹt với việc tạo thủ công một tệp tạm thời, ghi tệp vào đó, chạy trình chỉnh sửa, đưa tệp vào phần còn lại của đường ống và xóa tập tin tạm thời. Các vipe
lệnh cơ bản sẽ chăm sóc của tất cả điều này. Điều này là tốt, nhưng lệnh hiếm khi có sẵn theo mặc định.
Trình soạn thảo văn bản joe (còn gọi là Trình soạn thảo riêng của Joe ) làm những gì bạn muốn.
Lệnh này echo "hello world" | joe - | less
hoạt động như mong đợi, mặc dù nó cần dấu ngoặc kép vì một số lý do.
Một số lệnh (như gpg) tạo ra đầu ra được hiển thị mà không đi vào đường ống. Điều này làm hỏng màn hình ban đầu bên trong joe, nhưng nhấn ctrl + r - refresh - sẽ dọn sạch mọi thứ.
Nếu tất cả những gì bạn muốn là thay thế "Xin chào" bằng "Tạm biệt" (hoặc bất kỳ thay thế từ nào khác), bạn có thể tránh chỉnh sửa thủ công trong trình chỉnh sửa có lợi cho công cụ tìm kiếm & thay thế tự động. Ví dụ: "sed" có thể thực hiện các thay thế như thế này:
echo Hello World | sed 's/Hello/Goodbye/' | less
Kiểm tra "man sed" để biết thêm chi tiết.