文章目录

  • 1. Linux文件类型
    • 1.1 一般文件介绍
    • 1.2 目录文件介绍
    • 1.3 其他介绍
  • 2. ls命令
  • 3. 可执行文件后缀
  • 4. linux的.a文件,.so文件等理解/动态链接库和静态链接库
  • 5. 文件属性/权限

1. Linux文件类型

参考:File types In Linux/Unix explained in detail. 我就是翻译一下

一般认为Unix中有3类文件,分别是

  • 一般文件(Regular files),-
  • 目录文件(Directory files),d
  • 特殊文件,其中包含五种子类型)(Special files)
    • 块设备——Block file(b)
    • 字符设备 ——Character device file©
    • 管道——Named pipe file or just a pipe file§
    • 符号链接——Symbolic link file(l)
    • 套接字——Socket file(s)

其实Sun Solaris中还存在另一种文件类型,名为door file(D)。door是一种特殊的文件,用于客户端和服务器之间的进程间通信(因此,其实在Unix中,一共有8种文件类型)。

1.1 一般文件介绍

ls -l或者ll命令输出结果中,每行第一个字符为-的,就是普通文件,一般会是

  • 可读文件,
  • 或者 二进制文件
  • 或者 图像文件
  • 或者 压缩文件 等

如何创建一般文件?

  • 在linux中,只需要使用touch/vi 命令,创建出来的文件,保存后就是一般文件

如何例举出所有的一般文件?

hs@hs:~$ ls
KGBench      KgCLUEbench-main  main.zip                                 nebula-graph-studio                      outputs
KgCLUE-main  logs              nebula-graph-2.6.1.ubuntu2004.amd64.deb  nebula-graph-studio-3.1.0.x86_64.tar.gz

使用ls -l | grep ^- 命令,就只会列出,一般文件了(如果使用的CLI比较好,-还会用颜色高亮)


1.2 目录文件介绍

目录文件一般会包含 存储在物理设备上的一般文件/文件夹/特殊文件。同时使用蓝色表示,一般链接数≥2,(链接数就是ll命令第二列)

  • 和一般文件类似,筛选目录文件只需要ls -l | grep ^d

    输出也会使用颜色对d进行高亮
  • 创建目录文件使用,mkdir your_categary

1.3 其他介绍

其他和上面也都是类似,包括如何创建,和如何列出这类型文件,整理成表格如下:

类型 创建 筛选
块设备 `ls -l grep ^b`
字符设备 `ls -l grep ^c`
管道 `ls -l grep ^p`
软链接 `ls -l grep ^l`
套接字 `ls -l grep ^s`

2. ls命令

  • 参考菜鸟教程-ls命令

使用ls -l或者ll查看文件详细信息。

  • 从上面可以看到,每一行都有7列,分别是:
  • 第一列共10位,第1位表示文档类型
    • d表示目录,-表示文件,l表示链接文件,d表示可随机存取的设备,如U盘等,c表示一次性读取设备,如鼠标、键盘等。
    • 后9位,依次对应三种身份所拥有的权限,身份顺序为:owner、group、others,权限顺序为:readable、writable、excutable。如:-r-xr-x—的含义为当前文档是一个文件,拥有者可读、可执行,同一个群组下的用户,可读、可执行,其他人没有任何权限。
  • 第二列表示链接数,表示有多少个文件链接到inode号码。
  • 第三列表示拥有者
  • 第四列表示所属群组
  • 第五列表示文档容量大小,单位字节
  • 第六列表示文档最后修改时间,注意不是文档的创建时间哦
  • 第七列表示文档名称。以点(.)开头的是隐藏文档

例如:

  • 对于第二行,也就是文件anyq_deps来说,其第一列内容为-rw-r--r--,其中第一个符号是-(英文字符减号),在linux中,这样的字符开头就表示普通文件(regular file)

    • 这些文件一般是用相关的应用程序或系统命令创建,比如touch、cp、tar等工具命令。普通命令的删除方式可以使用rm命令。
    • 提示:windows下的doc、ppt、zip、jpg等格式的文档在linux下都属于普通文件。
  • 对于最后一行,也就是文件夹third_party来说,其第一列内容为drwxr-xr-,其中第一个符号是d,表示目录类型
    • 如果仅仅想看目录权限属性时,可以使用ls的-d参数,搭配组合为ls -ld 目录名
    • 创建目录的命令可以用mdkir命令,或cp可以把一个目录复制为另一个目录。删除用rm -r或rmdir(删除空目录才可以)命令。
  • 执行ls -F,返回结果时可以直接区别目录和文件,每个目录的后面多了个斜线。如下:
    • 关于-F参数的解释:
      -F, --classify             append indicator (one of */=>@|) to entries--file-type            likewise, except do not append '*'--format=WORD          across -x, commas -m, horizontal -x, long -l,single-column -1, verbose -l, vertical -C--full-time            like -l --time-style=full-iso
    
    • 代表可执行文件
    • / 代表目录
    • 代表链接文件
    • | 代表管道文件
    • 代表套接字
    • > 代表进程间通讯设备

参考:

  • linux中输入ls -F后,**@,文件名后的@代表什么意思?
  • 三、Linux系统中的文件类型和文件扩展名

3. 可执行文件后缀

  • 在linux中,可执行文件一般没有后缀,
  • 因为linux可以自动识别文件类型,有很多类型都不用加后缀。
  • 只要设了执行权限,有elf文件头,就可以看成可执行文件,即便是纯文本文件也可以看成是可执行的脚本。
  • 一部分下载的商业软件安装程序之类的可执行文件有.bin的后缀。有些时候可执行文件的后缀名为.out。
  • Linux下的后缀名并没用windows下那么有用,Linux不根据扩展名判断文件类型,而是根据文件的内容来判断。所以扩展名的作用是帮助人来识别文件,对于Linux系统本身来说没有什么用处。

可执行文件:
指计算机的操作系统能够解释并执行的二进制代码文件。最初的可执行文件包括代码段、数据段、堆栈段和扩展段等。代码段存放了计算机的执行指令,即CPU要进行的操作指令,数据段存放了CPU要用到的数据,堆栈段则存放了与寄存器有关的信息等等。现在你觉得许多文件都能够被计算机执行,是因为操作系统已经做得比较人性化,例如你双击一个文本文件(*.txt),该文件即被打开,这是因为操作系统调用了Notepad.exe这个可执行文件打开了这个文本文件。实际上,被执行的文件是Notepad.exe,而文本文件只是Notepad.exe的执行目标

  • 所以在linux系统中,使用ls命令返回的内容中,绿色显示的文件就都是可执行文件,没有后缀。

elf:(Executable and Linking Format)是可执行连接格式
可执行连接格式是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface(ABI)而开发和发布的。工具接口标准委员会(TIS)选择了正在发展中的ELF标准作为工作在32位INTEL体系上不同操作系统之间可移植的二进制文件格式。

参考:

  • linux的可执行文件是什么后缀
  • linux下的三种可执行文件格式的比较

4. linux的.a文件,.so文件等理解/动态链接库和静态链接库

  • .o 就相当于windows里的obj文件 ,一个.c或.cpp文件对应一个.o文件
  • .a 是好多个.o合在一起,用于静态连接 ,即STATIC mode,多个.a可以链接生成一个exe的可执行文件
  • .so 是shared object,用于动态连接的,和windows的dll差不多,使用时才载入。

(注意,上面这几个链接库文件并不是可执行文件,其可以被可执行文件调用!)

参考:

  • linux 下 .o 文件, .a文件,.so文件的区别
  • Linux中的动态库和静态库(.a/.la/.so/.o)
  • Linux系统中“动态库”和“静态库”那点事儿

  • 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。
  • 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。 windows上对应的是.lib .dll linux上对应的是.a .so
  • 所谓静态、动态是指链接,下图是一个典型的编译过程
  • 静态库之所以成为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。
  • 试想一下,静态库与汇编生成的目标文件一起链接为可执行文件,那么静态库必定跟.o文件格式相似。其实一个静态库可以简单看成是一组目标文件(.o/.obj文件)的集合,即很多目标文件经过压缩打包后形成的一个文件。
  • 静态库特点总结:
    • 静态库对函数库的链接是放在编译时期完成的。
    • 程序在运行时与函数库再无瓜葛,移植方便。
    • 浪费空间和资源,因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件。
  • 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入。
  • 不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,规避了空间浪费问题。
  • 动态库在程序运行是才被载入,也解决了静态库对程序的更新、部署和发布页会带来麻烦。用户只需要更新动态库即可,增量更新。
  • 动态库特点总结:
    • 动态库把对一些库函数的链接载入推迟到程序运行的时期。
    • 可以实现进程之间的资源共享。(因此动态库也称为共享库)
    • 将一些程序升级变得简单。
    • 甚至可以真正做到链接载入完全由程序员在程序代码中控制(显示调用)

参考:

  • Linux 中的动态链接库和静态链接库是干什么的?

5. 文件属性/权限

参考菜鸟教程:Linux 文件基本属性

linux中文件类型说明及文件权限相关推荐

  1. linux鉴于它没有文件拓展名,linux中的文件类型以及查看文件类型的方法

    Linux文件类型和文件的文件名所代表的意义是两个不同的概念,在linux中文件类型与文件扩展名没有关系.它不像Windows那样是依靠文件后缀名来区分文件类型的,在linux中文件名只是为了方便操作 ...

  2. Linux中.a,.la,.o,.so文件的意义和编程实现

    Linux中.a,.la,.o,.so文件的意义和编程实现 (转) Linux下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows中的.obj文件 .so 为共享库, ...

  3. RHCSA (二) —— 常用简单命令Linux文件类型目录操作命令文件操作命令

    RHCSA 第二天 一.常用简单命令 1.timedatectl命令 timedatectl命令中的参数以及作用 2.reboot命令 3.poweroff命令 4.wget命令 wget命令的参数以 ...

  4. linux中使用scp远程拷贝文件及文件夹

    linux中使用scp远程拷贝文件及文件夹 linux scp远程拷贝文件及文件夹,需要的朋友可以参考下 1.拷贝本机/home/wtf/test整个目录至远程主机192.168.100.1的/roo ...

  5. 在Linux中查找和删除重复文件的4种方法

    大神教你在Linux中查找和删除重复文件的4种方法 在本教程中,您将学习如何使用rdfind和fdupes命令行工具以及称为DupeGuru和FSlint的GUI工具在Linux中查找和删除重复文件. ...

  6. linux scp 过滤文件夹,linux中使用scp远程拷贝文件及文件夹

    linux中使用scp远程拷贝文件及文件夹 linux scp远程拷贝文件及文件夹,需要的朋友可以参考下 1.拷贝本机/home/wtf/test整个目录至远程主机192.168.100.1的/roo ...

  7. linux不同用户文件,Linux中不同用户之间复制文件的两个方法

    Linux中不同用户之间复制文件的两个方法 前言 考虑如下情景:foo用户home目录下有一文件file.txt,要将其copy至bar用户的home目录.Linux对用户home目录有严格的权限限制 ...

  8. linux ls 命令 路径,使用ls命令在Linux中使用完整路径列出文件

    许多人会发现,这是重复的问题,但我已经经历了所有问题,然后问及这个主题,但没有为我工作.使用ls命令在Linux中使用完整路径列出文件 我想打印使用ls命令的特定文件格式的完整路径名到目前为止,我发现 ...

  9. Linux中如何用命令打开文件夹

    Linux中如何用命令打开文件夹 文章目录: 一.点击Linux桌面文件图标打不开 二.解决方式 三.杀死所有nautilus相关进程 你是否遇到过Linux桌面文件图标打不开,我就遇到过,此时我的眼 ...

  10. Linux 中如何复制和删除文件夹中的所有文件?

    Linux 中如何复制和删除文件夹中的所有文件? 1.复制文件 目标文件目录必须存在 (1) 直接复制 cp /hone/user/temp/test.c /home/user/ (2) 复制并重命名 ...

最新文章

  1. LeetCode简单题之检查某单词是否等于两单词之和
  2. 【numpy】np.genfromtxt非常的慢,并且需要读取文件的10倍内存
  3. 【dfs】【树】机器选择
  4. Cocos2d-3.x目录介绍分析
  5. 均方根误差RMSE(Root Mean Square Error)
  6. 华为交换机基本配置命令
  7. java web start 参数_学习笔记(二)Eclipse设置 Servlet配置及初始化参数读取 及Servlet应用...
  8. 【python教程入门学习】利用Python自动生成暴力破解的字典
  9. 使用Strophe连接xmpp,轻松构建web即时聊天工具
  10. 速看四川省企业技术中心拟认定名单已发布,共181家
  11. 拿姐姐身份证登记结婚竟然成了!婚姻户籍信息共享难在哪儿
  12. 【论文分享】ACL 2020 立场检测相关研究
  13. 云桌面VOI计算存储在服务器端,介绍三种云桌面:VDI、IDV、VOI
  14. Everything研究之读取NTFS下的USN日志文件(2)
  15. 聊聊Benchmark测试【转载】
  16. webstorm注册码
  17. HDLBits Bulid a circuit from a simulation wavefrom 系列
  18. java截取视频生成图片_Java截取视频帧,生成图片
  19. WCF实现全双工通信笔记
  20. pc游戏端(QQ飞车)

热门文章

  1. 测试绝地求生显卡使用率软件,测试方法及平台细节:两套Core i7-8700K平台一起测...
  2. 二叉树排序——c语言实现
  3. 【软件工程】第1章软件工程概论之软件过程
  4. 仕事はどんなことか?
  5. ITK-SNAP 安装和使用
  6. 电商架构设计与开发 - 20分布式组件-SpringCloud Alibaba简介
  7. 【跟学C++】面向对象三大特征——继承(Study20)
  8. git pull时报合并冲突的bug
  9. HTML弹出对话框功能大全
  10. python3 抓取西刺网免费代理IP并验证是否可用