一、Linux目录结构
1.1目录起源
由于 Linux 系统免费开源,使得 Linux 发行版本有很多,利用 Linux 开发产品的团队也有很多,如果任由每个人都按照自己的想法来配置 Linux 系统文件目录,后期可能会产生诸多的管理问题。试想,如果你进入一家公司,所用 Linux 系统的文件目录结构与所学的完全不同,实在令人头疼。
为了避免诸多使用者对 Linux 系统目录结构天马行空,Linux 基金会发布了 FHS 标准。多数 Linux 发行版系统都遵循这一标准。
- FHS 标准
FHS(Filesystem Hierarchy Standard),文件系统层次化标准,该标准规定了 Linux 系统中所有一级目录以及部分二级目录的用途。发布此标准的主要目的就是为了让用户清楚地了解每个目录应该存放什么类型的文件。
FHS 认为,Linux 系统的根目录(/)最为重要(没有之一),其原因有以下 2 点:
(1) 所有目录都是由根目录衍生出来的;
(2) 根目录与系统的开机、修复、还原密切相关;
因此,根目录必须包含开机软件、核心文件、开机所需程序、函数库、修复系统程序等文件。
1.2常见的子目录
| 根(/) | 根(/)相当于一个入口,文件的总入口,也是唯一入口 |
|---|---|
| /root | 系统管理员root的上级目录 |
| /home | 普通用户的家目录的上级目录 |
| /boot | 系统内核、启动文件 |
| /dev | 设备文件(黄色)硬件文件 |
| /etc | 配置文件等同于Windows的注册表,一般是文本文件 |
| /bin | 所有用户可执行的命令,默认使用较多所有用户软连接文件 |
| /sbin | 管理员可执行的管理命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看 |
| /user | 应用程序 |
| /var | 日志文件等 |
| /run | 运行的内存中的文件 |
| /tmp | 临时文件。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
| /lib | 动态库文件,类似于windows的dll文件 |
| /proc | 存放映射系统文件 |
| /media | 可移动设备,系统建议用来挂载媒体设备,如软盘和光盘 |
| /mnt | 默认挂载点 |
| /opt | 第三方应用程序安装所在目录 |
1.3 常见非一级目录
usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。
Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。
| 子目录 | 功能(作用) |
|---|---|
| /usr/bin/ | 存放系统命令,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行。 |
| /usr/sbin/ | 存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。 |
| /usr/lib/ | 应用程序调用的函数库保存位置。 |
| /usr/XllR6/ | 图形界面系统保存位置。 |
| /usr/local/ | 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置。 |
| /usr/share/ | 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录。 |
| /usr/src/ | 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过笔者更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中 |
| /usr/include | C/C++等编程语言头文件的放置目录 |
二、Linux应用程序基础
2.1应用程序与系统命令的关系
1、文件位置
- 系统命令:一般在/bin和/sbin目录中,或为Shell内部指令
- 应用程序:通常在/usr/bin和/usr/sbin目录中
2、主要用途
- 系统命令∶完成对系统的基本管理工作,例如IP配置工具
- 应用程序∶完成相对独立的其他辅助任务,例如网页浏览器
3、适用环境
- 系统命令:一般只在字符操作界面中运行
- 应用程序∶根据实际需要,有些程序可在图形界面中运行
4、运行格式
- 系统命令:一般包括命令字、命令选项和命令参数
- 应用程序:通常没有固定的执行格式
三、查看及检索文件
2.1查看及检索文件——cat命令
- 作用:显示并连接文件内容
基本格式:cat [选项] 文件名... 常用选项:
| -n: | 对所有输出的行数编号 |
|---|---|
| -b: | 对于空白行不编号 |
| -s: | 将所有的连续的多个空行替换为一个空行 |
- 列一 : 直接展示文本内容
- 查找多个文件
- 反向查找——tac
- 例二:用-n对所有输出行数标号,包括空白行
- 例三:使用-b对于空白行不编号,跳过空行
- 例四:使用-s将所有的连续的多个空行压缩成一个空行
- 例五:使用-A显示看不见的字符,隐藏字符
2.2分页查看文件内容— —more命令
-
作用:全屏方式显示分页内容
-
命令格式:
more [选项] 文件名
-
用户操作的方法:
- 按Enter键向下逐行滚动
- 按空格键向下翻一屏
- 按b键向上翻一屏
- 按q键退出
- 缺点:下翻到最后一页后会自动退出
- 结合管道符(管道符:上一条命令的结果传给下一个命令)
- 列一、查看文件:more yxp.txt
- 列二、结合管道:Is -R /etc| more无法向上翻页,也不会出现进度条
2.3分页查看文件内容——less命令
-
作用:与more命令相同,但是扩展功能更多
-
命令格式:
less [选项] 文件名...
-
用户操作的方法:
- Page Up向上翻页,Page Down向下翻页
- 按 "/"键查找内容, "n”下一个内容,"N”上一个内容
- 通过 ↑ 和 ↓ 方向键可以实现上下逐行滚动
- 其他功能与more命令基本类似
- 下翻到最后一页后不会自动退出
- 结合管道操作使用时可以向上翻页(管道符:上一条命令的结果传给下一个命令)
- 列一、
- 列二、
2.4查看开头部分内容——head命令
-
作用:查看文件开头一部分内容,默认10行
-
命令格式:
head [-n] 文件名 #n为行数
-
列子
2.5查看结尾部分内容——tail命令
-
作用:查看文件结尾一部分内容,默认10行
-
命令格式:
- tail -n 文件名
- tail -f 文件名 #实时查看,监控
- 列子
2.6统计文件内容——wc命令
-
作用:统计
-
命令格式:
| -l | 行数 |
|---|---|
| -w | 单词数 |
| -c | 字节数 |
- 列子
2.7检索、过滤文件内容——grep
-
作用:在文件中查找并显示包含指定字符串的行
-
命令格式:grep [选项]... 查找条件 目标文件
选项说明
| -i: | 查找时忽略大小写 |
|---|---|
| -v: | 反向查找,输出与查找条件不相符的行 |
| -o: | 只显示匹配项 |
| -f : | 对比两个文件的相同行 |
| -l : | 列出文件内容符合指定样式的文件名称。 |
| -L : | 列出文件内容不符合指定样式的文件名称。 |
| -n: | 显示匹配行及行号 |
| -c : | 计算符合样式的行数。 |
| -e : | 实现可多个查找条件的匹配,逻辑or(或)关系 |
| -E 'pattern1.*pattern2' : | 实现可多个查找条件的匹配,逻辑and(且)关系 |
基本格式
-
要查找的字符串以双引号括起来,单引号也可以
-
“^……”表示以……开头
-
“……$”表示以……结尾
-
“^$”表示空行
-
例一:grep -n “f” yz.txt 查找包含“f”的,显示出符号的行数
- 例二:grep -i “f” yz.txt 不区分大小写查询包含“f”的
- 例三: grep -v “f” yz.txt 显示没有匹配“f”的,反过来查询
- 例四:grep -c “f” yz.txt 显示符号匹配的行数
- 例五:grep -vi “f” yz.txt 组合查询,显示不包括大小写的“f”的
- 例六:grep -e “1” -e “2” yz.txt 查询包含“1”的或包含“2”的
- 例七: grep -i “^a” yz.txt 不区分大小写查询以“a”开头的
- 例八: grep -i “f$” yz.txt 不区分大小写查询以“f”结尾的
- 例九:使用管道:ifconfig | grep netmask | head -n 1
2.8 which
which 用来查看命令的位置。 在PATH变量指定的路径中,搜索某个系统命令的位置 。
命令格式:
which 命令/程序名
- 列子
2.9 whereis
whereis 用来查找命令的具体位置。可以查看到二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
- 列子
四、备份与恢复文档
4.1压缩解压缩命令——gzip、bzip2
-
作用:制作压缩文件和解压缩文件
-
命令格式:
-
gzip [-9] 文件名 //制作压缩文件 -
bzip2 [-9] 文件名 //制作压缩文件
- 特点:
- 当使用gzip压缩一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。
- gzip制作的压缩文件默认的扩展名为".gz" 原始文件不再保留
- bzip2制作的压缩文件默认的扩展名为“.bz2”,原始文件不再保留
- 常用命令选项:
- -9:压缩等级,指令的值可为1 (压缩速度最快,最低的压缩质量)至9 (最慢的压缩速度,压缩率最高)之间的整数,其默认值为6 (压缩速度和压缩质量较为平衡的值)
- -d:用于解压缩已经压缩过的文件,相当于使用gunzip、bunzip2命令
- 列子:
4.2压缩解压缩命令 —— gunzip、bunzip2
- 基本格式:
- gunzip -d .gz格式的压缩文件 #解开压缩文件
- bunzip2 -d .gz格式的压缩文件 #解开压缩文件
- 特点:
1.无法压缩文件夹
2.压缩后源文件消失
3.用-k选项,bzip2可保留源文件,gzip不可以
- 列子
4.3制作归档文件命令 —— tar
1. 作用:制作和释放归档文档
2. 基本格式:
3. tar [jcvf]... 归档文件名 源文件或目录
4. tar [jxvf]... 归档文件名 [-C 目标目录]
5. tar [zcvf]... 归档文件名 源文件或目录
6. tar [zxvf]... 归档文件名 [-C 目标目录]
-
选项
-
c 创建 .tar格式的包文件,一般都带;
-
x 解开 .tar格式的包文件;
-
v 输出详细信息(Verbose ),制作tar包或解开tar包时。显示过程;
-
表示使用归档文件,-f这个是tar包。无论制作还是解开都要加;
-
P 打包时,保留原权限;
-
t 不解开tar包时,列表查看包内的文件;
-
C 指定解压的目录,解压时指定释放的目标文件夹;
-
z 调用gzip程序进行压缩或解压。
-
j 调用bzip2程序进行压缩或解压;
4.3.1制作归档备份文件
- 列一:
- 列二: