Lệnh stat
Linux cho bạn thấy nhiều chi tiết hơn lệnh ls
. Bài viết sau đây sẽ chỉ cho bạn cách sử dụng lệnh stat
trong Linux.
Giống như ls
, lệnh stat
có rất nhiều tùy chọn. Điều này làm cho nó trở thành một ứng cử viên tuyệt vời cho việc sử dụng các alias. Điều này làm cho việc sử dụng thuận tiện hơn nhiều và bạn không cần phải nhớ một bộ tùy chọn dòng lệnh phức tạp.
Tìm hiểu về lệnh stat trên Linux
Lệnh stat cho biết những thông tin gì?
Hãy nhìn vào lệnh stat sau:
stat ana.h
Thông tin ta có được là:
- File: Tên của file.
- Size: Dung lượng của file tính theo byte.
- Blocks: Số lượng khối hệ thống file được yêu cầu, để lưu trữ trên ổ cứng.
- IO Block: Dung lượng của khối hệ thống file.
- File type: Loại đối tượng mà siêu dữ liệu mô tả.
- Device: Số thiết bị ở dạng thập lục phân và thập phân.
- Inode: Số inode. Đó là số ID của inode này.
- Links: Con số này cho biết có bao nhiêu liên kết cứng trỏ đến file này.
- Access: Các quyền của file được hiển thị trong định dạng đọc, ghi, thực thi truyền thống.
- Uid: ID người dùng và tên tài khoản của chủ sở hữu.
- Gid: ID nhóm và tên tài khoản của chủ sở hữu.
- Access: Đánh dấu thời gian truy cập.
- Modify: Đánh dấu thời gian sửa đổi. Đây là thời điểm nội dung file được sửa đổi lần gần nhất.
- Change: Đánh dấu thời gian thay đổi. Đây là thời gian các thuộc tính hoặc nội dung của file được thay đổi lần gần nhất.
- Birth: Dành để hiển thị ngày tạo ban đầu của file, nhưng điều này không được thực hiện trong Linux.
Sử dụng stat với nhiều file
Để có báo cáo stat
trên một số file cùng một lúc, hãy chuyển tên file cho stat
trên dòng lệnh:
stat ana.h ana.o
Để sử dụng stat
trên một tập hợp các file, hãy dùng pattern phù hợp. Dấu hỏi “?” đại diện cho bất kỳ ký tự đơn nào và dấu hoa thị “*” đại diện cho bất kỳ chuỗi ký tự nào.
Sử dụng stat để báo cáo về hệ thống file
Lệnh stat
có thể báo cáo về trạng thái của các hệ thống file, cũng như trạng thái của file. Tùy chọn -f (filesystem) yêu cầu stat
báo cáo về hệ thống file mà file nằm trong đó. Lưu ý rằng bạn cũng có thể chuyển một thư mục như “/” đến stat
thay vì tên file.
stat -f ana.c
Lệnh stat cho ta biết:
- File: Tên của file.
- ID: ID hệ thống file theo ký hiệu thập lục phân.
- Namelen: Độ dài tối đa cho phép đối với tên file.
- Loại: Loại hệ thống file.
- Block size: Lượng dữ liệu yêu cầu đọc cho tốc độ truyền dữ liệu tối ưu.
- Fundamental block size: Kích thước của mỗi block hệ thống file.
- Blocks:
- Total: Tổng số của tất cả các block trong hệ thống file.
- Free: Số lượng block còn trống trong hệ thống file.
- Available: Số lượng block miễn phí có sẵn cho người dùng thông thường (không phải root).
- Inodes:
- Total: Tổng số lượng các inode trong hệ thống file.
- Free: Số lượng inode trống trong hệ thống file.
Liên kết tượng trưng
Nếu bạn sử dụng stat
trên một file thực sự là một liên kết tượng trưng, nó sẽ báo cáo về liên kết đó. Nếu bạn muốn stat báo cáo về file mà liên kết trỏ đến, hãy sử dụng tùy chọn -L (dereference). File code.c là một liên kết tượng trưng đến ana.c. Hãy xem xét nó khi không có tùy chọn -L:
stat code.c
Tên file hiển thị code.c trỏ đến (->) ana.c. Kích thước file chỉ có 11 byte. Không có block nào dành cho việc lưu trữ liên kết này. Loại file được liệt kê như một liên kết tượng trưng.
Hãy chạy lệnh một lần nữa và thêm tùy chọn -L:
stat -L code.c
Kết quả hiển thị chi tiết cho file được chỉ ra bởi liên kết tượng trưng. Nhưng lưu ý rằng tên file vẫn được cung cấp dưới dạng code.c. Đây là tên của liên kết, không phải file mục tiêu.
Báo cáo Terse
Tùy chọn -t (terse) khiến stat cung cấp một bản tóm tắt cô đọng:
stat -t ana.c
Không có manh mối nào được đưa ra. Để hiểu ý nghĩa của nó, cho đến khi ghi nhớ được trình tự trường, bạn cần tham chiếu chéo đầu ra này với đầu ra đầy đủ.
Định dạng đầu ra tùy chỉnh
Cách tốt hơn để có được một tập hợp dữ liệu khác nhau từ stat
là sử dụng định dạng tùy chỉnh. Có một danh sách dài các token được gọi là chuỗi định dạng. Mỗi cái này đại diện cho một yếu tố dữ liệu. Chọn những cái bạn muốn có trong đầu ra và tạo một chuỗi định dạng. Khi bạn gọi stat
và truyền chuỗi định dạng cho nó, đầu ra sẽ chỉ bao gồm các thành phần dữ liệu mà bạn yêu cầu.
Có hai tùy chọn chấp nhận chuỗi các chuỗi định dạng là --format và --printf. Sự khác biệt giữa chúng là --printf diễn giải các chuỗi thoát kiểu C và nó không tự động thêm một ký tự dòng mới vào đầu ra.
Hãy tạo ra một chuỗi định dạng và chuyển nó sang stat
. Trình tự định dạng sẽ sử dụng là %n cho tên file, %s cho dung lượng và %F cho loại file. Thêm chuỗi thoát \n vào cuối cho chuỗi để đảm bảo mỗi file được xử lý trên một dòng mới:
"File %n is %s bytes, and is a %F\n"
Ví dụ sẽ chuyển cái này sang stat
bằng tùy chọn --printf.
stat --printf="File %n is %s bytes, and is a %F\n" code.c ana/ana.?
Báo cáo cho mỗi file được liệt kê trên một dòng mới.
Các định dạng tùy chỉnh cho phép bạn truy cập vào nhiều yếu tố dữ liệu hơn những gì được bao gồm trong đầu ra stat
tiêu chuẩn.
Như có thể thấy, có rất nhiều phạm vi để trích xuất các yếu tố dữ liệu cụ thể mà bạn quan tâm.