Thông tin liên hệ
- 036.686.3943
- admin@nguoicodonvn2008.info
Đôi khi khi tương tác với hệ thống Linux, bạn có thể cần nhắc người dùng nhập dữ liệu hoặc đọc dữ liệu từ các file hoặc thậm chí muốn đặt thời gian chờ. Bạn có thể thực hiện các tác vụ này và nhiều tác vụ khác bằng lệnh read và các tùy chọn khác nhau của lệnh này.
Bài viết này sẽ hướng dẫn bạn những điều cơ bản về lệnh read và các tùy chọn của lệnh này thông qua một số ví dụ.
Trong Linux, bạn có thể sử dụng lệnh read để ghi lại dữ liệu đầu vào của người dùng hoặc đọc một dòng từ đầu vào chuẩn (stdin). Lệnh này đọc tổng số byte từ mô tả file đã cho và lưu trữ chúng trong buffer. Sau đó, lệnh trả về số byte đã đọc, số không hoặc lỗi.
Ví dụ, nếu số hoặc số đếm bằng không, lệnh sẽ tham chiếu đến phần cuối của file. Nhưng khi thành công, lệnh sẽ trả về số byte đã đọc. Nếu lệnh read tìm thấy một số lỗi, lệnh sẽ trả về -1.
Trước khi khám phá các tùy chọn lệnh read, trước tiên chúng ta hãy xem cú pháp của lệnh read:
read [options] [name…]
Ở đây, tham số options chỉ định nhiều flag khác nhau được sử dụng để sửa đổi hành vi của lệnh read. Ngoài ra, tham số name chỉ định tên của nhiều biến được sử dụng để lưu trữ dữ liệu đầu vào. Nếu không cung cấp tên, dữ liệu đầu vào sẽ được giữ lại trong biến bash $REPLY.
Lệnh read của Bash có nhiều tùy chọn để kiểm soát dữ liệu đầu vào của người dùng. Một số tùy chọn không cần tham số bổ sung, trong khi một số khác thì cần.
Hãy cùng khám phá một số tùy chọn mà chúng ta có thể sử dụng với lệnh read:
| Tùy chọn | Mô tả |
|---|---|
| -a <array> | Nó lưu trữ dữ liệu đầu vào dưới dạng một mảng thay vì các biến riêng biệt. |
| -s | Chạy âm thầm, nghĩa là dữ liệu đầu vào không được hiển thị trên terminal |
| -e | Cho phép hỗ trợ thư viện readline và đọc dòng input |
| -i <prefix> | Cung cấp giá trị đầu vào ban đầu xuất hiện tại dấu nhắc khi sử dụng readline |
| -p <prompt> | Hiển thị lời nhắc được chỉ định trước khi đọc đầu vào |
| -u <file descriptor> | Đọc từ một mô tả file được chỉ định thay vì đầu vào chuẩn (stdin) |
| -d <delimiter> | Cho phép chỉ định một dấu phân cách dòng đầu vào thay vì ký tự xuống dòng mặc định |
| -t <time> | Đặt thời gian chờ cho đầu vào; nếu đầu vào không được nhận trong thời gian này, lệnh read sẽ trả về lỗi |
| -r | Khi được thiết lập, dấu gạch chéo ngược không được coi là ký tự thoát |
| -n <number> | Chỉ đọc số lượng ký tự được chỉ định |
Nhập lệnh sau để xuất menu trợ giúp lệnh read:
head --help
Cách đơn giản nhất để sử dụng lệnh read là sử dụng lệnh này mà không có bất kỳ đối số hoặc tùy chọn nào. Khi chỉ thực thi lệnh read, lệnh sẽ yêu cầu bạn cung cấp đầu vào mà bạn muốn đọc. Sau khi cung cấp đầu vào, lệnh sẽ thoát và lưu trữ đầu vào đó trong biến mặc định có tên là REPLY.
Hãy lấy ví dụ sau:
read
<user_input>

Bây giờ, sau khi cung cấp đầu vào, hãy hiển thị đầu vào đó bằng lệnh echo:
echo $REPLY

Trong khi đọc giá trị đầu vào, bạn cũng có thể lưu trữ nó trong bất kỳ biến cụ thể nào khác. Ví dụ, để lưu trữ kết quả vào một biến, hãy nhập lệnh read theo sau là tên biến:
read variable1
<user_input>

Bây giờ, để hiển thị kết quả, bạn cần sử dụng lệnh echo với biến lưu trữ giá trị:
echo $variable1

Không có cách trực tiếp nào để đọc nhiều giá trị bằng lệnh read. Tuy nhiên, bạn có thể chia một câu đầu vào thành nhiều từ và lưu trữ chúng trong các biến khác nhau.
Hãy xem xét ví dụ sau:
read variable1 variable2 variable3
<user_input>

Ở đây, bạn lưu trữ từ đầu tiên của câu trong biến đầu tiên, từ thứ hai trong biến thứ hai và tất cả các từ còn lại trong biến cuối cùng được cung cấp.
Hãy trả về đầu ra bằng lệnh sau:
echo <$variabl_namee>

Mặc dù lệnh read chủ yếu dành cho đầu vào của người dùng, bạn cũng có thể sử dụng lệnh này để đọc các dòng từ file. Để thực hiện việc này, chỉ cần sử dụng loop while, lệnh echo và lệnh read theo sau là tên biến cụ thể:
while read line; do
echo "$line"
done < samplefile.txt

Ở đây, loop while đọc từng dòng của "samplefile.txt" và ghi lại trong biến line. Sau khi đọc tất cả các dòng của file, lệnh echo sẽ hiển thị giá trị của dòng đó.
Bạn cũng có thể nắm bắt đầu vào của người dùng theo trình tự lặp lại bằng cách sử dụng lệnh read với loop while. Điều này hữu ích khi bạn muốn thu thập nhiều đầu vào hoặc tiếp tục cho đến khi đáp ứng được một điều kiện cụ thể.
Ví dụ, hãy đọc nhiều đầu vào và cũng hiển thị chúng trên terminal:
while read line; do
echo "Line: $line"
done

Hơn nữa, loop tiếp tục cho đến khi nhận được tín hiệu kết thúc file (EOF), thường là bằng cách nhấn Ctrl + D.
Bạn cũng có thể tạo lời nhắc tương tác sẽ hiển thị trước khi người dùng nhập dữ liệu. Bạn có thể thực hiện việc này bằng cách sử dụng tùy chọn -p cùng với lệnh read.
Hãy hiển thị lời nhắc tùy chỉnh và cũng ghi lại đầu vào:
read -p "Enter your Name: " name

Bạn muốn kiểm soát những gì người dùng có thể nhập? Sử dụng tùy chọn -n với lệnh read để chỉ định độ dài ký tự mong muốn của bạn. Ví dụ, nếu bạn muốn ghi lại 4 ký tự đầu tiên của đầu vào người dùng, hãy sử dụng lệnh bên dưới:
read -n 9 variable

Sau khi thực hiện lệnh trên, bạn chỉ có thể nhập 9 ký tự. Giới hạn đầu vào của người dùng trong khi đọc sẽ loại bỏ nhu cầu sử dụng dấu phân cách và cũng không chia đầu vào thành các từ.
Bạn có thể sử dụng biến Internal Field Separator (IFS) với lệnh read để xác định cách chia đầu vào thành các trường riêng biệt. Theo mặc định, IFS sử dụng các ký tự khoảng trắng (tab, xuống dòng và khoảng trắng) làm dấu phân cách trường. Tuy nhiên, bạn có thể tùy chỉnh IFS để phù hợp với nhu cầu của mình.
Ví dụ, bạn có thể chỉ định giá trị dấu hai chấm (:) làm dấu phân cách:
IFS=':' read name password
<user_input>
echo "Name: $name, Password: $password"

Với biến IFS, bạn có thể nắm bắt nhiều đầu vào dòng từ người dùng và phân tách chúng dựa trên giá trị dấu phân cách.
Bạn cũng có thể cấu hình thời gian chờ cho lệnh read bằng tùy chọn -t. Điều này hữu ích nếu bạn muốn đảm bảo tập lệnh không phụ thuộc vào đầu vào của người dùng trong thời gian dài.
Hãy thiết lập thời gian chờ 10 giây bằng tùy chọn -t:
read -t 10 -p "Enter your name (10 seconds timeout): " name
<user_input>
echo "Hello, $name!"

Nếu người dùng không nhập bất kỳ thông tin gì trong vòng 10 giây, script sẽ tiếp tục thực thi.
Đôi khi, bạn có thể muốn ẩn đầu vào của người dùng, chẳng hạn như khi nhập thông tin nhạy cảm như mật khẩu. Bạn có thể thực hiện điều này bằng cách sử dụng tùy chọn -s của lệnh read:
read -s -p "Enter your password: " password
<user_input>

Sau khi lưu trữ mật khẩu trong biến đã chỉ định, bạn có thể hiển thị mật khẩu đó trong terminal bằng lệnh echo:
echo -e "\nPassword: $password"

Ở đây, flag -e cho phép diễn giải các chuỗi thoát và chuỗi thoát \n thêm một dòng mới trước đầu ra.
Khi bạn đọc xong bài viết này và làm theo các ví dụ, bạn sẽ quen với việc sử dụng lệnh read trong terminal Linux. Tuy nhiên, vẫn còn một số lệnh khác để khám phá. Hãy tiếp tục đọc để tìm hiểu các lệnh cơ bản dành cho người mới bắt đầu.
Nguồn tin: Quantrimang.com:
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn
Karaoke Người Đó Tôi Đây Tình Đâu(Midi)
Chuyển tin nhắn Messenger thành bài hát trong nháy mắt
Cách xây dựng game nhiều người chơi với Claude Opus 5.5
Cách xem thời tiết trong ChatGPT với AccuWeather để lên kế hoạch
Karaoke Lạnh (Midi)
Cách kết nối ElevenLabs AI agent với Exa
Thiết lập cách ChatGPT thông báo cho bạn khi có công việc cần chú ý
TOP phần mềm OCR scan tài liệu có tích hợp AI tốt nhất
6 trang web tạo mật khẩu ngẫu nhiên an toàn đáng tin cậy
TOP nền tảng xây dựng công cụ nội bộ có tích hợp AI
TOP phần mềm AI bảo mật Internet tốt nhất hiện nay
Biến các ý tưởng thành giải thích trực quan, tương tác trong ChatGPT
TOP tiện ích mở rộng AI cho VS Code tốt nhất
Cách tạo website Portfolio miễn phí bằng ChatGPT
6 lựa chọn thay thế Visual Studio Code tốt nhất có tích hợp AI
Tạo form hỏi đáp tương tác trong vài phút và prompt chỉnh sửa
Hướng dẫn sử dụng Google Slides trong Claude
Hướng dẫn sử dụng Wolfram trong ChatGPT giải toán nâng cao
15 prompt AI thú vị cho ngày lễ Halloween
Hoàn thiện một thiết kế thực tế với ChatGPT + Canva
Hướng dẫn cài đặt và sử dụng n8n trên Windows 11
Cách lập trình chuyên nghiệp hơn, dễ dàng hơn với tính năng Tệp trên Grok
Công thức tính diện tích hình Elip
Hướng dẫn ngắt kết nối ứng dụng trên ChatGPT
Hướng dẫn tạo đoạn hội thoại cho topic trên Twee
Bức tranh tổng quan về hỗ trợ khách hàng tích hợp AI
Cách sửa lỗi There Are Currently No Power Options Available Windows
Claude Code thực sự có giá bao nhiêu?
5 tài liệu hay nhất giúp bạn làm chủ Small Language Model (SLM) năm 2026
Hướng dẫn 8 cách mở bàn phím ảo trên Windows 10