Linux目录和文件管理
目录和文件管理
树型目录结构,根目录“/”,常见子目录“/root管理员家目录 /bin命令 /boot开机启动文件 /dev硬件文件 /etc默认配置文件 /home普通用户家目录的上级目录 /var /usr /sbin”
1、常见目录
一级目录 | 功能(作用) |
---|---|
/bin/ | 存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行 |
/boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
/dev/ | 设备文件保存位置 |
/etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 |
/home/ | 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming |
/lib/ | 系统调用的函数库保存位置(c语言 写的一些固定格式的代码,方便调用) |
/media/ | 挂载目录。系统建议用来挂载媒体设备,如软盘和光盘 |
/mnt/ | 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区 |
/misc/ | 挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。 |
/opt/ | 第三方安装的软件保存位置。 |
/root/ | root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下 |
/sbin/ | 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看 |
/srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
/tmp/ | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。 |
2、查看文件内容
2.1 单页显示
2.1.1 cat
选项 | 效果 |
---|---|
-n | 显示行号包括空行 |
-b | 跳过空白行编号 |
-s | 将所有连续的多个空行替换为一个空行 |
-A | 显示隐藏字符 |
[root@localhost test]#cat -s test1.txt #将连续的空行压缩成一个空行 a b c d e f [root@localhost test]#cat -b test1.txt #空行不编号 1 a b 2 c 3 d e 4 f [root@localhost test]#cat 1.txt 2.txt i am 1.txt##可批量查看文件 i am 2.txt
2.1.2 tac
倒序显示文本
2.1.3 rev
同一行内容逆向显示
2.2分页显示
2.2.1 more
more [选项] 文件名
基本操作
-
空格下一行 到文末后自动退出
-
b上一行
-
enter一行一行滚动
-
自动退出
-
q退出
2.2.2 less
less [选项] 文件名
-
可以使用/ 查找 n向下 N向上查找
-
Page Up 向上翻页,Page Down 向下翻页
-
其余参考more
2.3显示文件前后内容
2.3.1 head默认显示前十行
格式:head 选项 参数
-c num:指定获取前num个字符
-n num:指定获取前num行;num为负数,表示取到倒数第num行之前
head -n +num(num),显示前num行
head -n -num,不显示最后num行
2.3.2 tail默认显示后十行
-f:实时查看
tail -n +num,从第num行显示到末尾
tail -n -num(num),显示最后num行
该文件从第十行开始显示
head -n -k 文件名 tail -n +k 文件名
2.3.3 tr替换
tr [选项]... SET1 [SET2]##SET是一组字符串
tr a b————把所有的字符"a"换
tr -d 1————只要有字符"1"就删除
tr -s a————压缩a文件里紧连的重复字符替换成一个,aaaa变成a
tr -c "[0-9]" 用字符串中字符集的补集替换此字符集,要求字符集为ASCII。
2.3.4 wc (word count)
wc [选项]... 目标文件..
统计列数,wc本身就是参数 word
-
-l:统计行数
-
-w:统计单词个数
-
-c:统计字节数
2.3.5 grep 过滤
grep [选项]… 查找条件 目标文件
-
-i:查找时忽略大小写
-
-v:反向查找,输出与查找条件不相符的行
-
-o 只显示匹配项
-
-f 对比两个文件的相同行
-
-c 匹配的行数([root@localhost ky15]# grep -c root passwd 2)
基本格式
-
要查找的字符串以双引号括起来单引号也可以
-
“^……”表示以……开头,“……$”表示以……结尾
-
“^$”表示空行
选项: -color=auto ##对匹配到的文本着色显示 -m num ##匹配num次后停止 grep -m 1 root /etc/passwd #多个匹配只取第一个 -v 显示不被pattern匹配到的行,即取反 grep -Ev '^[[:space:]]*#|^$' /etc/fstab -i 忽略字符大小写 -n 显示匹配的行号 -c 统计匹配的行数 grep -c root /etc/passwd #统计匹配到的行数 -o 仅显示匹配到的字符串 -q 静默模式,不输出任何信息 -A # after, 后#行 grep -A3 root /etc/passwd #匹配到的行后3行业显示出来 -B # before, 前#行 -C # context, 前后各#行 -e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file grep -e root -e bash /etc/passwd #包含root或者包含bash 的行 grep -E root|bash /etc/passwd -w 匹配整个单词 grep -w root /etc/passwd useradd rooter -E 使用ERE,相当于egrep -F 不支持正则表达式,相当于fgrep -f file 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件 -r 递归目录,但不处理软链接 -R 递归目录,但处理软链接 grep root /etc/passwd grep "USER" /etc/passwd grep 'USER' /etc/passwd grep whoami /etc/passwd
2.3.6 paste
-d 指定分隔符,合并文件
#一个文件放密码一个文件放用户名 [root@localhost ~]#cat user.txt pass.txt lisi liwu liliu 123 345 444 [root@localhost ~]#paste user.txt pass.txt lisi 123 liwu 345 liliu 444 [root@localhost ~]#paste -d: user.txt pass.txt ###分隔符 用冒号隔开 lisi:123 liwu:345 liliu:444
sort 排序;sort [options] file(s);把整理过的文本显示在屏幕上,不改变原始文件;
选项 | 功能 |
---|---|
-r | 执行反方向(由上至下)整理 |
-R | 随机排序 |
-n | 执行按数字大小整理 |
-h | 人类可读排序,如: 2K 1G |
-f | 选项忽略(fold)字符串中的字符大小写 |
-u | 选项(独特,unique),合并重复项,即去重 |
-t | 指定分隔符 |
-k | 指定列 |
split分割文件
常用选项: -b(字节):指定按多少字节进行拆分,也可以指定 K、M、G、T 等单位。 -<行数>或-l<行数>:指定每多少行要拆分成一个文件。 输出文件名前缀:设置拆分后的文件的名称前缀,split 会自动在前缀后加上编号,默认从 aa 开始。 -a(后缀长度):默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。
3、压缩、解压
3.1 gzip、bzip2
无法作用于文件夹。
gzip [-9] 文件名… 提高压缩比例,但是文件较大时效率会低 bzip2 [-9] 文件名... gzip -d .gz格式的压缩文件 d就是解压 bzip2 -d .bz2格式的压缩文件
9代表压缩比率,9最大1最小,默认压缩之后删除源文件;gzip的压缩率 要高于bzip2。
3.2归档tar
tar可以把文件打包在一起,故而可作用于文件夹
选项有顺序要求
格式:tar [选项] ... 归档文件名 源文件或目录
先取名再找目标文件
选项 | 功能 |
---|---|
-c | 创建(Create).tar 格式的包文件 |
-x | 解开.tar 格式的包文件 |
-C | 解压时指定释放的目标文件夹 |
-f | 表示使用归档文件(一般都要带上表示使用tar) |
-p | 打包时保留文件及目录的权限(不常用) |
-P | 打包时保留文件及目录的绝对径(不常用) |
-t | 列表查看包内的文件(要和f一起使用) |
-v | 输出详细信息(Verbose) |
-j | 调用 bzip2 程序进行压缩或解压 |
-z | 调用 gzip 程序进行压缩或解压 |
选项不加“-”没有顺序要求;加“-”要注意顺序;c用于压缩,x用于解压,“f”放在最后;
解压时,选项可以直接用"xf"
[root@localhost data]# tar -zcvf vm.tar.gz vm1 vm2 zz vm1##进行压缩 vm2##因为v输出了信息 zz/ [root@localhost data]# tar -jcvf vm.tar.gz vm1 vm2 zz [root@localhost data]# tar -zxvf vm.tar.gzip -C /opt vm1 vm2 zz/ [root@localhost zz]# tar -tf vm1.tar.gzip vm1##tf可以在不解压下查看所文件
4、vi编辑器
是vi的升级版,类似window的word
格式:vim 选项 文件——文件名不存在,就是新建;文件名存在,就是修改。
4.1命令模式
命令模式:此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。
unix是linux的前身,类unix操作中输入的命令是完整的单词
退出VIM
ZZ 保存退出 ZQ 不保存退出 ########## 光标跳转 ############## h: 左 L: 右 j: 下 k: 上 ###单词间跳转 w:下一个单词的词首 e:当前或下一单词的词尾 b:当前或前一个单词的词首 #COMMAND:由#指定一次跳转的单词数 当前页跳转: H:页首 M:页中间行 L:页底 zt:将光标所在当前行移到屏幕顶端 zz:将光标所在当前行移到屏幕中间 zb:将光标所在当前行移到屏幕底端 行首行尾跳转: ^ 跳转至行首的第一个非空白字符 0 跳转至行首 $ 跳转至行尾 行间移动: #G 或者扩展命令模式下 :# 跳转至由第#行 G 最后一行 1G, gg 第一行 命令模式翻屏操作: Ctrl+f 向文件尾部翻一屏,相当于Pagedown Ctrl+b 向文件首部翻一屏,相当于Pageup Ctrl+d 向文件尾部翻半屏 Ctrl+u 向文件首部翻半屏 字符编辑 x 剪切光标处的字符 #x 剪切光标处起始的#个字符 xp 交换光标所在处的字符及其后面字符的位置 ~ 转换大小写 J(大写) 删除当前行后的换行符 替换命令(replace) r 只替换光标所在处的一个字符 R 切换成REPLACE模式(在末行出现-- REPLACE -- 提示),按ESC回到命令模式 删除命令(delete) d 删除命令,可结合光标跳转字符,实现范围删除 d$ 删除到行尾 d^ 删除到非空行首 d0 删除到行首 dw 下一个单词的词首 de 当前或下一个单词的词尾 db 当前或上一个单词的词首 #COMMAND dd: 剪切光标所在的行 #dd 多行删除 D:从当前光标位置一直删除到行尾,等同于d$ 删除的内容会存入类似缓存表里,可以设置存放位置 复制命令(yank) y 复制,行为相似于d命令 y$ y0 y^ ye yw yb #COMMAND yy:复制行 #yy 复制多行 Y:复制整行 粘贴命令(paste) p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面 P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面 改变命令(change) 命令 c 删除后切换成插入模式 c$ c^ c0 cb ce cw #COMMAND cc #删除当前行并输入新内容,相当于S #cc C #删除当前光标到行尾,并切换成插入模式,相当于c$ 查找 /PATTERN:从当前光标所在处向文件尾部查找 ?PATTERN:从当前光标所在处向文件首部查找 n:与命令同方向 N:与命令反方向 撤消更改 u 撤销最近的更改,相当于windows中ctrl+z #u 撤销之前多次更改 U 撤消光标落在这行后所有此行的更改 Ctrl-r 重做最后的“撤消”更改,相当于windows中crtl+y . 重复前一个操作 #. 重复前一个操作#次 100iky18 [ESC] 重复的次数 i(输入模式) 重复的内容 esc 命令模式 di" 光标在“ “之间,则删除” “之间的内容 d i " "之间的内容就会删除" yi( 光标在()之间,则复制()之间的内容 vi[ 光标在[]之间,则选中[]之间的内容 dtx 删除字符直到遇见光标之后的第一个 x 字符 ytx 复制字符直到遇见光标之后的第一个 x 字符
4.2 输入模式
输入模式: 使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按 Esc 键即可返回命令模式。
切入到输入模式
快捷键 | 功能描述 |
---|---|
i | 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动 |
l | 行首插入命令 |
o | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
O | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
a | 在当前光标所在位置之后插入随后输入的文本 |
A | 行尾插入命令 |
4.3 末行模式
-
末行模式:文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。
######################基础命令################### # #具体第#行,例如2表示第2行 #,# #从左侧#表示起始行,到右侧#表示结尾行 #,+# #从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行 . #当前行 $ #最后一行 .,$-1 #当前行到倒数第二行 % #全文, 相当于1,$ /pattern/ #从当前行向下查找,直到匹配pattern的第一行,即:正则表达式 /pat1/,/pat2/ #从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 #,/pat/ #从指定行开始,一直找到第一个匹配pattern的行结束 /pat/,$ #向下找到第一个匹配patttern的行到整个文件的结尾的所有行 ###################地址定界后跟一个编辑命令############################# d #删除 y #复制 ###########################另存为############################# w file #将范围内的行另存至指定文件中 r file #在指定位置插入指定文件中的所有内容 .!命令 #将命令执行结果贴到当前光标处 ###################查找并替换########################## 格式: 范围 s/要查找的内容/替换的内容/g 说明: 要查找的内容:可使用基本正则表达式模式 替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查 找到的整个内容 修饰符: i #忽略大小写 g #全局替换,默认情况下,每一行只替换第一次出现 c #全局替换,每次替换前询问 查找替换中的分隔符/可替换为其它字符,如:#,@ 范例: s@/etc@/var@g s#/boot#/#i ################行号################## 显示:set number,简写 set nu 取消显示:set nonumber, 简写 set nonu #########忽略字符的大小写############### 启用:set ignorecase,简写 set ic 不忽略:set noic ##############自动缩进############ 启用:set autoindent,简写 set ai 禁用:set noai ############复制保留格式############## 启用:set paste 禁用:set nopaste ###########显示隐藏字符############### 显示Tab ^I和换行符 和$显示 启用:set list 禁用:set nolist ##############tab用指定空格的个数代替############# 启用:set tabstop=# 指定#个空格代替Tab 简写:set ts=4 ###############设置光标所在行的标识线############# 启用:set cursorline,简写 set cul 禁用:set nocursorline ######################加密########################## 启用: set key=password 禁用: set key= #######################set 帮助##################### set all
4.4 可视化模式
在末行有”-- VISUAL -- “指示,表示在可视化模式
允许选择的文本块
-
v 面向字符,-- VISUAL --
-
V 面向整行,-- VISUAL LINE --
-
ctrl-v 面向块,-- VISUAL BLOCK --
范例:在文件指定行的行首插入#
(不常用,且不实用)
vim编辑器类似win的word
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了