Có một yes
lệnh trong unix / linux về cơ bản in vô hạn y
đến stdout
. Điểm của nó là gì, và nó hữu ích như thế nào?
Có một yes
lệnh trong unix / linux về cơ bản in vô hạn y
đến stdout
. Điểm của nó là gì, và nó hữu ích như thế nào?
Câu trả lời:
yes có thể được sử dụng để gửi phản hồi khẳng định (hoặc phủ định; ví dụ yes n) cho bất kỳ lệnh nào có thể yêu cầu một lệnh khác, do đó khiến lệnh chạy không tương tác.
Lệnh yes kết hợp với lệnh head có thể được sử dụng để tạo các tệp khối lượng lớn cho phương tiện thử nghiệm.
Nó cũng có thể được sử dụng để kiểm tra hệ thống xử lý tải cao tốt như thế nào, vì sử dụng có kết quả sử dụng bộ xử lý 100%, đối với các hệ thống có một bộ xử lý (đối với hệ thống đa bộ xử lý, phải chạy một quy trình cho mỗi bộ xử lý). Điều này, ví dụ, có thể hữu ích cho việc điều tra xem hệ thống làm mát của hệ thống có hiệu quả hay không khi bộ xử lý hoạt động ở mức 100%.
Vào năm 2006, lệnh yes đã nhận được sự công khai vì là một phương tiện để kiểm tra xem MacBook của người dùng có bị ảnh hưởng bởi Hội chứng Tắt máy gián đoạn hay không. Bằng cách chạy lệnh yes hai lần thông qua Terminal trong Mac OS X, người dùng có thể tối đa hóa CPU của máy tính của họ và do đó xem lỗi có liên quan đến nhiệt không
qua wikipedia: http://en.wikipedia.org/wiki/Yes_(Unix)
yes `yes yes`
Đây có thể là một ý kiến gây tranh cãi, nhưng theo quan điểm của tôi, nó là một sửa chữa xấu cho giao diện người dùng xấu trong các công cụ dòng lệnh .
Một số công cụ dòng lệnh đặt câu hỏi cho người dùng bằng lời nhắc và không có tùy chọn để chạy không tương tác; ví dụ tưởng tượng một cái gì đó như
$ frobnicate *
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
...
Vì câu trả lời cho câu hỏi được lấy từ đầu vào tiêu chuẩn, một cách khắc phục nhanh cho vấn đề này là có một ứng dụng xuất chuỗi y\n
liên tục, đó chính xác là những gì yes
. Các ống Unix có thể được sử dụng để gửi đầu ra này như một đầu vào cho một lệnh đã cho.
$ yes | frobnicate
Một trong những vấn đề với phương pháp này là yes
không có khả năng kiểm tra câu hỏi mà nó đang trả lời:
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
format device /dev/sda1? (y/n) y
frobnicate file c.txt? (y/n) y
Một giải pháp tốt hơn, khi có sẵn, là một tùy chọn cụ thể để chạy không tương tác, chẳng hạn như rm -f
hoặc apt-get -y
. Điều này cho phép mã hóa hành vi hợp lý hơn trong ứng dụng.
Chỉ cần sử dụng một cách khác cho nó: thích xóa sạch một đĩa cứng có mẫu khác với chỉ số không (như: dd if = / dev / zero of = / dev / sdd bs = 1M) và sử dụng 'yes' cho nó:
yes UUUUUUUUUUUUU > /dev/sdd
Một đồng nghiệp đã sử dụng điều này theo một cách mới lạ để nhập mật khẩu
yes password | passwd
passwd
sẽ yêu cầu mật khẩu cũ trước, nếu người dùng không phải là root hoặc superuser và sẽ không tiếp tục trừ khi nhập đúng mật khẩu. Vì vậy, người dùng đã root hoặc password
là mật khẩu cũ và không có gì thay đổi.
ps
hoặc top
vào đúng thời điểm).