NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
20/08/2024
Lượt xem

Tìm hiểu về lệnh read trong Linux và 8 ví dụ cụ thể về cách sử dụng

20/08/2024
18 phút đọc
Lượt xem

Đánh giá

Lệnh read trong linux là một công cụ giúp bạn đọc dữ liệu nhập vào với terminal Linux. Hãy cùng Vietnix khám phá cách thức hoạt động, các tùy chọn linh hoạt, và những ví dụ phổ biến giúp bạn tận dụng tối đa sức mạnh của lệnh read.

Lệnh read trong Linux là gì?

Lệnh read trong Linux là một lệnh tích hợp sẵn trong shell Bash (và một số shell khác như Zsh, Ksh) trên hệ điều hành Linux. Chức năng chính của lệnh read là đọc dữ liệu nhập từ người dùng thông qua bàn phím và lưu trữ dữ liệu đó vào một hoặc nhiều biến.

Lệnh read trong Linux là một lệnh tích hợp sẵn trong shell Bash
Lệnh read trong Linux là một lệnh tích hợp sẵn trong shell Bash

Cú pháp: 

read [-options] [name...]

Lưu ý: Các tùy chọn thay đổi cách hoạt động của lệnh read. Gồm -p, -t và -a (lưu vào mảng), “name” là tên của biến (variable) dùng để lưu trữ dữ liệu do người dùng nhập vào. Nếu có nhiều “name”, mỗi từ trong dữ liệu nhập vào sẽ được lưu vào một biến tương ứng.

Mọi người cũng xem:

7 tùy chọn phổ biến của lệnh read trong Linux

Để xem toàn bộ hướng dẫn chi tiết trong lệnh read, bạn có thể gõ lệnh sau:

man read
Tùy chọnMô tả
-p (prompt)Hiển thị một đoạn gợi ý trước khi chờ bạn nhập dữ liệu.
-rNgăn chặn việc dấu gạch chéo ngược (\) được hiểu là ký tự đặc biệt (ví dụ: \n không còn là ký tự xuống dòng).
-a (array)Đọc dữ liệu nhập vào dưới dạng mảng.
-eCho phép bạn sử dụng các phím mũi tên, Tab, và các phím chức năng khác để chỉnh sửa dòng lệnh đã nhập (tương tự như khi dùng Bash).
-n (count)Đọc một số lượng ký tự nhất định mà bạn chỉ định. Sau khi đủ số lượng ký tự, lệnh sẽ kết thúc mà không cần bạn nhấn Enter.
-sKhông hiển thị ký tự khi bạn nhập (thường dùng để nhập mật khẩu).
-t (timeout)Đặt thời gian chờ tối đa (tính bằng giây). Nếu bạn không nhập gì trong khoảng thời gian này, lệnh sẽ kết thúc.

Hướng dẫn cách sử dụng lệnh read trong Linux

Dưới đây là hướng dẫn gồm 4 bước để áp dụng và kiểm tra lệnh read:

Bước 1: Mở terminal

Bước 2: Gõ lệnh sau và nhấn enter

read

Bước 3: Khi lời nhắc xuất hiện, nhập một câu và nhấn enter

Output câu lệnh
Output câu lệnh

Bước 4: Sử dụng lệnh echo trong Linux để hiển thị nội dung bạn vừa nhập:

echo $REPLY

Tại đây, biến REPLY lưu trữ dữ liệu đầu vào của người dùng trong lệnh đọc.

Dữ liệu đầu vào đã được lưu trữ
Dữ liệu đầu vào đã được lưu trữ

Ví dụ 1: Đọc input từ người dùng bằng lệnh read trong Linux

Để nhận thông tin nhập vào từ người dùng, ta sử dụng lệnh read theo sau là tên biến và dùng tùy chọn -p để hiển thị một thông báo yêu cầu nhập liệu. Thông tin nhập vào có thể được lưu trữ trong một hoặc nhiều biến tùy thuộc vào độ dài dữ liệu. Dưới đây là 2 trường hợp:

Trường hợp 1: Lưu thông tin vào một biến duy nhất

Nếu chỉ muốn lưu vào một biến, bạn chỉ cần ghi tên biến đó sau lệnh read (ví dụ: read name sẽ lưu thông tin vào biến name). Sau đó, bạn chạy lệnh dưới đây trên terminal để đọc thông tin của người dùng và lưu trữ vào một biến:

read -p 'Enter your name: ' name

Bây giờ, kiểm tra giá trị được lưu trữ trong biến name bằng lệnh echo:

echo $name

Output: Ở đây, lệnh yêu cầu người dùng nhập tên và lưu trữ input vào biến name được chỉ định.

Yêu cầu người dùng nhập tên và lưu trữ input vào biến
Yêu cầu người dùng nhập tên và lưu trữ input vào biến

Trường hợp 2: Lưu Trữ Input của người dùng vào nhiều biến

Nếu muốn lưu thông tin vào nhiều biến, bạn ghi tên các biến cách nhau bởi dấu cách sau lệnh read (ví dụ: read fName lName sẽ lưu tên và họ của người dùng lần lượt vào biến fName và lName). Ở bước tiếp theo, bạn chạy lệnh dưới đây trên terminal để đọc thông tin của người dùng và lưu trữ vào nhiều biến:

read -p 'Enter first & last name:' fName lName

Sau đó, sử dụng lệnh echo để kiểm tra giá trị được lưu trữ trong các biến:

echo $fName $lName

Output: Bây giờ, người dùng có thể lưu tên và họ vào các biến fNamelName.

Tên và họ của người dùng đã được lưu vào các biến fName và lName
Tên và họ của người dùng đã được lưu vào các biến fName và lName

Ví dụ 2: Đọc dữ liệu vào mảng bằng lệnh read trong Linux

Để đọc thông tin nhập vào từ người dùng dưới dạng một mảng, sử dụng lệnh read -a cùng với tên mảng. Thay vì dùng nhiều biến riêng lẻ cho một chuỗi, với tùy chọn -a có thể lưu trữ các thông tin nhập vào trong một mảng dựa trên dấu cách. Điều này tiện lợi khi bạn cần xử lý nhiều dữ liệu nhập vào cùng lúc. Dưới đây là lệnh để đọc dữ liệu vào một mảng:

read -a colors

Bây giờ, truy xuất các giá trị đã lưu bằng các lệnh dưới đây:

echo ${colors[0]}

echo ${colors[1]}

echo ${colors[2]}

Nếu người dùng nhập vào red green blue, thì lệnh read -a colors sẽ tạo ra một mảng colors chứa 3 phần tử: red, greenblue. Kết quả là lệnh sẽ đọc các phần tử red, green và blue vào một mảng có tên colors.

Lệnh đã đọc các phần tử red, green và blue vào một mảng
Lệnh đã đọc các phần tử red, green và blue vào một mảng

Ví dụ 3: Đọc password bằng lệnh read trong Linux

Để đọc thông tin bảo mật như password từ dòng lệnh mà không hiển thị chúng trên màn hình, lúc này bạn có thể sử dụng lệnh read cùng với tùy chọn -s:

Bước 1: Bạn chạy lệnh dưới đây trên terminal để bảo mật dữ liệu khi đọc:

read -s password
lenh read 6
Tìm hiểu về lệnh read trong Linux và 8 ví dụ cụ thể về cách sử dụng 44

Bước 2: Sau đó, bạn có thể kiểm tra giá trị đã nhập bằng lệnh echo

echo $password

Output: Lệnh read với tùy chọn -s được sử dụng để không hiển thị trên màn hình trong quá trình nhập

Password không hiển thị trên màn hình trong quá trình nhập
Password không hiển thị trên màn hình trong quá trình nhập

Ví dụ 4: Đọc nội dung từ file bằng lệnh read trong Linux

Để đọc dữ liệu từ một file, bạn có thể sử dụng lệnh read kèm theo vòng lặp while. Ví dụ, bạn muốn lấy dữ liệu từ file states.txt, chạy lệnh dưới đây:

While IFS= read -r line; do echo "\$$line"; done < states.txt

Output: Lệnh này sẽ đọc từng dòng một từ file states.txt và hiển thị ra mỗi dòng. Tùy chọn -r sẽ ngăn chặn việc các dấu gạch chéo ngược (\) bị coi là ký tự thoát.

Lệnh đã đọc từng dòng một từ file states.txt và hiển thị ra
Lệnh đã đọc từng dòng một từ file states.txt và hiển thị ra

Ví dụ 5: Đọc số lượng ký tự giới hạn bằng lệnh read trong Linux

Trong Linux, khi bạn muốn người dùng nhập dữ liệu nhưng chỉ lấy một số lượng ký tự nhất định, lệnh read có 2 tùy chọn hữu ích là -n-N để giới hạn số lượng ký tự được đọc. Để hiểu hơn bạn xem qua 2 trường hợp dưới đây:

Trường hợp 1: Sử dụng tùy chọn -n 

Tùy chọn -n giới hạn số ký tự tối đa được đọc. Ví dụ:

read -n 5 foods

Lệnh này sẽ đọc tối đa 5 ký tự và lưu vào biến foods

5 ký tự đã được đọc và lưu vào biến foods
5 ký tự đã được đọc và lưu vào biến foods

Lưu ý:

  • Nếu bạn nhấn ENTER trước khi nhập đủ 5 ký tự, lệnh sẽ kết thúc ngay.
  • Nếu bạn nhập đủ 5 ký tự, lệnh sẽ tự động dừng.

Trường hợp 2: Sử dụng tùy chọn – N

Tùy chọn -N giới hạn số byte tối đa được đọc (thường tương đương với số ký tự). Bạn xem ví dụ sau đây:

read -N 11 variable_name

Output: Lệnh này sẽ đọc tối đa 11 byte (hoặc ký tự) và lưu vào biến có tên variable_name. Điểm khác biệt quan trọng là tùy chọn -N chỉ đếm đủ số lượng byte đã chỉ định và không quan tâm đến việc bạn có nhấn phím cách hay ENTER hay không. 

Lệnh đọc tối đa 11 byte và lưu vào biến có tên variable_name
Lệnh đọc tối đa 11 byte và lưu vào biến có tên variable_name

Lưu ý: Khi sử dụng -N, nếu người dùng nhấn Enter trước khi nhập đủ số byte, lệnh vẫn sẽ kết thúc và lưu trữ các ký tự đã nhập vào biến.

Ví dụ 6: Thiết lập thời gian chờ cho input bằng lệnh read

Để thiết lập thời gian chờ cho việc nhập thông tin, bạn sử dụng lệnh read với tùy chọn -t để đặt giới hạn thời gian. Bạn xem ví dụ sau:

read -t 2 response

Kết quả là lệnh này sẽ đợi người dùng nhập liệu trong tối đa 2 giây. Nếu người dùng không nhập gì trong khoảng thời gian đó, lệnh read sẽ kết thúc.

Lệnh sẽ đợi người dùng nhập liệu trong tối đa 2 giây
Lệnh sẽ đợi người dùng nhập liệu trong tối đa 2 giây

Ví dụ 7: Đọc cho đến khi gặp ký tự phân cách được chỉ định

Để đọc nội dung cho đến khi gặp một ký tự phân cách cụ thể, bạn có thể sử dụng lệnh read -d, sau đó là ký tự phân cách được đặt trong dấu ngoặc kép (” “). 

Ví dụ:

read -d ":" input

Trong ví dụ trên, lệnh sẽ đọc cho đến khi xuất hiện dấu hai chấm (:).

Lệnh sẽ đọc cho đến khi xuất hiện dấu hai chấm
Lệnh sẽ đọc cho đến khi xuất hiện dấu hai chấm

Ví dụ 8: Cung cấp giá trị ban đầu cho dữ liệu đầu vào 

Để gán sẵn một giá trị cho người dùng có thể sửa, bạn sử dụng lệnh read kèm tùy chọn -i. Sau đó, chạy lệnh sau để đặt giá trị mặc định cho biến name:

read -i "default" -p "Enter your name: " name

Tiếp theo bạn sử dụng lệnh echo để hiển thị giá trị ban đầu:

echo "Hello ${name: -default}"

Output: Lệnh này sẽ yêu cầu người dùng nhập tên, với default là giá trị được điền sẵn. Sau khi nhập (hoặc nhấn Enter để giữ nguyên giá trị mặc định), chương trình sẽ chào người dùng bằng “Hello” cùng với tên họ đã nhập hoặc “default” nếu không nhập gì.

Chương trình sẽ chào người dùng bằng "Hello" cùng với tên
Chương trình sẽ chào người dùng bằng “Hello” cùng với tên

Lệnh read trong Linux rất linh hoạt và có thể tùy chỉnh cao, cho phép bạn thực hiện nhiều chức năng nâng cao. Dưới đây là một số cách dùng nâng cao:

Chuyển thông tin đến lệnh read 

Để đưa thông tin vào lệnh read, bạn có thể sử dụng nhiều phương pháp khác nhau. Một cách đơn giản và thường dùng là kết hợp lệnh echo với read thông qua dấu |.  Dưới đây là ví dụ:

echo "hello there!" | (read a b; echo $a; echo $b)

Output: Lệnh này in ra dòng chữ “hello there!” và chuyển nó vào subshell. Trong subshell, lệnh read đọc dữ liệu vào các biến a và b, sau đó hiển thị giá trị của a và b.

Lệnh read đọc dữ liệu vào các biến a và b
Lệnh read đọc dữ liệu vào các biến a và b

Sử dụng ký hiệu Heredoc để nhập văn bản vào read

Ký hiệu Heredoc cho phép bạn nhập nhiều dòng văn bản trực tiếp vào lệnh read mà không cần tạo file trung gian, giúp tập lệnh gọn gàng và dễ đọc hơn.

Để nhập dữ liệu vào Lệnh read bằng cách viết Heredoc, làm như sau: 

Bước 1: Viết lệnh này và nhấn Enter:

read a b <<< "hello there!" 

Bước 2: Sau đó, dùng lệnh echo để hiển thị nội dung của các biến a và b.

echo $a

echo $b

Output: Lệnh read ở trên đọc hai biến (a và b) từ một chuỗi văn bản được cung cấp thông qua ký hiệu Heredoc (<<<). Sau đó, lệnh echo in giá trị của các biến a và b ra màn hình. 

Lệnh read sẽ đọc hai biến từ một chuỗi văn bản thông qua ký hiệu Heredoc
Lệnh read sẽ đọc hai biến từ một chuỗi văn bản thông qua ký hiệu Heredoc

Xử lý ký tự đặc biệt và dấu gạch chéo ngược

Khi bạn nhập dữ liệu vào terminal Linux, đôi khi bạn cần sử dụng dấu gạch chéo ngược (). Bình thường, dấu này có thể dùng để ngắt dòng trong lệnh read. Ví dụ:

read

hello \

> there \

> !

Như bạn thấy, lệnh read lưu trữ thông tin nhập vào trong biến $REPLY. Nhấn Enter sau dấu gạch chéo ngược sẽ không kết thúc lệnh. Bây giờ, hãy in kết quả bằng lệnh echo.

echo $REPLY

Kết quả sẽ được hiển thị ra mà không giữ lại các dấu xuống dòng bạn đã nhập trước đó.

Output hiển thị ra mà không giữ lại các dấu xuống dòng
Output hiển thị kết quả mà không giữ lại các dấu xuống dòng

Tuy nhiên, bạn có thể vô hiệu hóa việc dùng dấu gạch chéo ngược làm ký tự đặc biệt bằng cách thêm lựa chọn -r vào lệnh read. Điều này rất hữu ích khi bạn đọc đường dẫn tệp (file), nơi dấu gạch chéo ngược có ý nghĩa quan trọng. Ở bước tiếp theo, bạn tiến hành Chạy lệnh bên dưới:

read -r <<< "hello\there!"; echo $REPLY

Output: Lệnh này đọc chuỗi ký tự input vào biến $REPLY mà không coi dấu gạch chéo ngược là ký tự đặc biệt, sau đó in nội dung của biến này ra màn hình.

Lệnh sẽ đọc chuỗi ký tự input vào biến $REPLY
Lệnh sẽ đọc chuỗi ký tự input vào biến $REPLY

Câu hỏi thường gặp

Lệnh read-only trong Linux là gì?

Lệnh read-only giúp bảo vệ file và thư mục khỏi bị chỉnh sửa. Khi sử dụng lệnh này, bạn vẫn có thể xem nội dung bên trong mà không lo vô tình làm thay đổi chúng.

Sự khác biệt giữa lệnh read và lệnh read-only là gì?

Lệnh read dùng để đọc dữ liệu từ bàn phím hoặc nguồn nhập liệu khác. Ngược lại, “read-only” cho phép bạn chuyển đổi trạng thái của một file giữa chế độ chỉ đọc và chế độ cho phép ghi. Khi file ở trạng thái chỉ đọc, bạn không thể thay đổi nội dung của nó.
– Cú pháp của lệnh read: read [-options] [name…]
– Cú pháp của lệnh chmod trong Linux để chuyển file sang chế độ chỉ đọc: chmod a=r file_name

Làm thế nào để đọc một file bằng lệnh Linux?

Trong Linux, bạn có thể đọc nội dung của một file bằng các lệnh như lệnh cat trong linux, lệnh less hay lệnh more. Ví dụ, lệnh cat theo sau tên file sẽ hiển thị toàn bộ nội dung của file đó trên màn hình.

Lời kết

Lệnh read trong Linux là một công cụ linh hoạt cho phép người dùng tương tác với các tập lệnh shell một cách hiệu quả. Hy vọng qua bài viết này, bạn đã nắm vững cách sử dụng lệnh read trong Linux và có thể áp dụng những kiến thức này vào các dự án của mình. Nếu bạn có bất kỳ câu hỏi hoặc thắc mắc nào, đừng ngần ngại để lại bình luận bên dưới để Vietnix giải đáp.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG