tr a A </ etc / hosts | sắp xếp -r | pr -d> / etc / hosts


9

Trong dòng này:

tr a A < /etc/hosts | sort -r |pr -d > /etc/hosts 

kết quả mong đợi là gì? Tôi biết chữ thường 'a' sẽ đổi thành chữ hoa 'A' nhưng tiếp theo là gì? Tập tin gốc sẽ bị ghi đè vì chuyển hướng đến cùng tên tập tin?


Bạn sẽ gặp bash: /etc/hosts: Permission deniedlỗi (giả sử vỏ của bạn bị lỗi), trừ khi bạn đang chạy cái này như root. /etc/hoststhường chỉ có thể ghi bằng root. Nếu bạn đang chạy cái này như root(mà bạn thực sự không nên), bạn sẽ thấy trống rỗng /etc/hostsnhư Michael Homer giải thích.
thân

Câu trả lời:


17

Kết quả mong đợi là một /etc/hoststập tin trống .

Chuyển hướng > /etc/hostsxảy ra và cắt ngắn tệp trước khi chương trình bắt đầu chạytrbắt đầu đọc từ tệp.

Để ghi đầu ra vào /etc/hosts, bạn có thể làm việc với một bản sao của tệp (hoặc di chuyển tệp đầu ra của bạn vào vị trí sau đó) hoặc sử dụng spongelệnh từ moreutils , sẽ tiếp nhận đầu vào tiêu chuẩn và ghi vào tệp:

tr a A < /etc/hosts | sort -r | pr -d | sponge /etc/hosts

Trong trường hợp đó, mỗi "a" trong /etc/hostssẽ được thay thế bằng "A", tất cả các dòng sẽ được sắp xếp ngược lại theo ngôn ngữ của bạn , một dòng trống sẽ được chèn vào giữa mỗi dòng và kết quả sẽ được đưa vào /etc/hosts.


Bạn cũng có thể thấy hữu ích:


1
Cảm ơn bạn rất nhiều vì đã làm rõ những gì tôi nên mong đợi với cách viết và cách viết để đạt được kết quả mong đợi.
tdharrison

moreutils là một bộ công cụ thực sự tuyệt vời
Robert Riedl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.