Cách ghi vào tệp bằng Bash

How Write File Bash



Một trong những tác vụ cần thiết mà chúng tôi thực hiện khi làm việc với bash scripting là đọc và ghi tệp. Trong hướng dẫn này, chúng tôi sẽ tập trung vào cách đọc tệp trong bash và cách chỉnh sửa chúng.

Có nhiều cách để đọc và ghi một tệp trong bash. Cách đơn giản nhất là sử dụng toán tử> và >>.







  • > toán tử sẽ ghi đè lên dữ liệu hiện có
  • >> nhà điều hành sẽ nối thêm dữ liệu

Định dạng chung của việc sử dụng các toán tử chuyển hướng là:



Dữ liệu> Tên tệp
Dữ liệu >> Tên tệp

Hãy hiểu cách ghi vào một thủ tục tệp với một ví dụ:



Cách ghi tệp bằng toán tử chuyển hướng

Như đã thảo luận ở trên, cách tiếp cận đơn giản và dễ hiểu để ghi vào tệp là sử dụng toán tử chuyển hướng. Ví dụ: nếu bạn muốn thay đổi văn bản của một tệp đã tồn tại, thì trước tiên hãy tạo một tệp văn bản có tên là testfile.txt và viết bất cứ thứ gì trong đó:





Lưu tệp văn bản.



Nhập lệnh được đề cập bên dưới vào thiết bị đầu cuối:

$ echo Ghi đè văn bản hiện có trong tệp> testfile.txt

Vắt quá nhiều có thể có rủi ro; do đó, bạn nên bật noclobber. Đặt noclobber sẽ chặn mọi ghi đè lên bất kỳ tệp nào đang thoát.

$ set –o noclobber
$ echo Ghi đè văn bản hiện có trong tệp> testfile.txt

Nhưng nếu bạn muốn bỏ qua noclobber thì hãy sử dụng > | nhà điều hành thay vì > :

$ echo Ghi đè văn bản hiện có trong tệp> | testfile.txt

Hoặc bạn có thể vô hiệu hóa noclobber một cách đơn giản:

$ set + hoặc noclobber

Nhưng lệnh này sẽ lấy đi sự bảo vệ khỏi tất cả các tệp.

Kết quả trên cho biết rằng văn bản hiện có đã bị ghi đè. Bây giờ, hãy sử dụng >> nhà điều hành:

$ echo Nối văn bản vào tệp văn bản hiện có >> testfile.txt

quăng đi không phải lúc nào cũng lý tưởng để sử dụng vì bạn không thể định dạng văn bản bằng cách sử dụng nó, do đó hãy sử dụng printf thay cho echo để định dạng văn bản như được minh họa trong lệnh sau:

$ printf Chào mừng n Đây là một tệp văn bản mới. > newtestfile.txt

Hãy hiểu khái niệm này với một ví dụ về tập lệnh bash. Mở Vim bằng cách nhập vim vào thiết bị đầu cuối. Nếu bạn không có trình chỉnh sửa Vim trên thiết bị của mình, hãy cài đặt nó bằng cách sử dụng:

$ sudo apt cài đặt vim

Nhập tập lệnh:

#! / bin / bash
echo Nhập tên của bạn
đọc tên
echo $ name> data_dir.txt
echo Nhập tuổi của bạn
tuổi đọc
echo $ age >> data_dir.txt
cat data_dir.txt

Các con mèo được sử dụng để tạo và chỉnh sửa tệp. Lưu tập lệnh trên trong Vim bằng cách chuyển đổi chế độ sau khi nhấn Thoát ra phím và sau đó gõ : trong myscript.sh . Mở thiết bị đầu cuối và chạy mã:

Cách ghi tệp bằng Heredoc

Nếu bạn muốn viết nhiều dòng, thì phương pháp đơn giản nhất là sử dụng Heredoc. Ở đây tài liệu, còn được gọi là Heredoc, là một khối mã đa năng. Cú pháp của Heredoc là:

Chỉ huy<<[-] Delimiter
.
văn bản / lệnh
.

Dấu phân cách

Bất kỳ chuỗi nào cũng có thể được sử dụng thay cho Dấu tách và - cũng có thể được sử dụng để xóa bất kỳ khoảng trắng tab nào trong tệp. Hãy hiểu nó bằng một ví dụ đơn giản:

#! / bin / bash

con mèo<< TEXTFILE
Đây là một tệp văn bản.
Tệp này được tạo bằng heredoc.
DỆT

Lệnh script cat ở trên tạo một tệp văn bản có tên là TEXTFILE và ghi văn bản vào tệp vừa tạo. Bây giờ hãy lưu tệp theo tên của myscript.sh . Khởi chạy thiết bị đầu cuối và chạy tập lệnh.

Cách ghi tệp bằng lệnh Tee

Một phương pháp khác để ghi tệp là sử dụng lệnh Tee. Như tên cho biết lệnh này nhận đầu vào và ghi vào một tệp và hiển thị đầu ra đồng thời. Theo mặc định, lệnh Tee sẽ ghi đè lên dữ liệu hiện có.

$ echo Đây là một số văn bản | tee textfile.txt

Để nối thêm sử dụng –a:

$ echo Đây là một văn bản khác | tee –a textfile.txt

Để viết nhiều dòng, hãy sử dụng:

$ echo Thêm văn bản vào nhiều tệp | tee textfile1.txt textfile2.txt textfile3.txt

Lệnh trên sẽ tạo ba tệp nếu chúng không tồn tại và ghi văn bản vào mỗi tệp.

Phần kết luận

Hướng dẫn này tập trung vào nhiều cách tiếp cận để ghi vào tệp trong bash với các ví dụ. Trong kịch bản bash, có nhiều cách để ghi một tệp, nhưng cách đơn giản nhất là sử dụng các toán tử chuyển hướng>, >>. Để viết nhiều dòng, có thể sử dụng heredoc, và nếu bạn muốn ghi cùng một dữ liệu vào nhiều dòng, thì lệnh tee khá tiện dụng.