文章目录
一、Linux目录结构及特点
1.1 目录结构
由于 Linux 系统免费开源,使得 Linux 发行版本有很多,利用 Linux 开发产品的团队也有很多,如果任由每个人都按照自己的想法来配置 Linux 系统文件目录,后期可能会产生诸多的管理问题。试想,如果你进入一家公司,所用 Linux 系统的文件目录结构与所学的完全不同,实在令人头疼。
为了避免诸多使用者对 Linux 系统目录结构天马行空,Linux 基金会发布了 FHS 标准。多数 Linux 发行版系统都遵循这一标准。
FHS(Filesystem Hierarchy Standard,目录层次标准)定义了两层规范:第一层是 “/” 目录下的各个目录应该存放什么数据文件,例如:/etc目录下放置系统的配置文件,而/bin和/sbin放置程序及系统命令。第二层是针对/usr和/var这两个目录的的子目录来定义,例如:/var/log下存放的是系统日志文件等。
FHS 认为,Linux 系统的根目录(/)最为重要(没有之一),其原因有以下 2 点:
1. 所有目录都是由根目录衍生出来的;
2. 根目录与系统的开机、修复、还原密切相关;
常用的一级目录:
一级目录 | 作用 |
---|---|
/bin/ | 存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行 |
/boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
/dev/ | 此目录保存了接口设备文件 |
/etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 |
/home/ | 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 lz 的主目录就是 /home/lz |
/lib/ | 系统调用的函数库保存位置 |
/media/ | 挂载目录。系统建议用来挂载媒体设备,如软盘和光盘 |
/mnt/ | 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区 |
/misc/ | 挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。 |
/opt/ | 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件 |
/root/ | root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下 |
/sbin/ | 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看 |
/tmp/ | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
/srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
常用的二级目录:
1. usr目录
usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。
Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。
二级目录 | 作用 |
---|---|
/usr/bin/ | 存放系统命令,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行 |
/usr/sbin/ | 存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。 |
/usr/lib | 应用程序调用的函数库保存位置 |
/usr/local | 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置 |
/usr/share/ | 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录 |
/usr/includeC/ | C++ 等编程语言头文件的放置目录 |
2. var目录
/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。
二级目录 | 作用 |
---|---|
/var/lib | 程序运行中需要调用或改变的数据保存位置。如MySQL的数据库保存在 /var/lib/mysql/ 目录中 |
/var/log | 登陆文件放置的目录,其中所包含比较重要的文件如 /var/log/messages, /var/log/wtmp 等。 |
/var/run | 一些服务和程序运行后,它们的 PID(进程 ID)保存位置 |
/var/spool | 里面主要都是一些临时存放,随时会被用户所调用的数据,例如 /var/spool/mail/ 存放新收到的邮件,/var/spool/cron/ 存放系统定时任务。 |
/var/www | RPM 包安装的 Apache 的网页主目录 |
/var/tmp | 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除 |
总结一下:
-
根(/),相当于一个入口,文件的总入口,也是唯一入口
-
bin(sbin),存放二进制文件,可执行文件,也可能存在别处,默认使用较多所有用户软连接文件
-
sbin,存放管理员可使用的二进制文件
-
boot,存放硬件文件(黄色)
-
etc,存放各种配置文件,类似于windows的注册表,一般都是文本文件
-
run,存放正在运行的文件
-
tmp,存放临时文件
-
usr,存放应用程序和操作系统相关的文件
-
var,存放日志文件,记录数据变化的
-
home,普通用户的家目录的上级目录,/home/lz
-
root,系统管理员的目录 /root
-
lib,存放动态库文件,类似于windows 的dll文件
-
proc ,主要保存系统的内核、进程、外部设备状态和网络状态等
-
media,存放可移动设备的文件
-
mnt,默认挂载点
-
opt,第三方应用程序安装所在目录程序
1.2 特点
- 以 . 开头的文件均为隐藏文件
- 路径用/分开
- 文件名最长255个字符
- 区分大小写
二、查看及检索文件
2.1 七类常见的Linux文件
字符 | 文件类型 |
---|---|
- | 表示普通文件,包括纯文本文件、二进制文件、各种压缩文件等等 |
b | block,表示块设备文件,就是保存大块数据的设备,比如最常见的硬盘 |
c | character,表示字符设备文件,这些文件通常隐藏在 /dev/ 目录下,当进行设备读取或外设交互时才会被使用,例如键盘、鼠标等 |
d | directory,表示目录文件,类似Windows的文件夹 |
l | link,表示链接文件,类似windows的快捷方式 |
p | pipe,表示管道文件,主要用于进程间通信单向传输 一个发一个输管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误 |
s | socket,表示套接字文件,一般隐藏在/var/run目录下,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信 |
2.2 查看文件内容
2.2.1 cat命令
格式:cat [选项] [目标路径] …(目标路径可以有多个)
选项 | 作用 |
---|---|
-n | 显示行号(包括空行) |
-b | 显示行号(不包括空行) |
-s | 将所有的连续的多个空行压缩成一个空行 |
-A | 显示隐藏字符 |
多文件查看:
2.2.2 more命令
格式:more [选项] [文件名]
more命令执行后,会进入一种特殊的浏览模式,在这种模式下,有一些按键具备和用户进行交互来执行一些操作。
按键(交互指令) | 作用 |
---|---|
h或? | 显示more命令中交互命令帮助 |
q或Q | 退出more的特殊浏览模式 |
v | 在当前行启动一个编辑器 |
:f | 显示当前文件的文件名和行号 |
!<命令>或 :!<命令> | 在子shell中执行指定命令 |
回车键 | 向下移动一行 |
空格键 | 向下移动一页 |
ctrl+l | 刷新屏幕 |
= | 显示当前行的行号 |
’ | 转到上一次搜索开始的地方 |
ctrl+f | 向下滚动一页 |
. | 重复上次输入的命令 |
/字符串 | 搜索指定的字符串 |
d | 向下移动半页 |
b | 向上移动一页 |
2.2.3 less命令
less命令是出现的比较晚的分页显示的命令,它提供了比早期more命令更多的一些拓展功能。两个命令的用法基本相同。
格式:less [选项] [文件名]
按键(交互指令) | 作用 |
---|---|
PageUP | 向上翻页 |
PageDown | 向下翻页 |
/字符 | 查找字符,n向下找,N向上找 |
h或? | 显示more命令中交互命令帮助 |
q或Q | 退出more的特殊浏览模式 |
v | 在当前行启动一个编辑器 |
:f | 显示当前文件的文件名和行号 |
!<命令>或 :!<命令> | 在子shell中执行指定命令 |
回车键 | 向下移动一行 |
空格键 | 向下移动一页 |
ctrl+l | 刷新屏幕 |
= | 显示当前行的行号 |
’ | 转到上一次搜索开始的地方 |
ctrl+f | 向下滚动一页 |
. | 重复上次输入的命令 |
/字符串 | 搜索指定的字符串 |
d | 向下移动半页 |
b | 向上移动一页 |
more与less的区别:
- more命令查看文件时,左下角显示的是当前内容在整个文件中的百分比;less显示的是被查看文件的文件名。
- more命令在阅读文件时,读完了会自动退出特殊浏览模式,回到终端;而less在读完文件时,是不会主动退出浏览模式的,需要手动的结束。
2.2.4 head/tail命令
head和tail是一对作用相反的命令,前者用于显示文件开头的一部分内容,后者用于显示文件末尾的一部分内容。
格式:head/tail [选项] [文件名]
head最常用的选项就是 -n 一个,例如:head -n /etc/passwd(n为具体行数),就是指定显示passwd文件的前n行,若不指定行数,默认为10行
tail命令也一样,例如:tail -n /etc/passwd(n为具体行数),就是指定显示passwd文件的后n行,若不指定行数,默认为10行
tail命令通常用于查看系统日志,因为较新的日志记录总是会添加到文件最后,以便观察网络访问、服务调试等相关信息。
tail配合 -f 选项使用,可以实时更新文件尾部的内容,便于实时监控文件内容的变化。
这里我记录了ping 百度的实时数据:
2.2.5 tr命令
tr命令用于转换或删除文件中的字符。
tr指令从标准输入设备读取数据,经过字符串转译后,将结果输出标准输出设备。
格式:tr [选项] SET1 [SET2]
(注:当格式为 tr [选项] SET1时,只能跟SET1,不能再有SET2;当格式为 tr SET1 SET2时,不能加选项,意为将后面所有输入的SET1全部替换为SET2)
例如:我们想要将接下来输入的所有小写字母转换成为大写字母,我们可以这样写:
tr a-z A-Z
- tr -d (删除)
例如:tr -d abc,意思是将包含abc的字符中的abc删掉
- tr -s (压缩)
例如:tr -s “ab”,意思是将包含多个a和b的字符中的a和b压缩成一个
2.2.6 wc命令
wc,全称Word Count,用于统计文件内容中包含的行数、单词数、字节数等等,使用文件名作为参数,可以同时统计多个文件。
格式:wc [选项]… [文件名]…
选项 | 作用 |
---|---|
-l | 统计行数 |
-c | 统计字节数 |
-w | 统计单词个数 |
(注:如果不加选项,就是默认全都统计,即:wc -lwc)
2.2.7 grep命令
grep命令用于在文件中查找并显示包含指定字符的行,可以直接直定关键字符串作为查找条件,也可以使用复杂的条件表达式。
格式:grep [选项]… 查找条件 目标文件
选项 | 作用 |
---|---|
-i | 查找时忽略大小写 |
-o | 只显示匹配项 |
-v | 反向查找,输出与查找条件不符合的行 |
-f | 对比两个文件的相同内容 |
注:
- 要查找的字符串以双引号括起来(单引号也可以)
- “^……”表示以……开头,“……$”表示以……结尾
- “^$”表示空行
先在1.txt中写点东西,查看:
过滤出1.txt中含a的行,不区分大小写:
过滤出1.txt中不含a的行
过滤出1.txt中不含a的行,不区分大小写:
过滤出1.txt中以a开头的行:
过滤出1.txt中以b结尾的行:
过滤出1.txt中的非空行:
三、备份与恢复文档
3.1 压缩、解压缩工具
3.1.1 gzip和gunzip命令
格式:gzip/gunzip 文件名
使用gzip制作的压缩文件默认的拓展名为 XX.gz,制作压缩文件时,使用“-9”选项可以提高压缩的比率,**但文件较大时会需要更多的时间。**可以同时压缩多个文件,解压时,gunzip可以同时解压多个,但gzip -d 只能解压一个
使用gzip压缩123.txt:
使用gunzip解压缩123.txt.gz:
或者使用gzip -d 进行解压缩,和gunzip一样的:
3.1.2 bzip2和bunzip2命令
使用方法与gzip命令一样,只是使用bzip2制作的压缩文件的拓展名为XX.bz2。可以同时压缩多个文件。可以同时压缩多个文件,解压时,bunzip2可以同时解压多个,但bzip2 -d 只能解压一个
3.2 tar归档和释放工具
tar主要用于对目录和文件进行归档。
使用tar命令时,选项前的“-”可以省略。
格式:tar [选项] … [归档的文件名(你想起的压缩包的名字)] [源文件或目录]
- -c:创建(Create).tar 格式的包文件
- -x:解开.tar 格式的包文件
- -C:解压时指定释放的目标文件夹 指定目录
- -f:表示使用归档文件(一般都要带上表示使用tar)
- -v:输出详细信息(Verbose)
- -j:调用 bzip2 程序进行压缩或解压
- -z:调用 gzip 程序进行压缩或解压
注:一般情况下,使用tar命令时,都要绑定-f