Linux 目录和文件管理
导图

1.目录层次
1.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/ | 
/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目录
/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 4 所示的这些子目录。
|  | 功能(作用) | 
|---|---|
| /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.2 文件的目录结构

目录:
/bin:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib:lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt:opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux:这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv: 该目录存放一些服务启动之后需要提取的数据。
/sys:这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
/tmp:tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr:usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
2.查看文件
2.1 七类常见的linux文件
| 文件类型 | 第一个字符 | 描述 | 
| 普通文件 | - | 包括纯文本文件、二进制文件、各种压缩文件等。 | 
| 目录文件(directory) | d | 目录,类似 Windows 系统中的文件夹。 | 
| 块设备文件(block) | b | 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。 | 
| 字符设备文件(character) | c | 字符设备文件,例如键盘、鼠标等。 | 
| 管道文件(pipe) | p | 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。 | 
| 链接文件(link) | l | 链接文件,类似 Windows 系统中的快捷方式 | 
| 套接字文件(socket) | s | 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信 | 
2.2 显示命令
cat
| 效果 | |
|---|---|
| -n | 显示行号包括空行 | 
| -b | 跳过空白行编号 | 
| -s | 将所有的连续的多个空行替换为一个空行(压缩成一个空行) | 
| -A | |
| -E | |
| -T | 把 Tab 键 ^I 显示出来 | 
| -V | 列出特殊字符 | 
more
格式:
more [选项] 文件名
操作:
空格 下一行 ----到文末自动退出
more选项
| 选项 | 作用 | 
|---|---|
| -f | 计算行数时,以实际的行数,而不是自动换行过后的行数 | 
| -p | 不以卷动的方式显示每一页,而是先清除屏幕后再显示内容 | 
| -c | 跟 -p 选项相似,不同的是先显示内容再清除其他旧资料 | 
| -s | 当遇到有连续两行以上的空白行时,就替换为一行的空白行 | 
| -u | 不显示下引号(根据环境变量 TERM 指定的终端而有所不同) | 
| +n | 从第 n 行开始显示文件内容,n 代表数字 | 
| -n | 一次显示的行数,n 代表数字 | 
more交互指令及功能(使用more和less命令查看内容的过程中 会进入交互界面)
| 交互指令 | 功能 | 
|---|---|
| h 或 ? | 显示 more 命令交互命令帮助 | 
| q 或 Q | 退出 more | 
| v | 在当前行启动一个编辑器 | 
| :f | 显示当前文件的文件名和行号 | 
| !<命令> 或 :!<命令> | 在子Shell中执行指定命令 | 
| 回车键 | 向下移动一行 | 
| 空格键 | 向下移动一页 | 
| Ctrl+l | 刷新屏幕 | 
| = | 显示当前行的行号 | 
| ' | 转到上一次搜索开始的地方 | 
| Ctrf+f | 向下滚动一页 | 
| . | 重复上次输入的命令 | 
| / 字符串 | 搜索指定的字符串 | 
| d | 向下移动半页 | 
| b | 向上移动一页 | 
less
less命令 与 more命令 非常类似,但less命令 可以更加随意地浏览文件,而且 less 在查看之前不会加载整个文件。
格式:
less [选项] 文件名
less选项
| 选项 | 作用 | 
| -b | 设置缓冲区的大小 | 
| -e | 当文件显示结束后,自动退出 | 
| -f | 强制打开特殊文件,例如外围设备代号、目录和二进制文件 | 
| -g | 只标志最后的关键词 | 
| -i | 忽略搜索时的大小写 | 
| -m | 显示类似more命令的百分比 | 
| -N | 显示每行的行号 | 
| -o | 将less输出的内容在指定文件保存起来 | 
| -Q | 不使用警告音 | 
| -s | 显示连续空行为一行 | 
| -S | 行过长时将超出部分舍弃。 | 
| -x | 将tab键显示为规定的数字空格 | 
less交互指令及功能(使用more和less命令查看内容的过程中 会进入交互界面)
| 交互指令 | 功能 | 
|---|---|
| /字符串 | 向下搜索“字符串”的功能。 | 
| ?字符串 | 向上搜索“字符串”的功能。 | 
| n | 重复*前一个搜索(与 / 成 ? 有关)。 | 
| N | 反向重复前一个搜索(与 / 或 ? 有关)。 | 
| b | 向上移动一页。 | 
| d | 向下移动半页。 | 
| h 或 H | 显示帮助界面。 | 
| q 或 Q | 退出 less 命令。 | 
| y | 向上移动一行。 | 
| 空格键 | 向下移动一页。 | 
| 回车键 | 向下移动一行。 | 
| 【PgDn】键 | 向下移动一页。 | 
| 【PgUp】键 | 向上移动一页。 | 
| Ctrl+f | 向下移动一页。 | 
| Ctrl+b | 向上移动一页。 | 
| Ctrl+d | 向下移动一页。 | 
| Ctrl+u | 向上移动半页。 | 
| j | 向下移动一行。 | 
| k | 向上移动一行。 | 
| G | 移动至最后一行。 | 
| g | 移动到第一行。 | 
| ZZ | 退出 less 命令。 | 
| v | 使用配置的编辑器编辑当前文件。 | 
| [ | 移动到本文档的上一个节点。 | 
| ] | 移动到本文档的下一个节点。 | 
| p | 移动到同级的上一个节点。 | 
| u | 向上移动半页。 | 
head/tail
head -n 具体数字 文件名 (不加具体数字,默认前十行)
tail -n 具体数字 文件名 (不加具体数字,默认前十行)
tail -f 具体数字 文件名 (不加具体数字,实时跟踪最后十行)
head选项
| 选项 | 含义 | 
|---|---|
| -n K | 这里的 K 表示行数,该选项用来显示文件前 K 行的内容;如果使用 "-K" 作为参数,则表示除了文件最后 K 行外,显示剩余的全部内容 | 
| -c K | 这里的 K 表示字节数,该选项用来显示文件前 K 个字节的内容;如果使用 "-K",则表示除了文件最后 K 字节的内容,显示剩余全部内容 | 
| -v | 显示文件名 | 
tail选项
| 选项 | 含义 | 
|---|---|
| -n K | 这里的 K 指的是行数,该选项表示输出最后 K 行,在此基础上,如果使用 -n +K,则表示从文件的第 K 行开始输出 | 
| -c K | 这里的 K 指的是字节数,该选项表示输出文件最后 K 个字节的内容,在此基础上,使用 -c +K 则表示从文件第 K 个字节开始输出 | 
| -f | 输出文件变化后新增加的数据 | 
head/tail 范围图示

tr
转换
格式:
tr [选项] [第一字符集] [第二字符集]
| 选项 | 作用 | 
| -d | 删除 | 
| -s | 压缩 | 
| -c | 用字符串一中字符集的补集替换二字符集,要求字符集为ASCII | 
cut
可以提取文本文件数据的指定列
格式:
cut [选项] 文件
选项
| 选项 | 功能 | 
| -d | 指定分隔符,默认tab | 
| -f | 想要获取的字段 | 
| -c | 取字符 | 
wc
统计列数,wc本身就是参数
格式:
wc [选项] 文件
选项
| 选项 | 功能 | 
| -l | 统计行数 | 
| -w | 统计单词个数 | 
| -c | 统计i字节数 | 
grep
过滤
格式:
grep [选项] 查找条件 目标文件
选项
| 选项 | 功能 | 
| -i | 查找时忽略大小写 | 
| -v | 反向查找,查找与条件不同的行 | 
| -o | 只显示匹配项 | 
| -f | 对比俩个文件的相同行 | 
| -c | 匹配的行数 | 
基本格式:
“^……”表示以……开头,“……$”表示以……结尾
paste
合并文件
tops:
cat 上下合并 ,paste左右合并
格式:
paste [选项] 目标文件(可多个)
选项
| 选项 | 功能 | 
| -d | 指定分隔符 | 
| ... | ... | 
sort
排序
把整理过的文本显示在屏幕上,不改变原始文件!!
格式:
sort [选项] 文件
选项
| 选项 | 功能 | 
| -r | 执行反方向(由上至下)整理 | 
| -R | 随机排序 | 
| -n | 执行按数字大小整理 | 
| -h | 人性化显示 | 
| -f | 忽略字符串中字符的大小写 | 
| -u | 合并重复项(去重) | 
| -t | 指定分隔符 | 
| -k | 指定列 | 
uniq
uniq常和sort配合使用
去重
格式:
uniq [选项] 文件
选项
| 选项 | 功能 | 
| -c | 显示每行重复出现的次数 | 
| -d | 仅显示重复过的行 | 
| -u | 仅显示不曾重复的行 | 
3.压缩,解压
3.1 压缩 gzip bzip2
gzip和bzip都是压缩软件。 gzip [-9] 文件名... //提高压缩比例,但是文件较大时效率会低 bzip2 [-9] 文件名... gzip -d // .gz格式的压缩文件 d就是解压 bzip2 -d // .bz2格式的压缩文件 9代表压缩比率,9最大1最小,使用以上两种压缩源文件不存在了 gzip的压缩率 要高于bzip2
3.2 归档 tar
tar (tape archive)磁带 归档
| 选项 | 功能 | 
| c | 创建tar格式包文件 | 
| x | 解开tar格式包文件 | 
| -C | 解压时指定释放的目标文件夹 | 
| f | 表示使用归档文件(一般都要带上表示使用tar) | 
| p | 打包时保留文件及目录的权限 | 
| P | 打包时保留文件及目录的绝对径 | 
| t | 列表查看包内的文件(要和f一起使用) | 
| v | 输出详细信息(Verbose) | 
| j | 调用 bzip2 程序进行压缩或解压 | 
| z | 调用 gzip 程序进行压缩或解压 | 
4.vi编辑器
几乎所有的Linux 发行版都内嵌有 Vim 文本编辑器,而其他的编辑器则不一定存在;
| 常用选项 | 功能 | 
| +# | 打开文件后,让光标处于第#行的行首,+默认行尾 | 
| ! | 打开上一次文件 | 
| +/PATTERN | 让光标处于第一个被PATTERN匹配到的行行首用不多 | 
格式
vim   选项    文件
vim  文件名不存在    //是新建
vim  文件名存在      //是修改
如果没有vim可以使用命令进行安装
yum install vim -y
4.1 三种模式
命令模式
命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本
| 功能 | |
|---|---|
| ctrl+f或者Pagedown | 向下翻页 | 
| ctrl+b或者Pageup | 向上翻页 | 
| Home;^;0 | 跳到本行的行首 | 
| 按 End 键或$ | 跳转到本行的行尾 | 
| 1G 或 gg | 跳转到文件的第一行包括空行 | 
| G | 跳转文件的末尾 | 
| #G | #代表行号数字,直接跳转到#行 | 
| M | 跳转到当前显示页面的中间行 | 
| x或delete | 删除当前光标的字符 | 
| dd | 删除一整行 | 
| #dd | 删除当前光标开始到第#行(包括当前行) | 
| d^ | 删除当前光标之前到行首 往前不包括当前光标处的字符 86 往后删除包括当前光标处的字符 | 
| d$ | 删除当前光标到行尾 | 
| dw | 删除当前光标处的单词 | 
| R 或shift+r | 替换当前光标处文字,会进入替换模式 | 
| yy | 复制当前光标处整行 | 
| #yy | 复制当前光标处向下的#行 | 
| p | 粘贴到光标处下一行 | 
| P | 粘贴到光标处上一行 | 
| u | 只消除上一次可多次使用 | 
| U | U 取消所有操作 | 
| /字符 | 向下查找 | 
| ?字符 | 向上查找 | 
| n | 向同一方向重复上次的查找指令 | 
| N | 
| 功能描述 | |
|---|---|
| i | 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 | 
| I | 行首插入命令 | 
| o | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 | 
| O | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 | 
| a | 在当前光标所在位置之后插入随后输入的文本 | 
| A | 
| 功能效果 | |
|---|---|
| :q | 退出不保存 | 
| :q! | 强制退出不保存 | 
| :w | 保存 | 
| :w 新文件名 | 另存为新文件: | 
| :wq :zz :x | 保存并退出 | 
| :e 其他文件名(如果已修改需要加e!) | 打开新文件进行编辑 | 
| :r 其他文件名 | 在当前文件中读入其他文件内容 | 
| : [替换范围] s /旧的内容/新的内容[/g] | |
| :s /old/new | 替换当前行中的第一个old改为new | 
| :s /old/new/g | 替换当前行中的所有old改为new | 
| :#,# s /old/new/g | #到#行所有old改为new | 
| :%s /old/new/g | %代表全文 全文替换所有old改为new | 
| :# d | 删除 第#行 | 
| :#,# d | 删除#到#行 | 
| :#,# y | 复制三到6 行 | 
| :set nu 或:set nonu | 加行号 不显示行号 | 
| :set cul (:set nocul ) | 光标所在行有下划线(取消) | 
| :set ai xml k8s | 对齐 回车后和上一行对齐 | 
| :set all 可以看所有的一些帮助 | 可以看所有的一些帮助 | 
| :set key=password | 加密码 | 
| :set key=空白 | 取消密码 | 
| :set tabstop=4 (set ts=4) | tab 一次为四个空格 | 
| .!命令 (who,date ) | 
可视化模式
- 
- 
V 面向整行,-- VISUAL LINE -- 
- 
1、先将光标移动到指定的第一行的行首 2、输入ctrl+v 进入可视化模式 3、向下移动光标,选中希望操作的每一行的第一个字符 4、输入大写字母 I 切换至插入模式 5、输入 # 6、按 ESC 键
2.在指定的块插入相同的内容
1、光标定位到要操作的地方 2、CTRL+v 进入“可视 块”模式,选取这一列操作多少行 3、SHIFT+i(I) 4、输入要插入的内容 5、按 ESC键
4.2 配置文件定制vim工作特性
/etc/vimrc   #全局配置
~/.vimrc     #个人配置
系统配置文件位于 Vim 的安装目录(默认路径为 /etc/.vimrc);
| 功能描述 | |
|---|---|
| set nu | 显示行号 | 
| set cul | 突出显示当前行。 | 
| set ai | 设置自动缩进,即每行的缩进同上一节相同。 | 
| set ts=4 | 


总结:

 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号