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?
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?
Câu trả lời:
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ạy và trbắ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:
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.