一、目录层次
1、一级目录
| 一级目录 | 功能(作用) |
|---|---|
| /bin/ | 存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行 |
| /boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
| /dev/ | 设备文件保存位置 |
| /etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 |
| /home/ | 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming |
| /lib/ | 系统调用的函数库保存位置 |
| /media/ | 挂载目录。系统建议用来挂载媒体设备,如软盘和光盘 |
| /mnt/ | 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区 |
| /misc/ | 挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的 |
| /opt/ | 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件 |
| /root/ | root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下 |
| /sbin/ | 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看 |
| /srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
| /tmp/ | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
2、/usr 与/var 目录
usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。
| 子目录 | 功能(作用) |
|---|---|
| /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++ 等编程语言头文件的放置目录 |
/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 4 所示的这些子目录。
| /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/nis和/var/yp | NIS 服务机制所使用的目录,nis 主要记录所有网络中每一个 client 的连接信息;yp 是 linux 的 nis 服务的日志文件存放的目录 |
| /var/tmp | 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除 |
二、查看文件内容
1、cat
cat( 英文全拼:concatenate )命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
**命令格式: **cat [选项] 文件名
选项: -n 显示行号包括空行 -b 跳过空白行编号 -s 将所有的连续的多个空行替换为一个空行(压缩成一个空行) -A 显示隐藏字符
1)cat查看系统版本
cat /etc/centos-release 查看系统内核版本
cat /proc/version 查看系统内核版本
2)cat加选项,处理空行
cat -b test.txt 显示行号,空行不编号
cat -s test.txt 将连续的空行压缩成一个空行
3)同时查看多个文件,按文件的排列顺序依次显示内容。
cat 1.txt 2.txt 查看多个文件,按文件的排列顺序依次显示内容
cat 2.txt 1.txt 先显示2.txt内容,后显示1.txt
4) tac 从最后一行倒序显示内容,并将所有内容输出
cat 1.txt 从第一行开始显示内容
tac 1.txt 从最后一行倒序显示内容
5)hexdump 查看非文本文件内容
-C:输出规范的十六进制和ASCII码
-n length:格式化输出文件的前length个字节
hexdump -C -n 10 /dev/sda 格式化输出文件的前10个字节,并以16进制显示
2、more 分页查看
命令格式: more [选项] 文件名
指令选项
h 或 ? 显示more命令交互命令帮助
q 或 Q 退出 more。
v 在当前行启动一个编辑器。
:f 显示当前文件的文件名和行号
!<命令> 或 :!<命令> 在子Shell中执行指定命令
回车 向下移动一行
空格 向下移动一页。
Ctrl+l 刷新屏幕
= 显示当前行的行号
' 转到上一次搜索开始的地方。
Ctrf+f 向下滚动一页
. 重复上次输入的命令
/ 字符串 搜索指定的字符串
d 向下移动半页。
b 向上移动一页
格式例:
ls -lh /etc/*.conf | more ps:命令显示过多可以使用管道加more查看,more可以向下翻页,不支持向上翻页
3、less 分页查看
命令格式: less [选项] 文件名
/ 字符串:向下搜索“字符串”的功能;
? 字符串:向上搜索“字符串”的功能 ;
n: 向下查找,重复前一个搜索(与 / 或 ? 有关);
N: 向上查找,反向重复前一个搜索(与 / 或 ? 有关)。
Page Up 向上翻页,Page Down 向下翻页
其余参考more
格式例:
ls -lh /etc/*.conf | less ps:命令显示过多可以使用管道加less查看,向下或向上查看都可以
4、head/tail 查看头部和尾部内容
命令格式:
head -n <行数> 文件名 (不加行数默认开头十行)
tail -n<行数> 文件名 (不加行数默认结尾十行)
tail -f 文件名:实时跟踪最后十行
格式例:
head -n +3 3.txt +3 只显示前三行
tail -n +3 3.txt +3 从第三行开始
head -n -3 3.txt -3 不显示最后3行
tail -n -3 3.txt -3 只显示最后三行
ifconfig |head -2|tail -1 通过管道符,只看第二行
tail -f /etc/****(文件/夹) //实时追踪最后十行
5、grep 检索、过滤文件内容
grep(global regular expression print,全局正则表达式输出),用于查找文件里符合条件的字符串。
命令格式: grep [选项]… 查找条件 目标文件
基本格式:
- 要查找的字符串以双引号括起来,单引号也可以
- “^……”表示以……开头,“……$”表示以……结尾
- “^$”表示空行
选项
格式例:
(下列提及的文件夹与位置仅为举例使用,现实要根据实际情况)
1)在/etc/passwd文件中,检索出含有“alice"的行
grep alice /etc/passwd
2)在/etc/passwd文件中检索“alice",只输出“alice"
grep -o alice /etc/passwd
3)在多个文件中检索”alice"
grep alice /etc/passwd /etc/group /etc/fstab
4)使用 -l 参数列出包含指定样式的文件的文件名
grep -l alice /etc/passwd /etc/group /etc/fstab
5) 使用-n参数,在文件中查找指定样式并显示匹配行的行号
grep -n bash /etc/passwd 检索出包含“bash"的行并显示行号
6)使用-v反向查找,输出与查找条件不相符的行
grep -v nologin /etc/passwd //检索出不含”nologin"的行
7)使用-i "^a",检索出以a开头的行,且不区分大小写
grep -i "^a" /etc/passwd
8)使用"h$",检索出以h结尾的行
grep "h$" /etc/passwd
9)使用-v "^$" 过滤出非空行
cat 123.txt //查看123.txt文件内容
grep -v "^$" 123.txt //过滤出非空行
cat 123.txt |grep -v '^$' >test.txt //将非空行写入到test.txt文件
cat test.txt //查看test.txt
10)使用通配符和管道符,过滤出IP地址
ifconfig ens33 |grep netmask|grep -o "[0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9].[0-9][0-9][0-9]"|head -n 1 //过滤出IP地址
ifconfig ens33 |grep -o "[0-9]+.[0-9]+.[0-9]+.[0-9]+" //过滤出IP地址、子网掩码、广播地址
ifconfig ens33 |grep -o "[0-9]+.[0-9]+.[0-9]+.[0-9]+"|head -1 //过滤出IP地址
11)-f 对比两个文件的相同行
grep -f 1.txt 2.txt //过滤出两个文件的相同行
12)-e 多条件”或“的查询
grep -e 1 -e 2 file01.txt //检索出包含1或2的行
13)使用 -E 'pattern1.*pattern2',多条件”且“的查询
grep -E "1.*2" file01.txt //检索出包含1且包含2的行
14)在指定目录内检索出含有指定内容的文件名
grep -R -w -l "root" /home //-R在目录内递归查找,-w表示精确匹配,-l列出文件内容符合指定样式的文件名称
grep -R -l "root" /home 列出/home目录下(包括其子目录内)含有“root"内容的文件名,不要求精确匹配。
6、wc 统计
命令格式:
wc [选项]... 目标文件.. (不加选项,则默认统计行数、单词个数、字节数三者)
统计列数,wc本身就是参数:
- -l:统计行数
- -w:统计单词个数
- -c:统计字节数
wc -l 1.txt //统计行数,注意空行也会被统计
wc -w 1.txt //统计单词数
wc -c 1.txt //统计字节数,注意换行符也会被统计
wc 1.txt //不指定选项,默认lwc都显示
7、 paste 合并文件
是将文件合并后依旧保持两例格式,cat合并后为上下
-d 指定分隔符
例:
paste A.txt B.txt
aa 11
bb 22
cc 33
paste -d";" A.txt B.txt
aa;11
bb;22
cc;33
8、sort 排序
主要用于排序文件、对已排序的文件进行合并,并检查文件以确定它们是否已排序
- -r 执行反方向(由上至下)整理
- -R 随机排序
- -n 执行按数字大小整理
- -h 人类可读排序,如: 2K 1G
- -f 选项忽略(fold)字符串中的字符大小写
- -u 选项(独特,unique),合并重复项,即去重
- -t 指定分隔符
- -k 指定列
可见第一行是按照先数字再字母的顺序排列
9、uniq去重
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
uniq常和sort 命令一起配合使用
uniq 1.txt 只会将连续的行去重
uniq -c 1.txt 显示出现次数
三、总结
cat与grep是重点,尤其是grep,功能强大,功能众多,需要重点学习,并掌握。