stat
là một tiện ích dòng lệnh hiển thị thông tin chi tiết về các tệp hoặc hệ thống tệp nhất định.
Bài viết này giải thích cách sử dụng lệnh stat
.
Sử dụng lệnh stat
Cú pháp của lệnh stat
như sau:
stat [OPTION]... FILE...
stat
chấp nhận một hoặc nhiều FILE
đầu vào và bao gồm một số tùy chọn kiểm soát hành vi lệnh và đầu ra.
Hãy xem ví dụ sau:
stat file.txt
Đầu ra sẽ giống như sau:
File: file.txt Size: 4030 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 13633379 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ linuxize) Gid: ( 1000/ linuxize) Access: 2019-11-06 09:52:17.991979701 +0100 Modify: 2019-11-06 09:52:17.971979713 +0100 Change: 2019-11-06 09:52:17.971979713 +0100 Birth: -
Khi được gọi mà không có bất kỳ tùy chọn nào, stat
sẽ hiển thị thông tin tệp sau:
- Tệp – Tên của tệp.
- Kích thước – Kích thước của tệp tính bằng byte.
- Các khối – Số khối được cấp phát mà tệp có.
- IO Block – Kích thước tính bằng byte của mọi khối.
- Loại tệp – (ví dụ: tệp thông thường, thư mục, liên kết tượng trưng.)
- Thiết bị – Số thiết bị ở dạng thập lục phân và thập phân.
- Inode – Số Inode.
- Liên kết – Số lượng liên kết cứng.
- Access – Quyền truy cập tệp trong các phương thức số và ký hiệu.
- Uid – ID người dùng và tên của chủ sở hữu .
- Gid – ID nhóm và tên của chủ sở hữu.
- Bối cảnh – Bối cảnh bảo mật SELinux.
- Quyền truy cập – Lần cuối cùng tệp được truy cập.
- Sửa đổi – Lần cuối cùng nội dung của tệp được sửa đổi.
- Thay đổi – Lần cuối cùng thuộc tính hoặc nội dung của tệp được thay đổi.
- Ngày sinh – Thời gian tạo tệp (không được hỗ trợ trong Linux).
Hiển thị thông tin về hệ thống tệp
Để nhận thông tin về hệ thống tệp nơi tệp nhất định cư trú, thay vì thông tin về chính tệp đó, hãy sử dụng tùy chọn -f
, ( --file-system
):
stat -f file.txt
Đầu ra của lệnh sẽ giống như sau:
File: "package.json" ID: 8eb53097b4494d20 Namelen: 255 Type: ext2/ext3 Block size: 4096 Fundamental block size: 4096 Blocks: Total: 61271111 Free: 25395668 Available: 22265851 Inodes: Total: 15630336 Free: 13979610
Khi stat
được gọi với tùy chọn -f
, nó sẽ hiển thị thông tin sau:
- Tệp – Tên của tệp.
- ID – ID hệ thống tệp trong hex.
- Namelen – Độ dài tối đa của tên tệp.
- Kích thước khối cơ bản – Kích thước của mỗi khối trên hệ thống tệp.
- Các khối:
- Tổng số – Tổng số khối trong hệ thống tệp.
- Miễn phí – Số khối miễn phí trong hệ thống tệp.
- Có sẵn – Số lượng khối miễn phí có sẵn cho người dùng không phải root.
- Inodes:
- Tổng số – Tổng số inodes trong hệ thống tệp.
- Miễn phí – Số inodes miễn phí trong hệ thống tệp.
Dereference (Theo dõi) Các liên kết tượng trưng
Theo mặc định, stat
không tuân theo các liên kết tượng trưng . Nếu bạn chạy lệnh trên liên kết biểu tượng, đầu ra sẽ bao gồm thông tin về liên kết biểu tượng, không phải tệp mà nó trỏ tới:
stat /etc/resolv.conf
File: /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf Size: 39 Blocks: 0 IO Block: 4096 symbolic link Device: 801h/2049d Inode: 8126659 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2019-11-06 21:12:26.875956073 +0100 Modify: 2018-07-24 11:11:48.128794519 +0200 Change: 2018-07-24 11:11:48.128794519 +0200 Birth: -
Để bỏ tham chiếu (theo dõi) liên kết biểu tượng và hiển thị thông tin về tệp mà liên kết biểu tượng trỏ tới, hãy sử dụng tùy chọn -L
, ( --dereference
):
stat -L /etc/resolv.conf
File: /etc/resolv.conf Size: 715 Blocks: 8 IO Block: 4096 regular file Device: 17h/23d Inode: 989 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 101/systemd-resolve) Gid: ( 103/systemd-resolve) Access: 2019-11-06 20:35:25.603689619 +0100 Modify: 2019-11-06 20:35:25.555689733 +0100 Change: 2019-11-06 20:35:25.555689733 +0100 Birth: -
Tùy chỉnh đầu ra
Lệnh stat
có hai tùy chọn cho phép bạn tùy chỉnh đầu ra theo yêu cầu của bạn: -c
( --format="format"
) và --printf="format"
.
Sự khác biệt giữa hai tùy chọn này là khi hai hoặc nhiều tệp được sử dụng làm phần mở --format
sẽ tự động thêm một dòng mới sau mỗi đầu ra của toán hạng. Dấu gạch chéo ngược --printf
của phiên dịch thoát ra.
Có nhiều chỉ thị định dạng cho tệp và hệ thống tệp có thể được sử dụng với --format
và --printf
.
Ví dụ, để chỉ xem loại tệp, bạn sẽ chạy:
stat --format="%F" /dev/null
character special file
Bạn có thể kết hợp bất kỳ số lượng chỉ thị định dạng nào và tùy chọn sử dụng dấu phân tách tùy chỉnh giữa chúng. Dấu phân tách có thể là một ký tự đơn hoặc một chuỗi:
stat --format="%n,%F" /dev/null
/dev/null,character special file
Để diễn giải các ký tự đặc biệt như dòng mới hoặc tab, hãy sử dụng tùy chọn --printf
:
stat --printf='Name: %n\nPermissions: %a\n' /etc
\n
in một dòng mới:
Name: /etc Permissions: 755
stat
cũng có thể hiển thị thông tin ở dạng ngắn gọn. Định dạng này hữu ích cho việc phân tích cú pháp của các tiện ích khác.
Gọi lệnh với tùy chọn -t
( --terse
) để in đầu ra ở dạng ngắn gọn:
stat -t /etc
/etc 12288 24 41ed 0 0 801 8126465 147 0 0 1573068933 1573068927 1573068927 0 4096
Để có danh sách đầy đủ tất cả các chỉ thị định dạng cho tệp và loại hệ thống tệp man stat
hoặc stat --help
trong terminal của bạn.
Phần kết luận
Lệnh stat
in thông tin về các tập tin nhất định và hệ thống tập tin.
Trong Linux, một số lệnh khác có thể hiển thị thông tin về các tệp nhất định, với tệp ls
được sử dụng nhiều nhất, nhưng nó chỉ hiển thị một phần thông tin được cung cấp bởi lệnh stat
.
Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng để lại bình luận.