#linux #permissions #size #owner #filesystem #windows-file

no-std linux-file-info

本库用于以开发者友好的方式收集关于 Linux 实体(文件、文件夹或符号链接)的有用信息。

5 个版本 (3 个重大更新)

0.4.0 2024 年 6 月 9 日
0.3.0 2024 年 5 月 11 日
0.2.0 2024 年 1 月 23 日
0.1.1 2024 年 1 月 16 日
0.1.0 2024 年 1 月 13 日

#304 in Unix API

Download history 175/week @ 2024-05-07 12/week @ 2024-05-14 10/week @ 2024-05-21 159/week @ 2024-06-04 35/week @ 2024-06-11 5/week @ 2024-06-18

每月 295 次下载

MIT 许可证

20KB
326 行代码(不含注释)

Linux File Info - Linux 实体检查器

本库用于以开发者友好的方式收集关于 Linux 实体(文件、文件夹或符号链接)的有用信息。

这是 windows-file-info 库的并行库,用于在 Windows 上处理相同的任务,也是我开发的。如果您需要 Windows 的实体检查器,请查看该库。

它基本上以不同的方式调用 "sudo ls -l" 并优雅地解析输出。

如果您喜欢这个库,请在该库的 github 仓库 上给它一个星标

它主要使用有关所有实体的那个结构体


#[derive(Debug)]
pub struct LinuxEntity {
    pub entity_name: String, // current name of the entity
    pub entity_type: String, // type of the entity, file, folder or symlink.
    pub owner: String, // owning user of the  entity
    pub group: String, // 
    pub hardlink: u8,
    pub permission: u16, // permission as numbers.
    pub size: i32, // as bytes.
    pub last_change_date: String, // example: Jan 12 20:49
}

示例用法

免责声明:您可以给所有 other_folder_info()file_info() 以及其他函数提供绝对路径。

use linux_file_info::*;

fn main(){
    let current_folder = current_folder_info();

    // assuming you have "hello-everyone" folder near to the that project's folder:
    let other_folder = other_folder_info("../hello-everyone");

    // checking /etc/nftables.conf file with absolute path. It also gets info of symlinks:
    let check_cargo_file = file_info("/etc/nftables.conf");

    // checking if Cargo.toml is file:
    let cargo_toml_is_file = is_file("Cargo.toml");

    // checking if src is folder:
    let src_is_folder = is_folder("src");

    // checking if Cargo.lock is a symlink:
    let cargo_lock_is_symlink = is_symlink("Cargo.lock");

    // checking if sfsdfsfds is exist:
    let sfsdfsfds_is_exist = is_exist("sfsdfsfds");

    // checking the current user:
    let who_am_i = get_current_user();


}

注意:current_folder_info() 函数基于您的当前目录工作。如果您在计算机的根目录上运行此命令,您将得到以下类型的响应

[
    LinuxEntity {
        entity_name: "Docker",
        entity_type: "folder",
        owner: "root",
        group: "root",
        hardlink: 3,
        permission: 755,
        size: 4096,
        last_change_date: "Jul 8 2023",
    },
    LinuxEntity {
        entity_name: "bin",
        entity_type: "symlink",
        owner: "root",
        group: "root",
        hardlink: 1,
        permission: 777,
        size: 7,
        last_change_date: "May 2 2023",
    },
    LinuxEntity {
        entity_name: "boot",
        entity_type: "folder",
        owner: "root",
        group: "root",
        hardlink: 2,
        permission: 755,
        size: 4096,
        last_change_date: "Apr 18 2022",
    },
    LinuxEntity {
        entity_name: "dev",
        entity_type: "folder",
        owner: "root",
        group: "root",
        hardlink: 16,
        permission: 755,
        size: 3560,
        last_change_date: "Jan 13 15:33",
    },
    LinuxEntity {
        entity_name: "etc",
        entity_type: "folder",
        owner: "root",
        group: "root",
        hardlink: 81,
        permission: 755,
        size: 4096,
        last_change_date: "Jan 13 15:33",
    },
    LinuxEntity {
        entity_name: "home",
        entity_type: "folder",
        owner: "root",
        group: "root",
        hardlink: 3,
        permission: 755,
        size: 4096,
        last_change_date: "Jul 8 2023",
    },

    // other entities
]

另一个示例,如果您在计算机的主目录上使用 "other_folder_info("./etc/ssh")" 参数运行 "other_folder_info()" 函数,您将得到以下类型的响应


[
    LinuxEntity {
        entity_name: "ssh_config",
        entity_type: "file",
        owner: "root",
        group: "root",
        hardlink: 1,
        permission: 644,
        size: 1650,
        last_change_date: "Nov 23 2022",
    },
    LinuxEntity {
        entity_name: "ssh_config.d",
        entity_type: "folder",
        owner: "root",
        group: "root",
        hardlink: 2,
        permission: 755,
        size: 4096,
        last_change_date: "Nov 23 2022",
    },
]

您有 2 种方式提供绝对和更可靠的路径

1 - 您可以在参数上提供绝对路径,如下所示:other_folder_info("/sys/dev/block")file_info("/sys/dev/block/1:0")

2 - 您可以使用这些函数,通过定义一些bash变量(如当前用户的家目录或/root目录)以及根据这些变量提供其他路径。

无运行时依赖