1 常见的可以执行的二进制文件格式
Linux ELF 可执行,可链接的文件格式
Windows PE
2 文件系统
rootfs:根文件系统 每一个文件都必须根文件的一个路径 或者说是都必须通过根文件系统才能访问
目录:路径
文件:叶子
FHS:文件系统层级标准 规定了linux发行版应该创建那些目录用来存储特定的文件
ls / 显示一级子目录:
/boot:系统启动相关的文件,如 内核,initrd ,以及grub(bootloader)
/dev: 设备文件 符号链接文件可以理解为windows的快捷方式
设备文件:
块设备: 随机访问的设备 (无所谓先后) 数据块 如磁盘,硬盘
字符设备: 线性访问的设备 (有次序的)按字符为单位,逐个字符访问
比如一个字符一个字符读入的设备的模型就是线性访问模型 鼠标键盘显示器都是线性设备
设备号: 主设备号(major)和次设备号(minor)
特殊文件是没有大小的,他们之间存储为元数据,而且是作为设备的访问入口存在的
/etc: 配置文件 大多数纯文本文件
/home:用户的家目录,每一个家目录通常默认为/home/USERNAME
/root:管理员的家目录
/lib: 库文件 和内核模块文件(/lib/modules) 库就是被调用封装好的某些功能 库文件没有程序的访问入口,所以是不能单独执行的,只能被调用
静态库: .a(Linux) .la(Windows)
动态库: .so[shared object共享库](Linux) .dll(Windows)
任何程序和数据都必须载入内存后才能被程序所使用
,
共享库好处在于第一个程序启动后,它如果用到某个共享库 ,它就会直接把共享库载入内存中 ,
其他程序如果在用的这个库就不用在载入内存了,所以这个库文件在内存中只用存储一份就行
静态库就不一样了,它是直接链接到程序的地址空间中去,而且是作为程序的一部分而运行的,
所以静态方式便于程序单个文件的管理
/lost+found: 这不算 这是任何一个新建分区上都会有的目录,它通常跟我们的文件系统相关,是用于存储那些文件系统中
机器突然断电时候,那些尚未保存的文件,所以它是为了实现丢失能够重新找回的这样一个目的的
挂载点目录:
/media:通常用于挂载移动设备 把某个设备跟当前文件系统上某一个目录相建立关联关系的过程就叫挂载的过程
/mnt: 通常额外的临时文件系统(如另一块硬盘等)
/misc: 杂项目录
/opt: 可选目录: 早期用于安装第三方程序安装目录
/proc: 伪文件系统:内核映像文件 事实上这个目录中没有任何内容,这个目录其实是空的,但系统启动后就不是空的了
这里面所显示的文件其实是内核映射文件,所以这里面大多数文件都是内核中的可调参数或者是内核工作的统计数据
所以,我们想改变操作系统的根本工作属性,通常都是改变这个目录下某个文件完成的,因为事实上你改的不是文件而是内核属性
它们只不过被映射成了文件,都是假文件,它们只不过表现出文件的样子
/sys伪文件系统: 跟硬件设备相关属性的映射文件 通常用于硬件设备的管理
/tmp 临时文件系统: 公共的临时文件 一般每隔一个月会自动清除没有访问的文件 每个人都可以在该目录下创建文件 ,但删除只能删除自己的
/var 可变化文件:
这个与系统启动功能相关
/bin : binary 可执行文件(二进制) 用户命令
/sbin: 管理命令
/usr: share,read-only 全局的共享的只读文件
这个与系统平时功能相关
/usr/bin
/usr/sbin
/user/lib
/user/local:第三方软件
/user/local/bin
/user/local/sbin
/user/local/lib
命名规则:
1,文件名不能超过255个字符
2,不能使用/当文件名
3,严格区分大小写
相对路径:相当于当前位置查找的路径
绝对路径:由根开始
文件管理
目录管理
ls
cd
pwd
mkdir:创建空目录
-p:自动创建父目录
{}:命令行展开
~:波浪线展开
-v: verbose 显示详细信息
-pv创建目录并显示其创建过程
创建目录 /mnt/test/x/m,y ?
mkdir -pv /mnt/test/{x/m,y} {}花括号展开或者叫命令行展开 当它遇见花括号的时候会自动把逗号分隔的路径自动展开为两个路径
mkdir -pv /mnt/test/{x,y}/m x,y路径下各有一个m
创建a_b,a_c,d_b,d_c这几个目录都在/mnt/test目录下
(a+d)(b+c)=ad+ac+db+dc
mkdir -pv /mnt/test/{a,d}_{b,c} {x,y}/m = x/m y/m {a,d}_{b,c}=a_b a_c d_b d_c
tree:查看目录树
rmdir:(remove directory)删除目录 只能删除空目录 remdir -p只能删除的是一脉单传的目录 (只有一个分支的目录)
比如删除test目录 必须先删除其下面的空目录后才能删除该目录
文件创建和删除 file显示文件 目录也是文件 在linux目录和文件是不能重名的
touch: touch a 创建文件a 默认修改为当前时间
touch主要用来修改文件的时间戳的 如果修改这个文件不存在,就会默认创建一个
touch -c 不创建任何文件 只修改时间戳
touch -a 只改变访问时间
touch -m 只改变修改时间
-t 修改为指定的时间 touch -m -t 201412121212 a 这样就把a文件的修改时间指定为2014 1212 1212
一个文件都有三个时间戳: 最近一次的访问时间 最近一次的修改时间(内容) 最近一次的改变时间(属性)
stat 显示文件或者系统的状态信息
创建文件,也可以使用文件编辑器 文本编辑器:只是编辑纯ASCIT码的 word叫文字处理器不是文本编辑器
nano 简单的文本编辑器
nano a 编辑文件a的内容 ^表示Crtl键
删除文件 rm a 删除文件a
rm是rm -i的别名
-f强行删除
-r递归删除目录 就是删除这个目录下所以文件
rm -rf / 删除根目录以及根目录下所有文件
-i提示管理要不要删除
\\rm 使用rm自身 当我们想使用这个命令自身而不是别名 可以在这个命令前加\\
运行程序
设备管理
软件管理
进程管理
网络管理