Điểm của lệnh vâng có phải là gì?


39

Có một yeslệ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?


Một vài khả năng bổ sung ở đây .

1
có thể trùng lặp điểm của lệnh `yes` là gì? ... (Đánh dấu cái này là trùng lặp vì câu hỏi mới hơn được hỏi tốt hơn và được trả lời tốt hơn).
Aditya


Câu trả lời:


41

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)


9
Để có thêm sát thương, hãy thửyes `yes yes`
sendmoreinfo

3
@sendmoreinfo Ác
Tobias Kienzler

ohh, đó là một bài kiểm tra căng thẳng tốt đẹp. chỉ cần thử nó, sau đó chạy đến đồng nghiệp của tôi yêu cầu một vm xD mới
Toastgeraet

17

Đâ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\nliê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à yeskhô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 -fhoặ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.


1
Tôi đọc tất cả các câu trả lời khác. Tôi đồng ý với bạn hoàn toàn wrt sửa chữa xấu xí ... mặc dù nó không có một sử dụng hợp lệ để thử nghiệm phản ứng của máy tính để tải cpu cao.
tự đại diện

6
Tất nhiên, bạn có thể sử dụng phần mềm độc quyền "Microsoft Windows" để kiểm tra phản ứng của máy tính với tải cpu cao, nhưng "có" là nguồn mở.
tự đại diện

1
Đây là một trong những cách khắc phục xấu xí đẹp nhất
Jezzamon

4

Tôi thích sử dụng yeskhi tôi giải nén nhiều tệp .zip mà tất cả đều chứa cùng một tệp có cùng tên và tôi được hỏi phải làm gì trong mỗi trường hợp (ví dụ: thỏa thuận cấp phép).

yes | for z in *.zip; do unzip "$z"; done 

2

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


1

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

passwdsẽ 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 passwordlà mật khẩu cũ và không có gì thay đổi.
Michael Konietzka

@MichaelKonietzka thực sự. Nhưng với các điều kiện bạn đã đề cập, đây vẫn là trường hợp sử dụng hữu ích.
ếchstarr78

3
Ngoại trừ điều này sẽ tồn tại trong lịch sử trong bản rõ. Crazeyyy.
Gleno

3
@Gleno trong bash, bạn có thể đặt trước nó một khoảng trắng để ngăn không cho nó được ghi lại (như trong stackoverflow.com/q/640403/118153 )
Iiridayn

2
Ngoài ra, điều này làm rò rỉ mật khẩu cho tất cả người dùng cục bộ trong danh sách quy trình ( pshoặc topvào đúng thời điểm).
Federico Poloni
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.