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
22/08/2024
Lượt xem

Bash I/O là gì? Các chủ đề liên quan đến I/O trong Bash 

22/08/2024
14 phút đọc
Lượt xem

Đánh giá

Trong Bash, các thao tác input và output (I/O) dữ liệu rất quan trọng để giao tiếp với người dùng, đọc dữ liệu từ file, ghi dữ liệu vào file hoặc các đích xuất khác. Việc xác định nguồn gốc, hình dạng của dữ liệu input và cách xử lý để tạo ra output mong muốn là những yêu cầu cốt lõi cho tất cả shell script. Hãy cùng Vietnix tìm hiểu về Bash I/O và các chủ đề thường được thảo luận trong Bash I/O ngay sau đây.

Bash I/O là gì?

Bash I/O là viết tắt của Bash Input/Output, đề cập đến việc nhập và xuất dữ liệu trong ngữ cảnh của các script Bash khi được thực thi lệnh. Input/Output là một phần cơ bản và quan trọng trong lập trình shell script, cho phép chương trình tương tác với người dùng, file và các chương trình khác trên Bash Shell.

Bash I/O cho phép chương trình tương tác với người dùng, file và các chương trình khác
Bash I/O cho phép chương trình tương tác với người dùng, file và các chương trình khác

Để tạo ra sự xuyên suốt cho quá trình Input/Output, người dùng thực hiện chạy song song lệnh Bash với nhiều script. Ngoài việc đóng vai trò là một shell (môi trường thực hiện tập lệnh), lệnh Bash còn được xem như một dòng lệnh hữu ích và sẽ thỉnh thoảng xuất hiện trong quá trình thực lệnh trên hệ điều hành Linux.

Ngoài ra, để hiểu rõ hơn về Bash Shell, mời bạn tham khảo Bash có phải là ngôn ngữ lập trình để tự giải đáp những thắc mắc về môi trường dòng lệnh trong quá trình tìm hiểu.

Bash Input

Trong Bash, input là thông tin mà một chương trình nhận được hoặc đọc vào. Đối với một Bash script, Bash Input có thể đến từ nhiều nguồn khác nhau như: 

  • Environment variables (Biến môi trường): Là các biến kế thừa từ quá trình cha đã khởi tạo script và chứa thông tin có thể được sử dụng trong quá trình thực thi script.
  • Command-line argument: Các giá trị hoặc tùy chọn được cung cấp khi script được thực thi, thường được lưu trữ trong các tham số vị trí.
  • File: Input có thể được đọc từ các file. Trong khi đó script có thể đọc và trích xuất thông tin liên quan từ các file này để xử lý thêm.
  • File Descriptor: Hệ thống được sử dụng để truy cập các nguồn input khác nhau như pipes, terminals, sockets,… Các nguồn này cung cấp một cách để nhận input vào trong script.

Bash Output

Trong Bash, output là những thông tin hoặc dữ liệu được tạo ra hoặc ghi lại bởi một chương trình. Bạn có thể chuyển hướng Bash output đến nhiều đích khác nhau, bao gồm:

  • File: Lưu output vào file để sử dụng hoặc phân tích sau này.
  • File Descriptor: Chuyển hướng output đến các file descriptor khác nhau, cho phép gửi đến các đích như pipes (ống), terminals (thiết bị đầu cuối),…
  • Command-line argument: Truyền output từ script Bash làm tham số cho một chương trình khác trong pipeline.
  • Environment variables: Gán output cho các biến môi trường.

Nắm vững khái niệm bash I/O (Input/Output) là rất quan trọng khi chạy tập lệnh Bash Script. Hiểu rõ về các nguồn input và cách điều khiển output sẽ giúp bạn tạo ra các tập lệnh script hiệu quả hơn.

Các chủ đề được thảo luận trong Bash I/O

Bash I/O bao gồm nhiều phạm vi liên quan về nhập và xuất dữ liệu. Trong phần này, Vietnix sẽ giới thiệu ngắn gọn về các chủ đề chung liên quan đến hoạt động I/O trong Bash:

Input, Output và lỗi chuẩn

Thông qua input, output và lỗi chuẩn, bạn có thể kiểm soát script của mình, bao gồm nơi đọc dữ liệu vào, nơi xuất dữ liệu ra và cách xử lý thông báo lỗi.

  • Standard Input (stdin): Bash cho phép bạn đọc dữ liệu đầu vào tương tác từ người dùng hoặc từ một lệnh khác thông qua standard input (stdin). Điều này thường được thực hiện bằng cách sử dụng lệnh read trong Linux, cho phép bạn gán input vào các biến để sử dụng sau này trong script.
  • Standard Output (stdout): Bash cho phép hiển thị output bằng cách sử dụng standard output (stdout). Theo mặc định, output được hiển thị trên terminal. Tuy nhiên, bạn cũng có thể chuyển hướng output đến một file bằng ký tự > (ghi đè) hoặc nối thêm vào một file bằng ký tự >>. Ngoài ra, bạn có thể chuyển hướng output của một lệnh sang input của một lệnh khác bằng ký tự | (piping).
  • Standard Error (stderr): Ngoài STDOUT, bash còn cung cấp một luồng riêng biệt gọi là standard error để xử lý thông báo lỗi và output chẩn đoán. Theo mặc định, STDERR được hiển thị trên terminal cùng với STDOUT. Bạn cũng có thể chuyển hướng STDERR đến một file bằng ký tự 2> hoặc 2>>.
Hình ảnh minh họa STDIN, STDOUT, STDERR trong bash
Hình ảnh minh họa STDIN, STDOUT, STDERR trong bash

Trong Linux, mọi thứ đều được coi là file, bao gồm cả input và output. Hệ điều hành gán các định danh gọi là file descriptor để đại diện cho các file này. Mỗi tiến trình có thể có tối đa 9 file descriptor mở cùng lúc. Trong shell bash, 3 descriptor đầu tiên có định danh cụ thể như sau:

  • 0 đại diện cho STDIN.
  • 1 đại diện cho STDOUT.
  • 2 đại diện cho STDERR.

Thay thế lệnh

Thay thế lệnh cho phép bạn lấy output của một lệnh và sử dụng output đó như một phần của lệnh khác hoặc gán vào một biến. Trong bash, có hai cú pháp phổ biến để thay thế lệnh:

  • Sử dụng ký hiệu ($): variable=$(command)
  • Sử dụng dấu backticks (`): variable=`command`

Trong cả hai trường hợp, command sẽ được thực thi và output sẽ được lưu trữ và thay thế vào dòng lệnh.

Thay thế lệnh trong I/O
Thay thế lệnh trong I/O

Lưu ý:

  • command trong lệnh thay thế được thực thi trong một subshell, nghĩa là bất kỳ thay đổi biến nào được thực hiện bên trong thay thế lệnh sẽ không ảnh hưởng đến shell cha.
  • Thay thế lệnh có thể được sử dụng như một phần của dòng lệnh hoặc để gán cho một biến.
  • Output được lưu trữ có thể được sử dụng trực tiếp trong một lệnh hoặc như một phép gán bên trong dấu ngoặc kép (” “).
  • Nếu kết quả output của lệnh command chứa khoảng trắng, output này có thể bị tách thành các đối số riêng biệt do quá trình phân tách từ (word splitting).

Đối số & Tham số I/O

Trong Bash Scripting, đối số (arguments) là các giá trị được truyền vào một script hoặc hàm (function) khi được thực thi. Phần lớn các script tập trung vào các đối số nhận được thông qua dòng lệnh. Các đối số này được gọi là các tham số vị trí (positional parameters), tạo thành một mảng đơn giản các chuỗi ký tự. Dưới đây là một số lưu ý quan trọng về các đối số và tham số này:

  • Đối số đầu tiên biểu thị là $1, đối số thứ hai là $2 và cứ tiếp tục như vậy. Để truy cập các đối số vượt quá vị trí thứ 9, bạn cần sử dụng dấu ngoặc nhọn (ví dụ: ${10},${11}).
  • Để tham chiếu các tham số vị trí cùng một lúc, bạn sử dụng ký hiệu “$@” và cần được đặt trong dấu ngoặc kép (“ ”).
Đối số và tham số trong I/O
Đối số và tham số trong I/O

File I/O là quá trình thực hiện các thao tác trên file, chẳng hạn như đọc và ghi dữ liệu. Trong bash thì file I/O là một khái niệm cơ bản để xử lý dữ liệu lưu trữ trong file. Dưới đây là những điều về file I/O trong bash mà bạn cần biết:

Opening and Closing Files

Để thực hiện các thao tác file I/O, bạn cần file bằng lệnh exec trong Linux hoặc sử dụng chuyển hướng luồng input/output (I/O streams) với các ký hiệu như <, >, >> và 2>.

Reading From Files: Bash cũng có nhiều cách để đọc dữ liệu từ file như:

  • Sử dụng lệnh read trong Linux.
  • Sử dụng lệnh cat trong Linux.
  • Sử dụng chuyển hướng input (<).

Writing to Files: Bash cung cấp nhiều cách để ghi dữ liệu vào file như:

  • Sử dụng lệnh echo trong Linux để ghi văn bản hoặc biến vào file.
  • Sử dụng chuyển hướng output (>) để ghi đè lên file.
  • Sử dụng chuyển hướng output nối thêm (>>) để thêm dữ liệu vào cuối file.
  • Sử dụng lệnh printf.

File Descriptors

Bash sử dụng các file descriptors để xử lý file I/O. Các luồng STDIN, STDOUT và STDERR được gán các file descriptors lần lượt là 0, 1 và 2.

File Manipulation: Bash cung cấp các lệnh để thao tác với file:

  • mv: Di chuyển hoặc đổi tên file.
  • cp: Sao chép file.
  • rm: Xóa file.
  • mkdir: Tạo directory.
  • rmdir: Xóa directory.

File Testing

Bash cung cấp các toán tử kiểm tra file cho phép bạn kiểm tra các thuộc tính khác nhau của file như existence, size, type, permissions,…

Chuyển hướng

Khi bạn chạy một chương trình hoặc lệnh trong môi trường dòng lệnh Bash, chương trình đó thường nhận dữ liệu từ bàn phím (input) và hiển thị kết quả trên màn hình (output). Ví dụ, lệnh ls trong Linux thường liệt kê các tập tin và thư mục trên màn hình (output), nhưng bạn có thể lưu danh sách này vào một file bằng cách sử dụng chuyển hướng. Chuyển hướng cho phép bạn thay đổi điều này, bạn có thể:

  • Lưu kết quả vào file: Thay vì hiển thị kết quả trên màn hình, bạn có thể lưu output vào một file.
  • Lấy dữ liệu từ file: Thay vì yêu cầu người dùng nhập dữ liệu từ bàn phím, bạn có thể lấy dữ liệu từ một file có sẵn.

Shell Bash sẽ thực hiện các thao tác chuyển hướng này trước khi chạy lệnh mà bạn đã áp dụng chuyển hướng.

Quy trình chuyển hướng trong I/O
Quy trình chuyển hướng trong I/O

Pipes

Trong khi chuyển hướng cho phép bạn ghi output vào file hoặc đọc input từ file, thì pipelines cho phép bạn kết nối output của một ứng dụng trực tiếp với input của một ứng dụng khác – Bash Piping. Pipelines còn được gọi là FIFO (First In, First Out), là các file đặc biệt cung cấp cách thức giao tiếp giữa các tiến trình, cho phép hai hoặc nhiều tiến trình giao tiếp bằng cách đọc và ghi vào cùng một file hoạt động như một ống dẫn.

Pipelines
Pipelines

Tầm quan trọng của I/O trong Bash Scripting

I/O có vai trò quan trọng trong quá trình chạy tập lệnh bash, giúp cho script giao tiếp với người dùng, xử lý dữ liệu và tự động hoá các tác vụ. Cụ thể như sau:

  • Tương tác với người dùng: I/O trong bash cho phép bạn tạo ra các đoạn script tương tác giúp ứng dụng của bạn dễ sử dụng và tăng khả năng tương tác.
  • Xử lý dữ liệu: I/O trong bash rất cần thiết để xử lý và thao tác dữ liệu từ các nguồn khác nhau.
  • Tự động hóa tác vụ: Bạn có thể tạo ra các script tự động hóa với các cài đặt tùy chỉnh.
  • Tương tác với các chương trình khác: Thiết kế các chương trình menu cho phép người dùng thực hiện các hành động dựa trên lựa chọn của họ.
  • Xử lý lỗi: I/O trong bash rất quan trọng để xử lý lỗi và hiển thị các thông báo thông tin cho người dùng.
Tầm quan trọng của I/O
Tầm quan trọng của I/O

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

Có thể sử dụng Bash I/O để tương tác với các thiết bị ngoại vi không?

Có thể sử dụng Bash I/O để tương tác với các thiết bị ngoại vi như máy in, thiết bị mạng bằng cách sử dụng các lệnh đặc biệt.

Làm sao để tắt output trong bash?

Để tắt output trong bash, bạn có thể chuyển hướng dòng output đến một thiết bị null (một file đặc biệt) có thể bỏ qua bất kỳ thông báo nào được ghi vào đó. Bạn có thể chuyển hướng cả standard output và standard error đến thiết bị null bằng cú pháp: command > /dev/null 2>&1.

Tại sao chuyển hướng I/O lại có ích?

Chuyển hướng I/O trong bash là một tính năng quan trọng cho phép bạn thay đổi nguồn hoặc đích các file descriptors của chương trình. Sử dụng chuyển hướng, bạn có thể chuyển hướng output vào một file thay vì hiển thị trên terminal hoặc yêu cầu một ứng dụng lấy input từ một file thay vì từ bàn phím.

Lời kết

Bài viết đã cung cấp cho bạn những thông tin tìm về Bash I/O. Hy vọng thông tin này sẽ hữu ích cho bạn và giúp bạn nắm vững hơn về cách sử dụng I/O trong các script bash của mình. Chúc bạn thành công trong việc tạo ra các script linh hoạt và hiệu quả. Nếu có điều gì chưa rõ, bạn có thể bình luận ngay bên dưới để được Vietnix giải đáp nhanh.

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