Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

[Bash] Lesson 27 – Đọc tệp tin trong Bash


image

Đọc file trong Bash

Có nhiều cách để đọc một file trong Bash Shell Scripting. Dưới đây là một số phương pháp quan trọng (giả sử tên file mà chúng ta đang đọc là ‘read_file.txt’):

Đọc file sử dụng ‘cat fileName’

Chúng ta có thể sử dụng cú pháp sau để in nội dung của file lên terminal.

value=`cat file_name`

Ví dụ

#!/bin/bash

value=`cat read_file.txt`
echo "$value"

Kết quả

image

Đọc file sử dụng ‘$()’

Sau đây là cú pháp để đọc nội dung của file bằng cách sử dụng ‘$’

value=$(file_name)

Ví dụ

#!/bin/bash

value=$(<read_file.txt)
echo "$value"

Kết quả

image

Đọc nội dung file từ Command-line Nếu chúng ta muốn đọc file từng dòng một từ Command-line mà không sử dụng lệnh ‘cat’, chúng ta có thể chạy lệnh sau để thực hiện công việc:

while read line; do Command; done < input.file

Kết quả

image

Ở đây, vòng lặp while sẽ đọc từng dòng của file và lưu nội dung của dòng vào biến $line, sau đó sẽ được in ra sau đó.

Để đọc nội dung của file sử dụng script, chúng ta cần tạo một file bash và thêm mã sau:

#!/bin/bash

file='read_file.txt'

i=1
while read line; do

#Reading each line
echo "Line No. $i : $line"
i=$((i+1))
done < $file

Kết quả

image

Ở đây, một tên file hiện có được lưu trữ trong biến $file, và biến $i được sử dụng để giữ giá trị của số dòng của dòng đó.

Truyền tên file từ dòng lệnh và đọc file

Tạo một tập tin bash và thêm đoạn mã sau đây, sẽ truyền tên file từ dòng lệnh và đọc file từng dòng một. Giá trị đối số đầu tiên được đọc bởi biến $1, nó sẽ bao gồm tên file để đọc. Nếu file có sẵn ở vị trí được chỉ định thì vòng lặp while sẽ đọc file từng dòng một và in nội dung file.

#!/bin/bash

file=$1
while read line; do

#Readind each line in sequence
echo $line
done <read_file.txt

Kết quả

image

Ở đây, tên file được sử dụng làm giá trị đối số. Đầu ra sẽ cung cấp nội dung của ‘read_file.txt’ mà không có khoảng trắng thừa giữa các từ.

Đọc file bằng cách bỏ qua Backslash Escape Nếu chúng ta muốn đọc từng dòng của một file bằng cách bỏ qua backslash-escape thì chúng ta cần sử dụng tùy chọn ‘-r’ với lệnh ‘read’ trong vòng lặp ‘while’, ví dụ:

#!/bin/bash

while read -r line; do

#Reading each line by omitting backslash escape
echo $line
done < read_file.txt

Kết quả

image

Chúng ta có thể cần đọc file cho mục đích lập trình. Ví dụ, chúng ta có thể tìm kiếm hoặc so khớp bất kỳ nội dung cụ thể nào từ file từng dòng một. Do đó, điều này là một tác vụ hữu ích cho bất kỳ ngôn ngữ lập trình nào.