目录和文件管理
一、Linux 目录结构
Linux 操作系统中的目录和文件数据被组织为一个树形目录结构,所有的分区、目录、文件等都具有一个相同的位置起点——根目录,如图下图所示。Linux 操作系统中只有一个根目录,而 Windows 操作系统中每个分区都有一个根目录,这点需要加以区别。
目录 | 说明 |
---|---|
/boot | 此目录是系统内核存放的目录,同时也是系统启动时所需文件的存放目录,如 vmlinuz 和 initrd.img。在安装 Linux 时,为 boot 目录创建一个分区,有利于对系统进行备份。 |
/bin | bin 是 binary 的缩写。这一目录存放了所有用户都可执行的且经常使用的命令,如 cp、ls 等。 |
/dev | 此目录保存了接口设备文件,如/dev/hda1、/dev/cdrom 等。 |
/etc | 此目录保存有关系统设置与管理的文件。 |
/home | 存放所有普通系统用户的默认工作文件夹(即宿主目录、家目录),如用户账号“woniu”对应的宿主目录位于“/home/woniu/”。如果服务器需要提供给大量的普通用户使用,建议将“/home”目录也划分为独立的分区,以方便用户数据的备份。 |
/root | 该目录是 Linux 操作系统管理员(超级用户)root 的宿主目录, |
/sbin | 存放 Linux 操作系统中最基本的管理命令,一般管理员用户才有权限执行。 |
/usr | 存放其他的用户应用程序,通常还被划分成很多子目录,用于存放不同类型的应用程序。 |
/var | 存放系统中经常需要变化的一些文件,如系统日志文件、用户邮箱目录等,在实际应用系统中,“/var”目录通常也被划分为独立的分区。 |
二、查看及检索文件
1.查看文件内容
-
cat 命令(显示并连接(Concatenate)文件的内容)
[root@CentOS7-4 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="c09e09d3-52a2-4cd7-9f6b-8d105de24231" DEVICE="ens33" ONBOOT="yes" IPADDR="192.168.88.131" NETMASK="255.255.255.0" GATEWAY="192.168.88.2" DNS1="192.168.88.2" #修改永久静态IP BOOTPROTO="static" #默认是DHCP #往下添加 IPADDR="192.168.88.131" #IP地址 NETMASK="255.255.255.0" #子网掩码 GATEWAY="192.168.88.2" #网关 DNS1="192.168.88.2" #DNS
[root@CentOS7-4 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [root@CentOS7-4 ~]# cat /etc/hosts /etc/resolv.conf 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # Generated by NetworkManager nameserver 192.168.88.2
-
more命令(分页查看文件类容)
#more会把类容回显给终端 #按 “ b ”查看上一屏,按空格向下翻一屏,按回车向下翻一行,按 “ q ”返回到原来的命令环境 [root@CentOS7-4 ~]# more /etc/ssh/sshd_config [root@CentOS7-4 ~]# cat /etc/ssh/sshd_config |more
-
less 命令(分页查看文件内容)
#在线查看,可以使用 “ /字符串 ”查找内容,按 “ n ” 查找下一字符串 #可以进行上下翻屏,按 “ q ” 退出查看 #less不会回显再终端 [root@CentOS7-4 ~]# less /etc/ssh/sshd_config [root@CentOS7-4 ~]# cat /etc/ssh/sshd_config | less
-
head 命令(查看文件开头部分内容,不带选项默认10行)
#查看前五条 [root@CentOS7-4 ~]# head -5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
-
tail 命令(查看文件末尾部分内容,不带选项默认10行)
#查看后五条 [root@CentOS7-4 ~]# tail -5 /etc/passwd dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin
-
tail 命令通常用于查看系统日志(因为较新的日志记录总是添加到文件最后),以便观察网络访问、服务调试等相关信息。配合“-f ”选项使用时,还可以跟踪文件尾部内容的动态更新,便于实时监控文件内容的变化
#查看系统的日志文件 [root@CentOS7-4 ~]# tail -f /var/log/messages Mar 29 11:09:39 CentOS7-4 systemd: Started Session 4 of user root. Mar 29 11:09:39 CentOS7-4 systemd-logind: New session 4 of user root. Mar 29 11:09:39 CentOS7-4 systemd: Started Cleanup of Temporary Directories. Mar 29 11:09:42 CentOS7-4 systemd-logind: Removed session 3. Mar 29 11:12:50 CentOS7-4 systemd: Started Session 5 of user root. Mar 29 11:12:50 CentOS7-4 systemd-logind: New session 5 of user root. Mar 29 11:12:53 CentOS7-4 systemd-logind: Removed session 4. Mar 29 11:12:54 CentOS7-4 systemd-logind: Removed session 5. Mar 29 11:14:03 CentOS7-4 systemd: Started Session 6 of user root. Mar 29 11:14:03 CentOS7-4 systemd-logind: New session 6 of user root.
#常见的系统日志 日志格式:文本日志/二进制日志/数据库日志 默认的相关日志文件: /var/log/boot.log 系统引导日志,记录开机启动信息 /var/log/dmesg 核心的启动日志 /var/log/message 系统的日志文件 /var/log/maillog 邮件服务的日志 /var/log/xferlog ftp服务的日志 /var/log/secure 网络连接及系统登录的安全信息 /var/log/cron 定时任务的日志 /var/log/wtmp 记录所有的登入和登出 last -f 查看 /var/log/btmp 记录失败的登入尝试
2、统计和检索文件内容
-
wc 命令(统计文件内容中的单词数量(Word Count)、行数等信息)
-c:统计文件内容中的字节数 -l:统计文件内容中的行数 -w:统计文件内容中的单词个数(以空格或制表位作为分隔)
[root@CentOS7-4 ~]# wc -l /etc/passwd 19 /etc/passwd [root@CentOS7-4 ~]# wc -l /etc/hosts 2 /etc/hosts [root@CentOS7-4 ~]# find /etc -name *.conf|wc -l 92
-
grep 命令(检索、过滤文件内容)
-i:查找内容时忽略大小写(Ignore Case)。 -v:反转查找(Invert),即输出与查找条件不相符的行。
[root@CentOS7-4 ~]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
以正则表达式查找
# "^#" 代表以 # 开头的内容 # "^$" 代表空行 # " $" 代表以什么什么结尾 [root@CentOS7-4 ~]# grep -v "^#" /etc/yum.conf|grep -v "^$" [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release
-
正则表达式的公式
^ # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。 $ # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。 . # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 * # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .* # 一起用代表任意字符。 [] # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 [^] # 匹配一个不在指定范围内的字符,如:'[^A-Z]rep' 匹配不包含 A-Z 中的字母开头,紧跟 rep 的行 \(..\) # 标记匹配字符,如'\(love\)',love被标记为1。 \< # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。 \> # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。 x\{m\} # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。 x\{m,\} # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。 x\{m,n\} # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。 \w # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。 \W # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。 \b # 单词锁定符,如: '\bgrep\b'只匹配grep。
三、备份与恢复文档
1、使用压缩和解压缩工具
-
gzip 和 gunzip 命令(压缩和解压缩,压缩时使用 ” -9 “ 选项提高压缩比率)
#对文件或目录进行压缩,原文件不保留,压缩后文件大小发生了变化 [root@CentOS7-4 ~]# ls -lh 总用量 12K -rw-r--r-- 1 root root 0 3月 28 21:25 1.txt -rw-------. 1 root root 1.3K 3月 28 17:19 anaconda-ks.cfg -rw-r--r-- 1 root root 7.4K 3月 28 20:36 lsman.txt [root@CentOS7-4 ~]# gzip lsman.txt [root@CentOS7-4 ~]# ls -lh 总用量 8.0K -rw-r--r-- 1 root root 0 3月 28 21:25 1.txt -rw-------. 1 root root 1.3K 3月 28 17:19 anaconda-ks.cfg -rw-r--r-- 1 root root 3.1K 3月 28 20:36 lsman.txt.gz
#解压时一样,"gunzip"等同于"gzip -d" [root@CentOS7-4 ~]# gunzip lsman.txt.gz [root@CentOS7-4 ~]# ls -lh 总用量 12K -rw-r--r-- 1 root root 0 3月 28 21:25 1.txt -rw-------. 1 root root 1.3K 3月 28 17:19 anaconda-ks.cfg -rw-r--r-- 1 root root 7.4K 3月 28 20:36 lsman.txt
-
bzip2和bunzip2 命令
-
命令和gzip命令用法一样,系统默认没有此命令,需要安装程序包
#安装bzip2
[root@CentOS7-4 ~]# yum -y install bzip2
2.使用 tar 归档和释放工具
-c:创建(Create).tar 格式的包文件。
-C:解压时指定释放的目标文件夹。
-f:表示使用归档文件。
-j:调用 bzip2 程序进行压缩或解压。
-p:打包时保留文件及目录的权限。
-P:打包时保留文件及目录的绝对路径。
-t:列表查看包内的文件。
-v:输出详细信息(Verbose)。
-x:解开.tar 格式的包文件。
-z:调用 gzip 程序进行压缩或解压。
- 制作归档文件(可以与压缩工具一起使用)
#压缩或者打包
[root@CentOS7-4 opt]# tar zcf lsman.tar.gz lsman.txt
[root@CentOS7-4 opt]# ls
lsman.txt lsman.tar.gz
[root@CentOS7-4 opt]# tar jcf lsman.tar.bz2 lsman.txt
[root@CentOS7-4 opt]# ls
lsman.txt lsman.tar.bz2
- 释放归档文件(可以与压缩工具一起使用)
#解压
[root@CentOS7-4 opt]# tar zxf lsman.tar.gz
[root@CentOS7-4 opt]# tar jxf lsman.tar.bz2
#调用gzip进行解压并释放文件到指定目录
[root@CentOS7-4 opt]# tar zxf lsman.tar.gz -C /usr/local
.tar.bz2 lsman.txt
[root@CentOS7-4 opt]# ls
lsman.txt lsman.tar.bz2
- 释放归档文件(可以与压缩工具一起使用)
```shell
#解压
[root@CentOS7-4 opt]# tar zxf lsman.tar.gz
[root@CentOS7-4 opt]# tar jxf lsman.tar.bz2
#调用gzip进行解压并释放文件到指定目录
[root@CentOS7-4 opt]# tar zxf lsman.tar.gz -C /usr/local