Friday, October 25, 2024

[Bash] Lesson 28 – Ghi vào file bằng Bash

-

Ghi vào file bằng Bash
Khi chúng ta chạy bất kỳ lệnh nào trong shell bash, nó thường in ra đầu ra của lệnh đó trên terminal để chúng ta có thể đọc ngay lập tức. Nhưng bash cũng cung cấp một tùy chọn để “điều hướng” đầu ra của bất kỳ lệnh bash nào đến một file log. Nó có thể lưu đầu ra vào một file văn bản để chúng ta có thể xem lại sau này khi cần thiết.

Phương thức 1: Ghi đầu ra vào file
Để ghi đầu ra của các lệnh Bash vào một file, chúng ta có thể sử dụng dấu ngoặc nhọn phải (>) hoặc hai dấu ngoặc nhọn phải (>>):

Dấu Ngoặc Nhọn Phải (>)
Nó được sử dụng để ghi đầu ra của lệnh bash vào một file đĩa. Nếu không có file với tên được chỉ định, thì nó sẽ tạo ra một file mới với cùng tên. Nếu file đã tồn tại với tên được chỉ định, thì nội dung của file sẽ bị ghi đè.

Hai Dấu Ngoặc Nhọn Phải (>>)
Nó được sử dụng để ghi đầu ra của các lệnh bash vào một file, nối thêm đầu ra vào nội dung hiện có của file. Nếu file không có, nó sẽ tạo ra một file mới với tên được chỉ định.

Về mặt kỹ thuật, cả hai toán tử này điều hướng “stdout (đầu ra tiêu chuẩn)” vào một file.

Một cách đơn giản, khi chúng ta ghi file lần đầu và không muốn dữ liệu trước đó có trong file, chúng ta nên sử dụng dấu ngoặc nhọn phải (>). Nó sẽ ghi đè nội dung nếu đã có sẵn trong file. Và trong các tập lệnh tiếp theo, chúng ta có thể sử dụng hai dấu ngoặc nhọn phải (>>) để nối dữ liệu vào một file.

Ví dụ
Lệnh ‘ls’ được sử dụng để in ra tất cả các file và thư mục có trong thư mục hiện tại. Nhưng khi chúng ta chạy lệnh ‘ls’ với dấu ngoặc nhọn phải (>), nó sẽ không in ra danh sách các file và thư mục trên màn hình. Nó sẽ lưu đầu ra vào file mà chúng ta chỉ định, như được hiển thị dưới đây:

#!/bin/bash  
#Script to write the output into a file  
  
#Create output file, override if already present  
output=output_file.txt  
  
#Write data to a file  
ls > $output  
  
#Checking the content of the file  
gedit output_file.txt  

Kết quả

Như được thể hiện ở đây, đầu ra của lệnh ‘ls’ được chuyển hướng vào một tập tin. Để in nội dung của file lên terminal, chúng ta có thể sử dụng lệnh ‘cat’ theo định dạng sau:

#!/bin/bash  
#Script to write the output into a file  
  
#Create output file, override if already present  
output=output_file.txt  
  
#Write data to a file  
ls > $output  
  
#Printing the content of the file  
cat $output  

Kết quả

Nếu chúng ta muốn chuyển hướng đầu ra của nhiều lệnh vào một file duy nhất mà không xóa dữ liệu đã có sẵn, thì chúng ta có thể sử dụng toán tử >>. Giả sử chúng ta muốn thêm thông tin hệ thống vào file được chỉ định, chúng ta có thể làm như sau:

#!/bin/bash  
#Script to write the output into a file  
  
#Create output file, override if already present  
output=output_file.txt  
  
#Write data to a file  
ls > $output  
  
#Appending the system information  
uname -a >> $output  
  
#Checking the content of the file  
gedit output_file.txt 

Kết quả

Ở đây, kết quả của lệnh thứ hai được thêm vào cuối file.

Chúng ta có thể lặp lại quá trình này nhiều lần để tiếp tục thêm đầu ra vào cuối file.

Phương pháp 2: In output và lưu vào file

Một số người có thể không thích việc ghi đầu ra vào file bằng các toán tử > hoặc >>, vì không có đầu ra của lệnh trong terminal. Đó là lý do tại sao lệnh ‘tee’ được sử dụng. Lệnh ‘tee’ được sử dụng để in đầu vào nhận được ra màn hình. Nó có thể lưu đầu ra vào file đồng thời.

#!/bin/bash  
#Script to write the output into a file  
  
#Create output file, override if already present  
output=output_file.txt  
  
#Write data to a file  
ls | tee $output  

Kết quả

Nếu chúng ta muốn ghi đè nội dung của file như toán tử “>” nhưng cũng in kết quả ra màn hình, chúng ta có thể sử dụng lệnh “tee”.

Nếu chúng ta muốn ghi kết quả ra file mà không xóa nội dung của file đó bằng lệnh “tee”, chúng ta có thể sử dụng dạng sau đây, lệnh này cũng in kết quả ra màn hình:

#!/bin/bash  
#Script to write the output into a file  
  
#Create output file, override if already present  
output=output_file.txt  
  
echo "<<<List of Files and Folders>>>" | tee -a $output  
#Write data to a file  
ls | tee $output  
  
echo | tee -a $output  
#Append System Information to the file  
echo "<<<OS Name>>>" | tee -a $output  
uname | tee -a $output 

Kết quả

Lệnh này sẽ không chỉ thêm đầu ra vào cuối file mà còn in đầu ra ra màn hình.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories