目录和文件管理
目录和文件管理
一.Linux目录结构
1.目录参差
1.1Linux根目录
- 根目录
(1)所有分区、目录、文件等起点。
(2)整个树形目录结构中,使用独立的一个 "/"来表示。
一级目录 | 作用 |
---|---|
/bin/ | 存放系统命令,普通用户和root都可执行。放在/bin下的命令在单用户模式下也可以执行。 |
/boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序。 |
/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/ | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
1.2常见的非一级目录
1.2.1Linux/usr目录
usr,全称为 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++ 等编程语言头文件的放置目录 |
1.2.2Linux/var目录
/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 | 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除 |
- 根(/)相当于一个入口,文件的总入口,也是唯一入口
- bin (sbin) 二进制文件,可执行文件,也可能存在别处,默认使用较多所有用户软连接文件
- sbin 管理员可使用的二进制文件
- boot 系统内核、启动文件
- dev 硬件文件(黄色)
- etc 配置文件等同于windows 注册表,一般都是文本文件
- run 运行的内存中文件
- tmp 临时文件 -t
- usr应用程序和操作系统相关的文件
- var日志文件,数据变化的
- home 普通用户的家目录的上级目录zhangsan目录会在 home
- root系统管理员的目录上 /root
- lib 动态库文件 类似于windows 的dll文件
- proc 主要保存系统的内核、进程、外部设备状态和网络状态等
- media 可移动设备
- mnt 默认挂载点
- opt 第三方应用程序安装所在目录程序
二.查看及检索文件
1.cat查看文件内容命令
选项 | 效果 |
---|---|
-n | 显示行号包括空行 |
-b | 跳过空白行编号 |
-s | 将所有的连续多个空行替换成一个空行 |
-A | 显示隐藏字符 |
[root@localhost data]# cat -n ky18.txt #查看当前目录下ky18.txt内容(显示行号包括空行)
1 root
2 ROOT
3 1
4
5 2
6
7
8 3
[root@localhost data]# cat -b ky18.txt #跳过空白行显示行号
1 root
2 ROOT
3 1
4 2
5 3
[root@localhost data]# cat -s ky18.txt #将所有的连续空行压缩成一个空行
root
ROOT
1
2
3
[root@localhost data]# cat -A ky18.txt #显示隐藏字符
root$
ROOT$
1$
$
2$
$
$
3$
格式 cat 文件名(文件名可以是单个也可以是多个)
[root@localhost data]# cat 1.txt ky18.txt #多个显示顺序看你命令文件的排列顺序
111
222
333
root
ROOT
1
2
3
2.more和less分页查看文件内容
more [选项] 文件名
交互指令 | 功能 |
---|---|
h 或 ? | 显示 more 命令交互命令帮助。 |
q 或 Q | 退出 more。 |
v | 在当前行启动一个编辑器。 |
:f | 显示当前文件的文件名和行号。 |
!<命令> 或 :!<命令> | 在子Shell中执行指定命令。 |
回车键 | 向下移动一行。 |
空格键 | 向下移动一页。 |
Ctrl+l | 刷新屏幕。 |
= | 显示当前行的行号。 |
' | 转到上一次搜索开始的地方。 |
Ctrf+f | 向下滚动一页。 |
. | 重复上次输入的命令。 |
/ 字符串 | 搜索指定的字符串。 |
d | 向下移动半页。 |
b | 向上移动一页。 |
ls -lh /etc/*.conf #查看以长格式友好显示etc目录下的以.conf结尾的文件
[root@localhost data]# ls -lh /etc/*.conf |more #命令显示过多可以用管道加more分页查看
-rw-r--r--. 1 root root 55 3月 1 2017 /etc/asound.conf
-rw-r--r--. 1 root root 15K 8月 4 2017 /etc/autofs.conf
-rw-------. 1 root root 232 8月 4 2017 /etc/autofs_ldap_auth.conf
-rw-r--r--. 1 root root 22K 8月 7 2017 /etc/brltty.conf
-rw-r--r--. 1 root root 676 8月 3 2017 /etc/cgconfig.conf
-rw-r--r--. 1 root root 265 12月 31 21:07 /etc/cgrules.conf
-rw-r--r--. 1 root root 131 8月 3 2017 /etc/cgsnapshot_blacklist.conf
-rw-r--r--. 1 root root 1.1K 1月 31 2017 /etc/chrony.conf
-rw-r--r--. 1 root root 1.2K 8月 3 2017 /etc/dleyna-server-service.conf
-rw-r--r--. 1 root root 27K 8月 3 2017 /etc/dnsmasq.conf
-rw-r--r--. 1 root root 1.3K 8月 5 2017 /etc/dracut.conf
-rw-r--r--. 1 root root 112 3月 16 2017 /etc/e2fsck.conf
-rw-r--r--. 1 root root 20 6月 24 2014 /etc/fprintd.conf
-rw-r--r--. 1 root root 38 5月 2 2017 /etc/fuse.conf
-rw-r--r--. 1 root root 842 11月 6 2016 /etc/GeoIP.conf
-rw-r--r--. 1 root root 9 6月 7 2013 /etc/host.conf
-rw-r--r--. 1 root root 4.8K 8月 2 2017 /etc/idmapd.conf
-rw-r--r--. 1 root root 2.1K 8月 5 2017 /etc/ipsec.conf
-rw-r--r--. 1 root root 7.1K 12月 31 21:06 /etc/kdump.conf
-rw-r--r--. 1 root root 590 4月 29 2017 /etc/krb5.conf
-rw-r--r--. 1 root root 478 6月 13 2017 /etc/ksmtuned.conf
-rw-r--r--. 1 root root 28 2月 28 2013 /etc/ld.so.conf
-rw-r-----. 1 root root 191 4月 19 2017 /etc/libaudit.conf
-rw-r--r--. 1 root root 2.4K 10月 13 2013 /etc/libuser.conf
-rw-r--r--. 1 root root 19 12月 31 21:10 /etc/locale.conf
-rw-r--r--. 1 root root 662 7月 31 2013 /etc/logrotate.conf
-rw-r--r--. 1 root root 5.1K 6月 10 2014 /etc/man_db.conf
-rw-r--r--. 1 root root 936 8月 3 2017 /etc/mke2fs.conf
-rw-r--r--. 1 root root 2.6K 6月 10 2014 /etc/mtools.conf
-rw-r--r--. 1 root root 955 8月 8 2017 /etc/nfs.conf
-rw-r--r--. 1 root root 3.4K 8月 8 2017 /etc/nfsmount.conf
-rw-r--r--. 1 root root 1.8K 12月 31 21:06 /etc/nsswitch.conf
-rw-r--r--. 1 root root 2.0K 4月 12 2017 /etc/ntp.conf
-rw-r--r--. 1 root root 91 12月 3 2012 /etc/numad.conf
-rw-r--r--. 1 root root 4.9K 3月 6 2015 /etc/oddjobd.conf
-rw-r--r--. 1 root root 1.4K 6月 10 2014 /etc/pbm2ppa.conf
-rw-r--r--. 1 root root 6.2K 6月 10 2014 /etc/pnm2ppa.conf
less [选项] 文件名
- 用法基本与more一致
不同点
- 可以使用/ 查找 n向下 N向上查找
- Page Up 向上翻页,Page Down 向下翻页
3.head和tail查看开头或末尾部分内容
- head -n 文件名 (不加默认开头十行)
- tail -n 文件名 (不加默认结尾十行)
- tail -f 文件名 实时跟踪最后十行
[root@localhost data]# head 1.tat #不加-n默认显示前十行
1
2
3
4
5
6
7
8
9
10
[root@localhost data]# head -n -9 1.tat #不显示后九行
1
2
3
4
5
6
[root@localhost data]# tail -n -3 1.tat #只显示最后三行
13
14
15
[root@localhost data]# tail -n +9 1.tat #显示从第九行开始
9
10
11
12
13
14
15
[root@localhost data]# head -n +9 1.tat #只显示前九行
1
2
3
4
5
6
7
8
9
[root@localhost data]# ifconfig |head -2|tail -1 #显示不显示最后3行最后一行
inet 192.168.88.10 netmask 255.255.255.0 broadcast 192.168.88.255
[root@localhost data]# tail -f log.txt #实时跟踪最后十行
64 bytes from 192.168.88.1: icmp_seq=6 ttl=128 time=0.338 ms
64 bytes from 192.168.88.1: icmp_seq=7 ttl=128 time=0.272 ms
64 bytes from 192.168.88.1: icmp_seq=8 ttl=128 time=0.303 ms
64 bytes from 192.168.88.1: icmp_seq=9 ttl=128 time=0.308 ms
64 bytes from 192.168.88.1: icmp_seq=10 ttl=128 time=0.290 ms
64 bytes from 192.168.88.1: icmp_seq=11 ttl=128 time=0.546 ms
--- 192.168.88.1 ping statistics ---
11 packets transmitted, 11 received, 0% packet loss, time 10016ms
rtt min/avg/max/mdev = 0.164/0.333/0.546/0.106 ms
4.wc命令统计单词数量及行数
命令格式:wc [选项] 目标文件
选项:
-l:统计行数
-w:统计单词个数
-c:统计字节数
[root@localhost data]# cat ky18.txt #查看内容
root
ROOT
1
2
3
[root@localhost data]# wc -l ky18.txt #统计行数
8 ky18.txt
[root@localhost data]# wc -w ky18.txt #统计单词个数
5 ky18.txt
[root@localhost data]# wc -c ky18.txt #统计字节数
19 ky18.txt
[root@localhost data]# wc ky18.txt #统计所有
8 5 19 ky18.txt
#注意空行及换字符
5.grep命令——检索、过滤文件内容
命令格式:
grep [选项] 查找文件 目标文件
选项:
-i:查找时忽略大小写
-v:反向查找,输出与查找条件不相符的行
-o: 只显示匹配项
只显示匹配项
-f:对比两个文件的相同内容
基本格式
- 要查找的字符串以双引号括起来单引号也可以
- “^……”表示以……开头,“……$”表示以……结尾
- “^$”表示空行
[root@localhost etc]# cat passwd |grep "bash$"#查看etc目录下passwd文件以bash结尾的内容
root:x:0:0:root:/root:/bin/bash
gengbo:x:1000:1000:GENGBO:/home/gengbo:/bin/bash
wu:x:1001:1001::/home/wu:/bin/bash
kgc:x:1002:1002::/home/kgc:/bin/bash
cd:x:1003:1003::/home/cd:/bin/bash
[root@localhost etc]# cat passwd |grep "^cd" #etc目录下passwd文件以cd开头的内容
cd:x:1003:1003::/home/cd:/bin/bash
[root@localhost data]# grep -i "root" ky18.txt #忽略大小写查找
root
ROOT
[root@localhost data]# grep -vi "root" ky18.txt #查找与条件不符的内容
1
2
3
[root@localhost data]# grep -o "root" ky18.txt #只查找匹配项
root
[root@localhost data]# grep -f 1.txt 2.txt #对比两个文件相同内容
111
22
3
6.压缩与解压缩
比较gzip和bzip之间的压缩比例,压缩时间等问题
gzip和bzip都是压缩软件
bzip2 压缩率 大于 gzip
gzip [-9] 文件名… 提高压缩比例,但是文件较大时效率会低
bzip2 [-9] 文件名...
gzip -d .gz格式的压缩文件 d就是解压
bzip2 -d .bz2格式的压缩文件
其中9代表压缩比率,9最大1最小,使用以上两种压缩源文件不存在了
gzip的压缩率 要高于bzip2
不会使用 应为只能对文件操作
[root@localhost data]# gzip passwd1 #用gzip程序压缩文件passwd1
[root@localhost data]# ll
总用量 32
-rw-r--r--. 1 root root 36 2月 15 15:11 1.tat
-rw-r--r--. 1 root root 13 2月 15 14:26 1.txt
-rw-r--r--. 1 root root 9 1月 28 13:43 2.txt
-rw-r--r--. 1 root root 34 1月 22 22:58 3.txt
-rw-r--r--. 1 root root 19 2月 15 14:20 ky18.txt
-rw-r--r--. 1 root root 882 1月 24 03:00 log.txt
-rw-r--r--. 1 root root 884 1月 28 14:15 passwd1.gz #这里可以看出已是压缩文件
-rw-r--r--. 1 root root 145 1月 28 20:02 t.gzip.tar
[root@localhost data]# gzip -d passwd1 #用gzip程序解压缩文件passwd1
[root@localhost data]# ll
总用量 32
-rw-r--r--. 1 root root 36 2月 15 15:11 1.tat
-rw-r--r--. 1 root root 13 2月 15 14:26 1.txt
-rw-r--r--. 1 root root 9 1月 28 13:43 2.txt
-rw-r--r--. 1 root root 34 1月 22 22:58 3.txt
-rw-r--r--. 1 root root 19 2月 15 14:20 ky18.txt
-rw-r--r--. 1 root root 882 1月 24 03:00 log.txt
-rw-r--r--. 1 root root 2217 1月 28 14:15 passwd1 #这里可以看出已解压
-rw-r--r--. 1 root root 145 1月 28 20:02 t.gzip.tar
[root@localhost data]# bzip2 passwd1 #用bzip2程序压缩文件passwd1
[root@localhost data]# ll
总用量 32
-rw-r--r--. 1 root root 36 2月 15 15:11 1.tat
-rw-r--r--. 1 root root 13 2月 15 14:26 1.txt
-rw-r--r--. 1 root root 9 1月 28 13:43 2.txt
-rw-r--r--. 1 root root 34 1月 22 22:58 3.txt
-rw-r--r--. 1 root root 19 2月 15 14:20 ky18.txt
-rw-r--r--. 1 root root 882 1月 24 03:00 log.txt
-rw-r--r--. 1 root root 926 1月 28 14:15 passwd1.bz2 #这里可以看出已是压缩文件
-rw-r--r--. 1 root root 145 1月 28 20:02 t.gzip.tar
[root@localhost data]# bunzip2 passwd1.bz2 #用bunzip2程序解压文件passwd1
[root@localhost data]# ll
总用量 32
-rw-r--r--. 1 root root 36 2月 15 15:11 1.tat
-rw-r--r--. 1 root root 13 2月 15 14:26 1.txt
-rw-r--r--. 1 root root 9 1月 28 13:43 2.txt
-rw-r--r--. 1 root root 34 1月 22 22:58 3.txt
-rw-r--r--. 1 root root 19 2月 15 14:20 ky18.txt
-rw-r--r--. 1 root root 882 1月 24 03:00 log.txt
-rw-r--r--. 1 root root 2217 1月 28 14:15 passwd1 #这里可以看出已解压
-rw-r--r--. 1 root root 145 1月 28 20:02 t.gzip.tar
7.tar归档及释放工具
tar tape archive 磁带归档,磁带便宜磁带机很贵,慢永久保存,硬盘越来越便宜了
tar [选项] ... 归档文件名(压缩包名字) 源文件或目录
tar [选项] ... 归档文件名 [-C 目标目录]
- -c:创建(Create).tar 格式的包文件
- -x:解开.tar 格式的包文件
- -C:解压时指定释放的目标文件夹 指定目录
- -f:表示使用归档文件(一般都要带上表示使用tar)
- -v:输出详细信息(Verbose)
- -j:调用 bzip2 程序进行压缩或解压
- -z:调用 gzip 程序进行压缩或解压
[root@localhost data]# tar -zcvf t.gzip.tar 1.txt 2.txt
#将源文件1 2.txt归档调用gzip程序进行压缩至同一压缩包内
1.txt
2.txt
[root@localhost data]# ls
1.tat 1.txt 2.txt 3.txt ky18.txt log.txt passwd1 t.gzip.tar
[root@localhost data]# tar -zxvf t.gzip.tar -C /opt
#调用gzip程序进行解压释放至opt目录下
1.txt
2.txt
[root@localhost data]# cd /opt
[root@localhost opt]# ls
123.txt 1.txt 2.txt aa etc ifcfg-ens33 rh
#这里可以卡出文件1.txt 2.txt已存在
总结:
使用cat、more、less、head、tail命令可以查看文件。
使用wc、grep命令可以统计、检索文件内容。
使用gzip、bzip2命令可以制作及释放压缩文件。
使用tar命令可以制作或者释放归档文件,结合“-z” “-j”选项还可以自动调用压缩工具。