Mặc dù là lệnh đơn giản nhưng không phải người dùng nào cũng biết cách sử dụng lệnh Yes. Vì vậy trong bài viết dưới đây Taimienphi.vn sẽ hướng dẫn bạn cách 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 Linux cũng như các hệ điều hành Unix khác như macOS. Mã nguồn phiên bản gốc của lệnh Linux được Ken Thompson phát hành trên System 7 Unix.
2. Sử dụng lệnh Yes
Lệnh yes được sử dụng độc lập 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ẽ lặp đi lặp lại nhiều lần cho đến khi người dùng nhấn Ctrl + C để ngắt lệnh.
Yes
Trong thực tế, lệnh Yes có thể được sử dụng để liên tục tạo các thông báo mà bạn chọn. Chỉ cần nhập Yes + khoảng cách + chuỗi mà bạn muốn sử dụng rồi nhấn Enter. Điều này thường được sử dụng để tạo đầu ra của các chuỗi có Yes và No.
yes yes
yes anything you like
Đầu ra của lệnh Yes có thể thêm vào các chương trình hoặc script.
Giả sử bạn có thể để máy tính chạy quá trình nào đó và đi lấy nước, khi bạn quay trở lại, quá trình đã hoàn tất. Khi bạn vắng mặt, chương trình sẽ hiển thị câu hỏi và chờ bạn phản hồi là Yes hoặc No.
Nếu biết trước tất cả các câu trả lời là Yes hoặc No, bạn có thể sử dụng lệnh Yes để phản hồi các câu hỏi này. Sau đó quá trình sẽ tiếp tục hoàn tất mà không cần sự giám sát và phản hồi của bạn.
3. Sử dụng lệnh Yes với script
Thử xem ví dụ Bash shell script dưới đây. Giả sử đây là script lớn, mất nhiều thời gian để hoàn tất.
Script sẽ đặt câu hỏi và chờ người dùng phản hồi. Luồng logic trong script được quyết định bởi đầu vào từ phía người dùng.
- Yes hay y đại diện cho phản hồi tích cực.
- Bất kỳ đầu vào nào khác được coi là đại diện cho phản hồi tiêu cực.
- Nhấn Enter mà không có văn bản đầu vào.
Để kiểm tra điều này, sao chép script vào một file và lưu dưới dạng long_script.sh. Sử dụng chmod để thực thi file:
chmod +x long_script.sh
Chạy script bằng lệnh dưới đây. Thử nhập "Yes", "y" và các đầu vào khác, sau đó nhấn Enter không có văn bản đầu vào.
./long_script.sh
Để sử dụng yes làm phản hồi cho các câu hỏi trong script, chuyển đầu ra từ yes vào script.
yes | ./long_script.sh
Một số script cứng nhắc hơn yêu cầu và chỉ chấp nhận "yes" làm phản hồi tích cực. Bạn có thể cung cấp "yes" làm tham số như dưới đây:
yes yes | ./long_script.sh
Cần chắc chắn đầu vào mà bạn sẽ đưa vào script hoặc chương trình sẽ trả về kết quả mà bạn mong đợi. Để có thể đưa ra được quyết định, bạn phải biết các câu hỏi và câu trả lời của mình là gì.
Tuy nhiên đôi khi logic trong script, lệnh hoặc chương trình có thể không đúng như mong đợi của bạn. Trong script ví dụ trong bài, câu hỏi có thể là "Do you wish to stop? [y,n]", phản hồi tiêu cực sẽ được tiến hành.
Vì vậy bạn phải làm quen với script, lệnh hoặc chương trình trước khi gán tham số yes để làm phản hồi cho các câu hỏi.
4. Sử dụng yes cùng các lệnh
Lúc đầu yes được sử dụng cùng các lệnh Linux khác. Kể từ đó hầu hết các lệnh Linux có cách chạy riêng mà không cần sự tương tác của con người và yes không còn cần thiết nữa.
Cho ví dụ về trình quản lý gói Ubuntu apt-get. Để cài đặt một ứng dụng mà không cần phải nhấn "y" trong quá trình cài đặt, bạn có thể sử dụng lệnh dưới đây:
yes | sudo apt-get install fortune-mod
Kết quả tương tự cũng được trả về khi chúng ta 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 apt-get không hiển thị câu hỏi Do you want to continue? [Y/n]" như thường lệ nữa. Nó giả sử câu trả lời là "yes".
Trên các bản phân phối Linux khác cũng tương tự, chẳng hạn như trên Fedora bạn có thể sử dụng lệnh cho trình quản lý gói:
yes | yum install fortune-mod
Trình quản lý gói dnf thay thế cho yum và dnf có tùy chọn -y (giả sử là yes):
dnf -y install fortune-mod
Chúng ta có thể áp dụng lệnh tương tự cho cp, fsck và rm. Các lệnh này đều có các tùy chọn -f (force: buộc) hoặc -y (giả sử yes) riêng.
5. Một số thủ thuật khác với yes
Chúng ta có thể sử dụng yes cùng một chuỗi các chữ số được tạo bởi seq để kiểm soát vòng lặp các hành động lặp đi lặp lại.
Lớp này lặp lại các chữ số được tạo trên cửa sổ Terminal, sau đó gọi sleep (chế độ ngủ) trong vòng 1 giây.
Thay vì chỉ lặp đi lặp lại các chữ số trê cửa sổ Terminal, bạn có thể gọi một lệnh hoặc script khác. Lệnh hoặc script này không phải sử dụng các chữ số và chỉ ở đó để khởi động mỗi chu kỳ của vòng lặp.
yes "$(seq 1 20)" | while read digit; do echo digit; sleep 1; done
Đôi khi yes cũng hữu ích để tạo một file kích thước lớn để kiểm tra. Giả sử nếu muốn sử dụng lệnh zip hoặc nếu muốn tạo file kích thước lớn để kiểm tra tải lên bằng FTP.
Tất cả những gì bạn cần làm là cung cấp một chuỗi văn bản để làm việc và chuyển hướng đầu ra thành 1 file. Nếu không có lỗi xảy ra, các file này sẽ được tạo ra nhanh chóng. Nhấn Ctrl + C trong vòng vài giây để ngăn quá trình dừng lại.
yes long line of meaningless text for file padding > test.txt
ls -lh test.txt
wc test.txt
Các file được tạo ra trong ví dụ này mất khoảng 5 giây. ls báo cáo kích thước file là 557Mb, wc thông báo 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 chuỗi lệnh. Nói với nó có bao nhiêu dòng lệnh được bao gồm trong file, -50 nghĩa là chỉ cho phép 50 dòng vào file test.txt.
yes long line of meaningless text for file padding | head -50 > test.txt
Ngay sau khi đủ 50 dòng trong file test.txt, quá trình sẽ dừng lại, và bạn không cần nhấn Ctrl + C như ở trên nữa.
wc báo cáo có chính xác 50 dòng trong file, 400 từ và file có kích thước 2350 byte.
https://thuthuat.taimienphi.vn/cach-su-dung-lenh-yes-tren-linux-47721n.aspx
Bài viết trên đây Taimienphi.vn vừa hướng dẫn bạn cách sử dụng lệnh Yes trên Linux. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết đã có trên Taimienphi.vn để tìm hiểu cách sao lưu các cài đặt Linux vào ổ USB như thế nào nhé.
Những tin mới hơn
Những tin cũ hơn