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
每月 295 次下载
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目录)以及根据这些变量提供其他路径。