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(注意不是 user),全称为 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++ 等编程语言头文件的放置目录

/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 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除

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)磁带 归档

tar   [选项]     归档文件名     源文件或目录

tar   [选项]     归档文件名      [-C 目标目录]

选项 功能
c 创建tar格式包文件
x 解开tar格式包文件
-C 解压时指定释放的目标文件夹
f 表示使用归档文件(一般都要带上表示使用tar)
p 打包时保留文件及目录的权限
P 打包时保留文件及目录的绝对径
t  列表查看包内的文件(要和f一起使用)
v 输出详细信息(Verbose)
j 调用 bzip2 程序进行压缩或解压
z 调用 gzip 程序进行压缩或解压

 

 

4.vi编辑器

Linux 系统中“一切皆文件”,因此当我们在命令行下更改文件内容时,不可避免地要用到文本编辑器。

推荐使用 Vi 文本编辑器的原因有很多,比如说:

几乎所有的Linux 发行版都内嵌有 Vim 文本编辑器,而其他的编辑器则不一定存在;

Vim具有编辑程序的能力,会主动利用不同的字体颜色辨别语法的正确性,方便程序设计 接口

vim是vi的升级版

常用选项 功能
+# 打开文件后,让光标处于第#行的行首,+默认行尾
打开上一次文件
+/PATTERN 让光标处于第一个被PATTERN匹配到的行行首用不多

 

格式
vim   选项    文件

vim  文件名不存在    //是新建
vim  文件名存在      //是修改

如果没有vim可以使用命令进行安装
yum install vim -y

 

 4.1  三种模式

命令模式

命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本

此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作

操作键功能
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 向相反方向重复上次的查找指定末行模式

 

输入模式

插入(Insert)或编辑模式:用于修改文本 

使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表所示),当编辑文件完成后按 Esc 键即可返回命令模式。


快捷键功能描述
i 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
I 行首插入命令
o 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
O 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
a 在当前光标所在位置之后插入随后输入的文本
A 行尾插入命令

末行模式

文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。

快捷键功能效果
: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 ) 将date命令插入当前行注意会覆盖当前行

 

可视化模式

在末行有”-- VISUAL -- “指示,表示在可视化模式

允许选择的文本块

  • v 面向字符,-- VISUAL --

  • V 面向整行,-- VISUAL LINE --

  • ctrl-v 面向块,-- VISUAL BLOCK --

1.在指定行的行首插入#号

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);

用户配置文件位于主目录 ~/.vimrc,即通过执行 vim ~/.vimrc 命令即可对此配置文件进行合理修改。通常情况下,Vim 用户配置文件需要自己手动创建。

设置参数功能描述
set nu 显示行号
set cul 突出显示当前行。
set ai 设置自动缩进,即每行的缩进同上一节相同。
set ts=4 设置 Tab 键宽度为 4 个空格。

 

 

 

 

总结:

 

posted @ 2022-09-27 17:50  索罗大魔王  阅读(190)  评论(0编辑  收藏  举报