Thứ Tư, 21 tháng 1, 2026

Chuyển hướng và xử lý tệp trong Linux

Bài viết này đề cập đến các thao tác chuyển hướng đầu vào và đầu ra cơ bản cũng như xử lý tập tin trên Linux, đặc biệt chú trọng đến thông tin cần thiết cho các kỳ thi chứng chỉ RHCSA EX200 và RHCE EX300 .

Hãy nhớ rằng, các bài kiểm tra đều dựa trên thực hành, vì vậy phương pháp bạn sử dụng để đạt được kết quả không quan trọng, miễn là sản phẩm cuối cùng chính xác.

  • Chuyển hướng (Redirection)
  • cat
  • less and more
  • head and tail
  • grep
  • sed
  • awk
  • wc

Chuyển hướng

Nhiều lệnh Linux tạo ra đầu ra được đẩy lên màn hình, chúng được gọi là ghi vào đầu ra chuẩn (stdout). Đầu ra chuẩn có thể được chuyển hướng đến một tệp, các lệnh khác hoặc thậm chí là một thiết bị.

Toán tử ">" chuyển hướng đầu ra chuẩn sang một tệp mới. Nếu tệp được chỉ định đã tồn tại, nó sẽ bị ghi đè.

# ls -al /tmp > /root/output.log

Toán tử ">>" cũng tương tự, tạo một tệp mới nếu tệp đó chưa tồn tại, hoặc ghi thêm vào tệp hiện có nếu tệp đó đã tồn tại.

# ls -al /usr >> /root/output.log

Ngoài đầu ra chuẩn, lỗi chuẩn (stderr) cũng có thể được chuyển hướng. Bảng sau đây hiển thị các biến thể chuyển hướng cho đầu ra chuẩn và lỗi chuẩn.

Chuyển hướngHoạt động
> tên tệpChuyển hướng đầu ra tiêu chuẩn sang một tệp mới.
>> tên tệpThêm nội dung đầu ra chuẩn vào một tệp tin hiện có.
1> tên tệpChuyển hướng đầu ra tiêu chuẩn sang một tệp mới.
1>> tên tệpThêm nội dung đầu ra chuẩn vào một tệp tin hiện có.
2> tên tệpChuyển hướng lỗi chuẩn sang một tệp mới.
2>> tên tệpThêm giá trị lỗi chuẩn vào một tệp tin hiện có.
&> tên tệpChuyển hướng đầu ra chuẩn và lỗi chuẩn sang một tệp mới. (Yêu cầu bash 3 trở lên)
&>> tên tệpThêm đầu ra chuẩn và lỗi chuẩn vào một tệp hiện có. (Yêu cầu bash 4 trở lên)
> tên tệp 2>&1Chuyển hướng đầu ra chuẩn và lỗi chuẩn sang một tệp mới.
>> tên tệp 2>&1Thêm đầu ra chuẩn và lỗi chuẩn vào một tệp hiện có.

Để loại bỏ tất cả đầu ra chuẩn và lỗi chuẩn, hãy chuyển hướng chúng đến "/dev/null".

Toán tử "<" được sử dụng để chuyển hướng đầu vào chuẩn. Điều này thường được dùng để truyền một tệp tin làm đầu vào chuẩn cho một lệnh. Thông thường hơn, người ta thường sử dụng toán tử "|" cho mục đích này.

lệnh < tên tệp

Toán tử "|" được sử dụng để liên kết (nối) các lệnh với nhau bằng cách truyền đầu ra chuẩn (và tùy chọn lỗi chuẩn) từ một lệnh và truyền nó làm đầu vào chuẩn cho lệnh tiếp theo. Bạn sẽ thấy các ví dụ về điều này xuyên suốt bài viết này và nhiều bài viết khác về Linux.

# ps -ef | grep root

cat

Lệnh này catđẩy nội dung của một tệp tin ra đầu ra chuẩn.

# cat /etc/group

Trang hướng dẫn sử dụng: cat

less và more

Các lệnh ` less<script>` và ` more<script>` là một cách để xử lý việc hiển thị lượng lớn văn bản trên màn hình dòng lệnh. Lệnh `<script>` lesshiển thị văn bản trên một màn hình và cho phép bạn cuộn lên xuống bằng các phím mũi tên. Phím "q" dùng để thoát.

# ps -ef | less
# cat /var/log/messages | less

Lệnh này morehiển thị từng trang văn bản một, sau đó chờ người dùng nhập thông tin để hiển thị tiếp. Phím Enter cuộn xuống một dòng, trong khi phím cách cuộn xuống một trang.

# ps -ef | thêm
# cat /var/log/messages | more

Trang hướng dẫn sử dụng: less , more

head và tail

Các lệnh head`and` tailcho phép bạn tập trung vào phần đầu và phần cuối của một đoạn văn bản dài bằng cách chỉ định số dòng cần hiển thị. Lệnh sau hiển thị 5 dòng đầu tiên của văn bản.

# head -5 /etc/passwd
# ps -ef | head -5

Lệnh sau hiển thị 5 dòng cuối cùng của bài kiểm tra.

# tail -5 /etc/passwd
# ps -ef | tail -5

Lệnh " tail -f" cực kỳ hữu ích để theo dõi các thao tác ghi vào tệp trong thời gian thực. Khi bạn chạy lệnh này, shell sẽ chờ các thao tác ghi vào tệp được chỉ định và hiển thị chúng ngay khi chúng xảy ra. Điều này rất tuyệt vời để theo dõi các tiến trình ghi vào tệp nhật ký. Sử dụng "CTRL+C" để trả lại quyền điều khiển cho shell.

# tail -f /var/log/messages

Trang hướng dẫn sử dụng: head, tail

grep

Lệnh này grepcho phép bạn tìm kiếm một mẫu cụ thể trong một tệp hoặc luồng dữ liệu. Bất kỳ dòng dữ liệu nào chứa mẫu đó đều được trả về. Các lệnh sau sử dụng lệnh này psđể trả về các tiến trình hiện tại, sau đó lọc chúng bằng lệnh này grepđể chỉ trả về những dòng chứa từ "root". Tùy chọn "-i" làm cho bộ lọc không phân biệt chữ hoa chữ thường.

# ps -ef | grep root
# ps -ef | grep -i ROOT

Lệnh này grepcũng có thể sử dụng biểu thức chính quy để tìm kiếm các mẫu phức tạp hơn. Ví dụ sau tìm kiếm bất kỳ dòng quy trình nào chứa cả 'root' và 'sbin', được phân tách bởi bất kỳ số lượng ký tự nào.

# ps -ef | grep 'root.*sbin'

Cả hai trang manvà infocủa greplệnh đều chứa phần giải thích về biểu thức chính quy.

Hãy xem thêm các biến thể fgrepgrep -F) và egrepgrep -E).

Trang hướng dẫn sử dụng: grep

sed

Lệnh này sedcho phép bạn xử lý nội dung của một tệp hoặc luồng để tạo ra kết quả đã được sửa đổi. Chúng ta hãy bắt đầu với một thao tác tìm kiếm và thay thế đơn giản.

# echo "This is my data." | sed 's/my/your/'
This is your data.
#

Sử dụng cờ "i" để làm cho nó không phân biệt chữ hoa chữ thường.

# echo "This is My data." | sed 's/my/your/'
This is My data.
# echo "This is My data." | sed 's/my/your/i'
This is your data.
#

Sử dụng cờ "g" để thay đổi có hiệu lực trên toàn hệ thống, áp dụng cho mọi lần xuất hiện của từ, chứ không chỉ lần đầu tiên.

# echo "This is My data. This is My data." | sed 's/my/your/i'
This is your data. This is My data.
# echo "This is My data. This is My data." | sed 's/my/your/gi'
This is your data. This is your data.
#

Bạn cũng có thể sử dụng sedđể lược bỏ các dòng. Một số ví dụ cơ bản được trình bày bên dưới.

# # Xóa dòng đầu tiên
# ps -ef | sed '1d'

# # Xóa 5 dòng đầu tiên (1-5)
# ps -ef | sed '1,5d'

# # Xóa các dòng chứa chuỗi
# ps -ef | sed '/root/d'

# Chỉ xuất ra các dòng chứa chuỗi đã được sửa đổi.
# ps -ef | sed -n 's/root/banana/gp'

Đã có cả những cuốn sách viết về sedlệnh này, vì vậy đây chỉ là phần nổi của tảng băng trôi, nhưng đây là những kiểu lệnh mà tôi thấy mình thường xuyên sử dụng.

Trang hướng dẫn sử dụng: sed

awk

Giống như sedawkcó thể thực hiện những việc vô cùng phức tạp và mạnh mẽ, vì vậy việc giải thích đầy đủ về nó nằm ngoài phạm vi bài viết này. Thay vào đó, tôi sẽ tập trung vào một tác vụ mà tôi sử dụng nó thường xuyên, đó là chọn lọc các cột từ một tệp hoặc luồng dữ liệu.

Kết quả đầu ra của nhiều lệnh được hiển thị dưới dạng cột. Ví dụ, pslệnh...

# ps -ef | head -1
UID PID PPID C STIME TTT TIME CMD
#

Sử dụng phương pháp này, awkchúng ta có thể chọn lọc các cột từ một tệp hoặc luồng dữ liệu và sử dụng chúng để tạo thành một chuỗi mới.

# ps -ef | head -1 | awk '{print $1 "," $2 "," $8}'
UID, PID, CMD
# ps -ef | head -1 | awk '{print "Người dùng " $1 " có ID tiến trình là " $2 " và đang chạy lệnh: " $8}'
UID của người dùng có ID tiến trình là PID và đang chạy lệnh: CMD
#

Trong ví dụ trên, tôi đã giới hạn đầu vào chỉ awkcòn một hàng, nhưng nếu bỏ dấu ngoặc kép " | head -1" thì đầu ra sẽ hiển thị tất cả các hàng được trả về bởi pslệnh.

Để dễ hình dung hơn, hãy tưởng tượng chúng ta muốn tạo một tệp CSV mới chứa kết quả đầu ra từ pslệnh, trừ đi hàng đầu tiên.

# ps -ef | sed '1d' | awk '{print $1 "," $2 "," $3 "," $4 "," $5 "," $6 "," $7 "," $8 }' > /tmp/output.txt

Tệp "/tmp/output.txt" hiện chứa thông tin cần thiết ở định dạng CSV.

Trang hướng dẫn sử dụng: awk

nhà vệ sinh

Lệnh này wcxuất ra ký tự xuống dòng, số từ và số byte cho tệp hoặc các tệp được chỉ định. Có thể giới hạn đầu ra bằng cách sử dụng cờ thích hợp.

# wc /var/log/messages
  1227 14163 103672 /var/log/tin nhắn

# wc -l /var/log/messages
1227 /var/log/messages

# wc -w /var/log/messages
14163 /var/log/messages

# wc -c /var/log/messages
103672 /var/log/messages
#

Trang hướng dẫn sử dụng: wc

Để biết thêm thông tin chi tiết, vui lòng xem:

Hi vọng điều này sẽ hữu ích.

=============================
TƯ VẤN: Click hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master