linux 查看文件中数据类型,Linux下使用file命令确定文件中数据的类型-文件类型...

青年是学习智慧的时期,中年是付诸实践的时期。——卢梭

在Linux系统中查看一个文件之前,要先确定该文件中数据的类型,之后再使用适当的命令或方法打开该文件。

与windows系统不同,在Linux系统中文件的扩展名并不代表文件的类型,因此在打开前要确认文件的类型。

file命令

例如:

root@promote:~# file game.txt

game.txt: ASCII text, with CRLF line terminators

root@promote:~#

先来确定由windows操作系统发过来的game.txt文件的类型,从我加粗的部分可以看出是一个纯文本文件,显示结果比较多,这是因为该文件是在windows操作系统上生成的。

现在,可以看看由linux系统生成的文件lists的类型,与windows系统中的文件进行简单的比较。

root@promote:~# file lists

lists:ASCII text

结果表明文件内容是ASCII码的正文,可以看出,两者还是有细微差别的。

33c3ecc7942ba9994639cce9dee24048.png

接下来查看windows系统发过来的图像文件的文件类型

root@promote:~# file 2.jpg

2.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 313x161, frames 3

root@promote:~#

从加粗部分可以看出2.jpg是JPEG的图像数据

也可以用file命令确定/bin目录下的pwd的文件类型,该命令之前介绍过,下面介绍其具体的使用

root@promote:~# file /bin/pwd

/bin/pwd: ELF 32-bit LSBexecutable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=3e8092a6296ac67759703d000ea967ccedb3425b, stripped

从加粗部分可看出pwd是一个可执行文件,原来linux的一些命令就是以可执行文件的形式存放在系统中的。

细心的你可能会发现其实file显示的结果与带有-F的ls命令的显示结果基本一致,只不过file命令的结果显示的信息更详细而已。

c1d7e142b2a7aaae0384af767c6c8957.png

今天就分享这么多了,谢谢欣赏!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 Linux C 语言程序,用于在内存映射一个文件,然后在内存存储一个 map 类型数据: ```c #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <sys/mman.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <stdbool.h> #include <stdint.h> #include <map> #define FILE_SIZE 1024 typedef struct { int id; char name[20]; } Person; int main() { int fd; Person *p_map; std::map<int, Person> *person_map; if ((fd = open("file", O_RDWR | O_CREAT | O_TRUNC, 0666)) < 0) { perror("open error"); exit(1); } lseek(fd, FILE_SIZE - 1, SEEK_SET); write(fd, "", 1); if ((p_map = (Person *) mmap(NULL, FILE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED) { perror("mmap error"); exit(1); } person_map = new(std::nothrow) std::map<int, Person>; // 将映射区域数据读入 map for (int i = 0; i < FILE_SIZE / sizeof(Person); i++) { if (p_map[i].id > 0) { (*person_map)[p_map[i].id] = p_map[i]; } } // 在 map 插入新的数据 Person new_person = {1001, "Alice"}; (*person_map)[new_person.id] = new_person; // 将 map 数据写回到映射区域 int i = 0; for (auto it = person_map->begin(); it != person_map->end(); it++) { memcpy(&p_map[i++], &(it->second), sizeof(Person)); } munmap(p_map, FILE_SIZE); close(fd); return 0; } ``` 上面的代码,我们首先创建了一个文件,然后使用 mmap 函数将该文件映射到内存。接着,我们使用 C++ STL 的 map 类型来存储数据,这个 map 类型的 key 是 int 类型,value 是 Person 类型的结构体。我们从映射的内存区域读取数据,将其存储到 map ,然后在 map 插入新的数据,并将 map 数据写回到映射区域。最后,我们释放映射的内存区域,并关闭文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值