第二章 Linux文件和目录管理

发布于:2024-04-20 ⋅ 阅读:(28) ⋅ 点赞:(0)

目录

一、Linux树形目录

二、文件/目录的管理命令 

1. 查看文件内容的命令(cat、more、less、head、tail)

2. 统计和检索文件内容的命令(wc、grep)

 3. 压缩解压缩、归档命令(gzip、bzip2、gunzip、bunzip、zip、tar)

4. vi和vim文件编辑器

1. vi编辑器中三种模式的基本操作

① 命令模式

②输入模式

③末行模式

2.命令模式、输入模式、末行模式之间如何切换?


一、Linux树形目录

Linux目录是树形目录结构,我们只有了解这些目录才能对其进行管理。那么从根目录开始有哪些常见目录子呢?

/root root用户的家目录/宿主目录
/home /xxx普通用户的家目录
/bin

用于存放二进制系统文件(外部命令文件,所有用户都能执行的目录)

(/bin是/usr/bin的软链接文件)

/sbin 用于存放二进制系统文件(默认情况下只有管理员可执行的命令文件,普通用户提权才可以使用,/sbin是/usr/sbin的软链接文件)
/boot 存放系统内核文件、系统镜像文件、启动文件目录
/grub 启动菜单文件
/dev 存放设备文件(光盘、光驱等)
/etc 存放系统程序和大部分应用程序(rpm、yum安装)的配置文件
/lib 存放系统程序的动态链接共享库文件,类似于Windows里的DLL文件,目录同时也是个软链接目录,对应usr/lib
/var 存档可变化的文件,包括各种日志文件或数据
/usr 存放系统用户工具和程序
/media 可拆卸的媒介默认的挂载点,如优盘光驱等
/mnt 用于临时挂载储存设备的目录(可以被指定为挂载目录)
/opt 存放第三方应用程序安装包的目录
/tmp 存放系统的临时文件,/tmp目录下的临时文件会被系统定期删除或关机时自动删除(重要文件数据不要存放到这个目录)
/proc 包含虚幻的文件,是虚拟的文件系统,不占用磁盘空间。相当于一种映射,会把内核、CPU等系统状态的信息映射到/proc目录找那个(了解)

二、文件/目录的管理命令 

1. 查看文件内容的命令(cat、more、less、head、tail)                                                                                                     
命令 选项/格式

cat

查看篇幅短小的文件

cat [选项] <文件>

[-n] 即number,对所有输出的行数编号;

[-b] 即number-nonblank,对于空白行不编号;

[-s] 即squeeze-blank,将所有的连续的多个空行替换为一个空行

more

分页查看大文件

more <文件>

=cat <文件> | more

回车、空格往下翻,b/q上下翻页,到底就退出;配合管道符号时不能向上翻页

less

分页查看大文件

less <文件>

=cat <文件> | less

上下方向键、pageup/pagedn翻页;“ ”可查找内容,n查看下一个内容,N查看上一个内容

head

查看前几行内容

head [选项] <文件>

[-n] k/+k  查看前k行的内容;

[-n] -k  查看除了后k行的全部内容;

cat -n <文件名> | head -5  查看前5行内容,并对输出的行数编号

tail

查看后几行内容

tail [选项] <文件>

[-n] +k/-k 都是查看后k行的内容;

[-f] 即follow实时追踪文件内容,适合用于排障;

[-nf] 实时追踪文件后n行内容,只要文件有一变化就同步刷新显示

【示例1】如何查看某文件中第10-20行的内容?

cat -nb local.txt | head -20 | tail -10
#查看local.txt文件中前20行内容的后10行的全部内容,非空行进行输出时显示编号
2. 统计和检索文件内容的命令(wc、grep)                                                                                                                              
命令 选项/格式

wc

统计文件的内容

wc [选项]<文件>

-l 即lines,输出换行符统计数(根据空格、换行或者制表符确认文件的单词数,并输出文件名);cat <文件> | wc - l 仅显示行数不输出文件名;

-w 即words

-c 即bytes、chars字节字符,表示统计字节数,一个中文字符等于两个字节,一个英文字符一个字节,隐藏的换行符占一个字节(echo输入内容有隐藏的换行符,echo -n输入没有隐藏换行符);

-lwc组合使用,表示输出文件的行数、单词数、字节数,并且输出文件名;

wc后不带选项默认等于wc -lwc

grep【☆】

检索和过滤文件内容

grep <xx指定字符> <文件> #输出文件中包含xx字符的行

grep [选项] <文件>

-i 即ignore-case,查找时不区分大小写

-v 即invert match,反向匹配,除了...的行都显示,如grep -i -v OS 文件名,表示除了有OS的行都显示;

-c 即count,统计匹配的总行数,如grep -c centos CentOS-Base.repo 文件中有centOS的行内容;

-n 即line-number,统计匹配的行内容,显示行号;

-o 即only-matching,即精确匹配,即“仅匹配”之意;

-e 即each,实现可多个查找条件的匹配,条件都要匹配;两个-e的命令表示“或”;

-E 支持使用扩展正则表达式,相当于使用egrep命令;

-w 即word-regexp,只显示全字符合的列,以完整单词去匹配;

-l 即列出文件内容符合要求的文件名,如grep -l -R "bbbb" ./ ,表示是要递归查找当前目录下包含bbbb字符串的文件;

-l -R 字符串 /指定目录,表示查找目录下包含某个字符串的文件有哪些;

-A n 即#显示匹配行和它下面的n行;

-B n 即#显示匹配行和它上面的n行;

-C n 即#匹配行和它前后各n行;

"^..." #正则表达式,表示输出以……开头的行;

"...$" #正则表达式,表示输出以……结尾的行;

"^$" #表示空行;

“[....]”正则表达式;

【示例2】查看local.txt中以xxx开头的并且以xxx结尾的行内容,并且显示所在行号

cat -n local.txt | grep "^xxx" | grep "xxx$"

【示例3】查看local.txt中内容,但不想显示空行,也不想查看以xxx开头的行内容

cat local.txt | grep -v "^xxx" | grep -v "^$"

【示例4】查看loca.txt中包含one和two的行内容

grep -e one -b two local.txt 
或grep -e one local.txt | grep two

【示例5】查看当前目录下包含abc123内容的所有文件

grep -lR abc123 ./

【示例6】统计local.txt中包含abc123的行数

grep -o abc local.txt | wc -l

【示例6】查看local.txt中updates上下5行的内容

grep -C 5 pdates local.txt

 3. 压缩解压缩、归档命令(gzip、bzip2、gunzip、bunzip、zip、tar)                                                                            

gzip、bzip2

压缩命令

gzip -1 <文件>......gzip -9 <文件> #数字代表压缩比(0-9),-1压缩速度最快,性能消耗最小,压缩比最低;-9压缩速度快最慢,性能消耗最大,压缩比最高。-6是默认的压缩比,性能最优。

gzip/bzip -9 <文件> #压缩;

gzip -d XXX.gz #解压缩XXX压缩包

bzip2 -d XXX.bz2 #解压缩XXX压缩包

gunzip、bunzip

解压缩命令

gunzip/bunzip2 <文件.gz> #解压缩.gz的压缩包

gunzip -d XXX.gz #压缩

bunzip2 -d XXX.bz2 #压缩

zip

压缩命令

zip [选项 ] <XXX.zip> <要压缩的文件/目录> <要压缩的文件/目录>,压缩;

unizp <被压缩的文件/目录.zip>,解压缩

tar

归档命令【☆】

制作压缩包

tar命令的选项可以不加横杠-

tar [选项] <归档文件> <归档文件> <归档文件>...

-c 即create#创建.tar格式的包文件;

-x 即extract#解开.tar格式的包文件,默认本地;

-C 即#解压.tar格式的包文件,指定释放的目标文件夹;

-f 即file#表示使用tar归档文件来制作压缩或解压缩;

-t #列出包内文件;

-v 即verbose#输出压缩和解压缩的详细信息,包含那些目录和文件;

-P 即paths,打包时保留源文件及目录的绝对路径;

-p 即preserve-permissions,压缩时保留源文件及目录的权限;

-y 即#调用 bzip2程序进行压缩或解压;

-z 即#调用 gzip程序进行压缩或解压;

-j 即#调用 bzip2程序压缩;

-J 即#调用xz程序压缩(了解);

【示例1】调用gzip程序压缩opt目录下所有txt格式的文件和abc整个目录内容到压缩包text.tar.gz。

tar -czvf XXX.tar.gz text.tar.gz /opt/*.txt abg/

【示例2】调用gz解压缩到指定目录

tar xf XXX.tar.gz -C<指定目录> 
4. vi和vim文件编辑器                                                                                                                                                                 

        vi编辑器可创建和修改长文本文件,vim是vi文本编辑器的增强版,有的发行版本或最小化安装的操作系统需要自行安装vim,使用方法与vi基本一致,输入vi/vim <文件名>直接编辑。

1. vi编辑器中三种模式的基本操作
① 命令模式
功能 操作键
打开新文件 :e <其它文件名> 
上下翻页

Page Down键或 Ctrl+F,向下翻页

Page Up键或 Ctrl+B,向上翻页

快速跳转

Home键或^键、数字0键,跳转到本行的行首

End键或$键,跳转到本行的行尾

1G 或 gg,转到文件内容的第 1 行

G,跳转到文件的最后一行

#G,跳转到文件中的第#行(其中“#”号用具体数字替换)

M,跳转至当前页的中间位置

删除

d=delete

x或Delete键,删除光标处的单个字符
dd,删除当前光标所在行(有剪切功能)
#dd,删除从光标处开始的#行内容
d^,删除当前光标之前到行首的所有字符
d$,删除当前光标处到行尾的所有字符
dw,删除光标处的整个单词

替换字符

R=replace

R 或 Shift+r,替换当前光标处字符

查找

/word,从当前光标处开始向后进行查找字符串“word”

?word,从当前光标处开始向前进行查找
n,定位下一个匹配的被查找字符串
N,定位上一个匹配的被查找字符串

复制            
粘贴

剪切            
插入文件内容

文件内容替换

yy,复制当前行整行的内容到剪贴板
#yy,复制从光标处开始的#行内容

--------------------------------------------------------------------------------------------------------

p,粘贴到光标所在行之下
P,粘贴到光标所在行之上   

:8,11 co 4,将8-11行的内容复制黏贴到第4行下面                                                -------------------------------------------------------------------------------------------------------

:8,11 m 4,将8-11行的内容剪切到第4行下面
-------------------------------------------------------------------------------------------------------

:r <其它文件名>,在光标所在下一行插入其他文件内容

-------------------------------------------------------------------------------------------------------

:s /old/new,将当前行中查找到的第一个字符串“old” 串替换为“new”
:s /old/new/g ,将当前行中查找到的所有字符串“old” 替换为“new”
:#,# s/old/new/g,在行号“#,#”范围内替换所有的字符串“old”为“new”
:% s/old/new/g,在整个文件范围内替换所有的字符串“old”为“new”
:s /old/new/c,在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认

撤销

u,按一次取消最近的一次操作;重复u键,撤销多步操作

U,用于取消最后一次操作所在行所做的所有编辑
Ctrl+R,恢复撤销的操作

切换至输入模式 a,在当前光标位置之后插入内容
i,在当前光标位置之前插入内容
o,在光标所在行之下插入一个新行内容
O,在光标所在行之上插入一个新行内容
A,在所在行的行尾插入内容
I,在所在行的行首插入
②输入模式

ESC键退出输入模式,进入命令模式

③末行模式

剪贴内容

:s/OLD/NEW/g, 将光标处所在行的所有OLD字符串替换成NEW字符串;
:% s/OLD/NEW/g, 将所有行的所有OLD字符串替换成NEW字符串;
:N,M s/OLD/NEW/g, 将第 N 行到第 M 行的所有OLD字符串替换成NEW字符串;

:r,文件路径 在光标处所在行下面插入指定的文件内容;

:N,M co,将第 N 行到第 M 行的内容复制到第 # 行下面;
:N,M m,将第 N 行到第 M 行的内容剪切到第 # 行下面

撤销

u,按一次取消最近的一次操作;重复u键,撤销多步操作

U,用于取消最后一次操作所在行所做的所有编辑
Ctrl+R,恢复撤销的操作

保存退出 :w,保存修改的内容
:w 新文件名,另存为其它文件
:q
:q! ,放弃对文件内容的修改并退出
ZZ或:wq、:x,保存当前的文件内容并退出vi编辑器
高亮字符

:shift 3,高亮字符串

:noh,取消高亮

显示行号

:set nu,显示行号

:set nonu,不显示行号

2.命令模式、输入模式、末行模式之间如何切换?

命令模式  ——i a o 等 ——>  输入模式

               <——   ESC  ——

命令模式  ——      :   ——>  末行模式

               <——   ESC  ——