Tổng Quan Về Lệnh tree
Lệnh tree là một tiện ích mạnh mẽ trong hệ điều hành Linux, cho phép hiển thị danh sách các tệp và thư mục con dưới dạng sơ đồ cây phân cấp. Điều này hỗ trợ đắc lực cho việc quản lý cấu trúc phần mềm hoặc hệ thống tập tin mà không cần phải duyệt thủ công qua từng lớp.
Trên nhiều bản phân phối chính thống, tiện ích này thường chưa được cài đặt sẵn ngay từ đầu. Để kích hoạt chức năng này, bạn cần thực hiện các bước cài đặt dựa trên hệ thống đóng gói tương ứng:
# Đối với hệ thống sử dụng Yum (CentOS, Fedora, RHEL)
yum install tree -y
# Đối với hệ thống sử dụng Apt (Ubuntu, Debian)
sudo apt-get install tree -y
Cú Pháp Cơ Bản
Công thức chung khi gọi lệnh như sau:
tree [các tùy chọn] [đường_dẫn_tập_thư_mục]
Hướng Dẫn Các Tùy Chọn Phổ Biến
Dưới đây là danh sách các tham số thường gặp, giúp tùy chỉnh nội dung hiển thị theo nhu cầu cụ thể:
- -a: Bao gồm cả những tệp ẩn (bắt đầu bằng dấu chấm).
- -d: Chỉ liệt kê tên của các thư mục, loại bỏ các tệp tin đơn lẻ.
- -f: Hiển thị đường dẫn tuyệt đối thay vì đường dẫn tương đối.
- -i: Loại bỏ các ký tự nối hình cây, hiển thị danh sách dạng tuyến tính.
- -L n: Giới hạn độ sâu hiển thị xuống chỉ còn n tầng so với thư mục gốc.
- -p: Ghi thêm chuỗi quyền truy cập (permissions) cho từng mục.
- -u và -g: Lần lượt hiển thị tên chủ sở hữu và nhóm sở hữu file.
- -s: Liệt kê dung lượng lưu trữ của từng tệp.
- -h: Định dạng kích thước dữ liệu dễ đọc (như KB, MB) thay vì byte thô.
- -C: Sử dụng mã màu để phân biệt giữa tệp và thư mục.
- -t: Sắp xếp các mục theo thời gian sửa đổi mới nhất.
- -R: Đảo ngược thứ tự sắp xếp.
- -P "pattern": Chỉ hiện các mục khớp với mẫu regex đã chỉ định.
- -I "pattern": Loại bỏ các mục khớp với mẫu regex.
Ví Dụ Thực Tế
Giả sử ta đang làm việc trong thư mục dự án tại /home/dev/my_project, chứa các thành phần source code và tài liệu cấu hình.
Hiển thị toàn bộ cấu trúc bao gồm cả các tệp nhị phân và ẩn:
$ tree /home/dev/my_project
.
├── build.sh
├── config.ini
├── lib
│ ├── utils.o
│ └── helper.so
├── src
│ ├── main.cpp
│ ├── core.py
│ └── .env.bak
└── logs.txt
4 directories, 9 files
Bỏ qua nội dung bên trong thư mục con, chỉ muốn xem các folder tồn tại:
$ tree -d /home/dev/my_project
.
├── build.sh
├── config.ini
├── lib
├── src
└── logs.txt
Chỉ hiển thị chiều cao tối đa 2 mức từ thư mục gốc:
$ tree -L 2 /home/dev/my_project
.
├── build.sh
├── lib
│ ├── utils.o
│ └── helper.so
├── src
│ ├── main.cpp
│ └── core.py
├── logs.txt
└── .env.bak
2 directories, 5 files
Kết hợp hiển thị đường dẫn đầy đủ để biết vị trí chính xác của file trên đĩa:
$ tree -f /home/dev/my_project
/home/dev/my_project
├── /home/dev/my_project/build.sh
├── /home/dev/my_project/config.ini
├── /home/dev/my_project/lib
│ ├── /home/dev/my_project/lib/utils.o
│ └── /home/dev/my_project/lib/helper.so
├── /home/dev/my_project/src
│ ├── /home/dev/my_project/src/main.cpp
│ └── /home/dev/my_project/src/core.py
└── /home/dev/my_project/logs.txt
Hiển thị thông tin phân quyền và nhóm sở hữu của từng tệp tin:
$ tree -pg /home/dev/my_project
.
├── [-rw-r--r-- dev] build.sh
├── [-rw-r----- admin] config.ini
├── [drwxr-xr-x dev] lib
│ ├── [-rw-rw-r-- dev] utils.o
│ └── [-rwxr-xr-x root] helper.so
├── [drwxr-sr-x admin] src
│ ├── [-rw-r--r-- dev] main.cpp
│ └── [-rwxr-xr-x test] core.py
└── [-rw------- dev] logs.txt
Loại bỏ hình thức cây, chuyển sang hiển thị danh sách phẳng thông thường:
$ tree -i /home/dev/my_project
build.sh
config.ini
lib
utils.o
helper.so
src
main.cpp
core.py
logs.txt
.env.bak