Mặc dù đơn giản, nhưng không phải tất cả người dùng đều biết cách sử dụng lệnh Yes. Vì vậy, trong bài viết này, chúng tôi sẽ hướng dẫn cách sử dụng lệnh Yes trên Linux.
1. Sử dụng lệnh Yes trên Linux
Như đã đề cập ở trên, lệnh Yes là một trong những lệnh đơn giản nhất trên hệ điều hành Linux cũng như các hệ điều hành Unix khác như macOS. Mã nguồn gốc của lệnh Linux được Ken Thompson phát triển trên System 7 Unix.
2. Sử dụng lệnh Yes
Lệnh yes có thể được sử dụng mà không cần bất kỳ tham số dòng lệnh nào. Người dùng chỉ cần nhập 'y' và nhấn Enter, lệnh sẽ tiếp tục lặp lại cho đến khi người dùng nhấn Ctrl + C để dừng lại.
Yes
Trong thực tế, lệnh Yes có thể được sử dụng để tự động tạo ra các thông báo mà bạn mong muốn. Chỉ cần nhập Yes + khoảng trắng + chuỗi bạn muốn sử dụng sau đó nhấn Enter. Thao tác này thường được sử dụng để tạo ra chuỗi kết quả có Yes và No.
yes yes
yes bất cứ điều gì bạn thích
Kết quả từ lệnh Yes có thể được đưa vào các chương trình hoặc script.
Hãy tưởng tượng bạn đang chạy một quá trình trên máy tính và bạn cần rời khỏi trong một thời gian ngắn. Khi quay lại, bạn mong đợi quá trình đã hoàn tất. Khi bạn không có mặt, chương trình có thể hiển thị các câu hỏi và chờ đợi câu trả lời từ bạn.
Nếu bạn biết trước rằng tất cả các câu trả lời đều là Yes hoặc No, bạn có thể sử dụng lệnh Yes để tự động trả lời các câu hỏi đó. Quá trình sẽ tiếp tục mà không cần sự can thiệp hoặc phản hồi từ bạn.
3. Sử dụng lệnh Yes trong script
Dưới đây là một ví dụ về Bash shell script. Hãy tưởng tượng rằng đây là một script lớn, mất nhiều thời gian để thực thi.
Kịch bản sẽ đặt ra câu hỏi và đợi phản hồi từ người dùng. Luồng logic của kịch bản sẽ được xác định bởi đầu vào từ phía người dùng.
- Yes hoặc y đại diện cho phản hồi tích cực.
- Bất kỳ đầu vào nào khác sẽ được coi là phản hồi tiêu cực.
- Nhấn Enter mà không có văn bản đầu vào nào.
Để kiểm tra điều này, sao chép kịch bản vào một tệp và lưu dưới dạng long_script.sh. Sử dụng lệnh chmod để cấp quyền thực thi cho tệp:
chmod +x long_script.sh
Chạy kịch bản bằng lệnh sau. Thử nhập 'Yes', 'y' và các đầu vào khác, sau đó nhấn Enter mà không có văn bản đầu vào:
./long_script.sh
Để sử dụng yes làm câu trả lời cho các câu hỏi trong kịch bản, đưa đầu ra từ lệnh yes vào kịch bản.
yes | ./long_script.sh
Một số kịch bản cứng nhắc hơn yêu cầu và chỉ chấp nhận 'yes' làm câu trả lời tích cực. Bạn có thể cung cấp 'yes' như tham số như sau:
yes yes | ./long_script.sh
Để đảm bảo đầu vào mà bạn cung cấp cho script hoặc chương trình sẽ cho ra kết quả mong muốn, bạn cần hiểu rõ các câu hỏi và câu trả lời của mình.
Tuy nhiên, đôi khi logic trong script, lệnh hoặc chương trình có thể không hoạt động đúng như mong đợi. Ví dụ, trong một script, câu hỏi có thể là 'Bạn có muốn dừng lại không? [y, n]', và câu trả lời tiêu cực sẽ được xử lý.
Do đó, bạn cần trở nên quen thuộc với script, lệnh hoặc chương trình trước khi sử dụng tham số yes để đáp ứng các câu hỏi.
4. Sử dụng yes với các lệnh
Ban đầu, lệnh yes thường được sử dụng kèm với các lệnh Linux khác. Tuy nhiên, sau này, hầu hết các lệnh Linux đã được cải tiến để chạy mà không cần sự tương tác của người dùng, và do đó lệnh yes không còn cần thiết nữa.
Ví dụ, khi sử dụng trình quản lý gói apt-get trên Ubuntu. Để cài đặt một ứng dụng mà không cần phải xác nhận bằng cách nhấn 'y' trong quá trình cài đặt, bạn có thể sử dụng lệnh sau:
yes | sudo apt-get install fortune-mod
Kết quả tương tự cũng được đạt được khi sử dụng tùy chọn -y (giả sử là yes) trong apt-get:
sudo apt-get -y install fortune-mod
Như bạn có thể thấy, khi sử dụng apt-get, không còn xuất hiện câu hỏi 'Do you want to continue? [Y/n]' như trước. Hệ thống giả định câu trả lời là 'yes'.
Tương tự, trên các bản phân phối Linux khác như Fedora, bạn cũng có thể sử dụng lệnh dưới đây để cài đặt gói:
yes | yum install fortune-mod
Trong hệ thống quản lý gói dnf, thay vì yum, bạn có thể sử dụng tùy chọn -y để tự động trả lời 'yes':
dnf -y install fortune-mod
Tương tự, bạn cũng có thể áp dụng tùy chọn -y cho các lệnh khác như cp, fsck và rm. Những lệnh này thường có các tùy chọn -f (force: buộc) hoặc -y (giả sử yes) để tự động chấp nhận.
5. Một số mẹo khác với yes
Có thể dùng yes kết hợp với chuỗi số tạo ra bởi seq để điều khiển vòng lặp các hành động lặp lại.
Vòng lặp này sẽ in ra các số từ chuỗi trên cửa sổ Terminal, sau đó sử dụng lệnh sleep để ngủ trong 1 giây.
Thay vì chỉ in ra các số trên cửa sổ Terminal, bạn có thể sử dụng một lệnh hoặc script khác để thực thi. Lệnh hoặc script này không cần dùng đến các số và chỉ đóng vai trò khởi đầu cho mỗi chu kỳ lặp.
yes '$(seq 1 20)' | while read digit; do echo digit; sleep 1; done
Có lúc yes cũng hữu ích để tạo một file có kích thước lớn để kiểm tra. Giả sử bạn muốn sử dụng lệnh zip hoặc tạo file lớn để kiểm tra việc tải lên qua FTP.
Bạn chỉ cần cung cấp một chuỗi văn bản để làm việc và chuyển hướng đầu ra thành một file. Nếu không có lỗi xảy ra, các file này sẽ được tạo nhanh chóng. Nhấn Ctrl + C trong vòng vài giây để dừng quá trình.
yes dòng văn bản không nghĩa để làm đệm cho file > test.txt
ls -lh test.txt
đếm từ trong test.txt
Trong ví dụ này, việc tạo các file mất khoảng 5 giây. Lệnh ls báo cáo kích thước file là 557Mb, trong khi lệnh wc cho biết có khoảng 12.4 triệu dòng trong file đó.
Nếu muốn, bạn có thể giới hạn kích thước của file bằng cách thêm head vào câu lệnh. Bạn chỉ cần cho biết bao nhiêu dòng muốn bao gồm trong file, -50 có nghĩa là chỉ có 50 dòng được thêm vào file test.txt.
yes dòng văn bản không nghĩa để đệm cho file | head -50 > test.txt
Sau khi file test.txt đủ 50 dòng, quá trình sẽ tự động dừng lại mà không cần bạn phải nhấn Ctrl + C nữa.
Lệnh wc thông báo rằng có chính xác 50 dòng trong file, bao gồm 400 từ và kích thước của file là 2350 byte.
Trong bài viết này, Mytour đã hướng dẫn cách sử dụng lệnh Yes trên Linux. Bạn cũng có thể tham khảo các bài viết khác trên Mytour để biết cách sao lưu các cài đặt Linux vào ổ USB.
