文件管理
2022-10-07 08:13:39 0 举报
AI智能生成
Linux-文件管理 文本管理 vim 压缩 查找
作者其他创作
大纲/内容
文件管理
除了字符“/”之外,所有的字符都可以使用,但尽量避免特殊符号
由于linux严格区分大小写,所以尽量都用小写字母,大写的一些可能含有特殊意义
如果需要对文件名进行分割,最好使用下划线 _ 不要使用空格
文件名最好见名知意
名字的组成
目录名或文件名的长度不能超过 255 个字符
文件名长度
同一个文件夹下文件名唯一
Linux文件夹创建时不能重名
Linux的文件大小写区分
扩展名对 Linux 操作系统没有特殊的含义,Linux 系统并不以文件的扩展名开分区文件类型。
文件扩展名只是为了方便区分文件的作用
Linux文件扩展名
文件命名规则
[root@localhost lxh]# mkdir 测试目录
不加任何参数,当前目录创建空的文件夹
mkdir -p ./digui/wenjian
-p:递归创建所有目录,当有目录不存在时可以用它解决
mkdir ./王者 /opt/lol /dnf ../cs
.同手创建多个文件夹,注意绝对相对路径
创建 mkdir
rmdir ./测试目录/
注意是删除空的文件夹,可以用于批量删除空文件夹
rmdir ./digui/rmdir: 删除 \"./digui/\" 失败: 目录非空
文件夹不为空会报错
删除 rmdir
1.目录创建和删除
touch filename
1创建普通文件,当文件不存在时,创建
2.如果文件已经存在,可以修改文件的时间戳
touch ./hhh.txt /tmp/ow /etc/永劫
4. 利用bash的花括号展开功能 {}
创建 touch
[root@localhost lxh]# yum install tree -y
1.tree命令需要安装
tree -NF /tmp/lxh
-N 显示中文 -F 显示文件类型
2.查看目录结构
3.文件夹的路径必须是绝对路径
查看文件目录的结构 tree
删除多个文件时,每个文件都需要进行一次确定,会很麻烦
作用:删除文件或文件夹(你必须具有权限才能删除)
千万千万要注意,不要写错字符
rm -rf digui/
递归删除 -r
#不出现提示信息,干净,但是一定要确保不出错
rm -f 2.txt
强制删除 -f
删除Linux下的所有的资料
rm -rf /*
删库跑路
删除 rm
2.文件创建和删除
> vim /etc/profilealias rm='rm -i'> source /etc/profile
> vim /etc/bashrcalias rm='rm -i'> source /etc/bashrc
root的在/etc/profile
> vim ~/.bashrcalias rm='rm -i'> source ~/.bashrc
普通用户 家目录下 ~/.bashrc
如果需要永久生效,还是需要写入配置文件
昵称别名,会显示命令包含的默认选项
[root@lrhcg ~]# alias rm='rm'
对rm进行修改
#可以按照 变量=‘变量值’ 进行理解
alias lg='ls /var/log'
可以自定义简单命令,简化繁琐的路径和命令,便于使用
unalias lg(别名名称)
unalias
删除别名
alias
别名命令
常常在自定义安装程序后,方便修改PATH
ln -s 源文件 目标文件
建立软连接
注意目录不能创建硬链接
直接使用为建立硬连接
类似于windows的快捷方式
ln
链接
复制文件/文件夹到指定的位置
[root@lrhcg lxh]# cp -r ../lxh /tmp
递归拷贝,包含文件夹
如果存在同名文件会把文件夹复制到该文件夹下,而不是重命名
拷贝时注意路径,并且是否于重名文件
cp
mv /tmp/小刘 /opt/
1.移动单个文件
mv /tmp/lxh /opt/lxh1
2.移动并且重命名
3.当有相同文件或文件夹名字时。不会重命名,存在会移动到对应文件夹内
剪切操作,同时也可以对文件进行重命名
mv
复制剪切
## 注意不能使用find去寻找,引文其路径下会带有和修改字符一样的字符 修改了就无法找到正确的路径导致报错
rename 原名 修改后的 需要修改的文件
rename
文件重命名
文件管理命令
作用:防止你删除了文件,或者系统崩溃,可以类比于打游戏的存档。
注意查看左下角的备份是否完成
添加快照
可以回退到之前,添加的快照时间点
回退快照
对已有的快照进行管理,修改,删除等
管理快照
3个选项
虚拟机快照
-c,create 创建的意思
-v,显示打包文件过程
tar -cvf all_robot.tar 机器人.txt 机器人2.txt 机器人1.txt
-f,指定打包的文件名,此参数是必须加的。且必须在最后一位!!!
tar -tf all_robot.tar
-t,查看打包的文件内容
-u,update缩写,更新原打包文件中的文件
一个文件或目录的集合,而这个集合被存储在一个文件中。
打包
tar -czvf all_file.tar.gz 机器人*
-z,压缩为.gz格式 ,主流的使用
-j,压缩为.bz2格式
-J,压缩为.xz格式
将大文件压缩成小文件,节省磁盘空间。
压缩
tar -xf ./rh/all_robot.tar
-x 解包
ar -xzvf all_file.tar.gz
解压缩包时需要注意,使用的什么压缩格式,就需要加上什么参数这里可能就需要通过文件的后缀进行分辨
将压缩的文件,解压出来,恢复成正常文件
解压缩
同时使用tar命令压缩时,文件和文件夹都可
三者的区别就是通过不同的参数来调整起到的作用
当年下载了文件后,只要不修改里面的内容,MD5的值就不会发生改变
[root@localhost opt]# md5sum tengine-2.3.3.tar.gz 01651b1342c406b933490dd8f2962b36 tengine-2.3.3.tar.gz
- 关于网络下载文件的正确性确认(查看MD5值)
压缩,解压缩 tar
结果是 all_txt.zip
zip all_txt ./*
执行命令完成后,会自动为文件加上后缀
直接使用是压缩文件
zip -r all_txt2 ./jqr* robot/
-r 递归压缩(压缩文件夹)
zip 压缩
[root@localhost lxh]# unzip all_txt.zip
直接解压缩
[root@localhost lxh]# unzip all_txt2.zip -d /tmp/lxh/
指定文件夹解压缩需要加参数 -d
解压缩zip文件,unzip为.zip压缩文件的解压缩程序。
unzip 解压缩
zip压缩与解压缩
可以移动光标位置,输入快捷键指令,对文件进行编辑
命令模式(Command mode)
可以对文件内容进行编辑。
输入模式(Insert mode)
进行一些特殊操作
末行模式(Last line mode)底线模式
还有个特殊的可视化模式
三模式
1.vim 文件名
2.直接输入 :wq! 保存退出
3. 自动创建一个空文件,文件名为自己编辑的
1.创建文件
当你不保存写入的内容
:q!
不保存退出,该文件没有的话,不会建立
注意:必须在英文状态才能输入冒号,进入底线模式
2.不保存退出
vim创建文件
仅仅只是语句还好
如果有代码,有固定的格式的
运维高级的配置文件
有格式的文本信息,就得进入vim的粘贴模式,方可保持正确的格式
当直接粘贴时
:set nu 显示vim行号
打开vim 的行号显示,可以突出效果
方法1:光标移动、上下左右
方法2:四个字母 h、j、k、l,防止有的键盘没有上下左右
光标的移动
gg 移动光标到文档的首行
G 移动光标到文档尾行 【按下 shitf + g】
移动光标到文档的开头和结尾
输入数字0 到行首
输入字符$ 到行尾 【shift+4】
移动光标到每一行的开头和结尾
整页翻页命令为: Ctrl + f
翻半页命令为: Ctrl + d
翻屏
按下,行号 + G,即可快速跳转
冒号加行号 :12
定位到指定行(重点)
复制单行
yy
粘贴到下一行
p
按下大写P,粘贴到上一行。
复制单行、粘贴单行
n数字 光标向下复制n行(包括光标所在行本身)
nyy
复制多行、粘贴多行
复制粘贴
按下u即可撤销上一步的动作
u
撤销
恢复vim撤销的内容
ctrl+r
恢复
剪切光标所在行
可以自由选择粘贴
dd
剪切多行
ndd
作用: 删除当前行、光标处、以及后续内容。
D
剪切、删除
一个一个字符的删除
x
删除光标所在的位置
dG
删除当前光标的位置,以及行文档的末尾,所有的内容
多行删除
vim 文件名 直接进入后就到了命令模式
vim的命令模式
:w 保存写入 不会退出
:w 需要保存的路径以及文件名 #必须是一个文件路径,不能是文件夹
:w /tmp/yuchao.txt 另存为文件
1.写入数据write
:q 退出文件,不保存操作
一般都是结合感叹号使用
2.退出quit
强制写入且退出
输入 :wq!
:x!
3.常用语法,保存且退出(重点)
表示搜索
此时查找的字符就会高亮
输入 /你要查找的字符
取消查找的高亮,输入指令 :noh
忽略大小写
:set ic
关闭忽略
:set noic
查找忽略大小写
4.vim的搜索与查找功能
取消行号的显示 :set nonu
指令 :set nu表示 set number
5.显示行号
:syntax on 打开语法显示
:syntax off 语法颜色关闭
注意,必须是脚本文件或者其他程序
.py .html 等
1.判断文件的结尾,后缀,是否为特定语言的格式
#!/bin/bash
2.你的文件的开头有对应语言的声明,称之为语言头,文件头声明
如何使vim进行正确的颜色区分
6.彩色vim模式
需要确保光标所在行
单行替换,替换一次:s/源内容/新内容/
全部会修改
指令,多了一个g:s/源内容/新内容/g
单行替换
语法,多了一个百分号,替换整篇文章中,第一个匹配上的字符,每一行的:%s/yuchao/wuyanzu/
替换整篇文档中,彻底所有符合的条件,说白了就是把全篇文章,所有的yuchao,替换为wuyanzu:%s/yuchao/wuyanzu/g
全篇替换
全局替换
可以通过该功能来对文件进行批量重复的修改
7.替换功能
:set paste 粘贴模式:set nopaste 取消粘贴模式
vim默认的复制粘贴,会导致格式错乱,无法使用配置文件
8.paste粘贴模式
在命令模式下,输入冒号: ,即进入底线模式 (英文的冒号,斜线也行)
vim 底线模式
1.先确定好你的光标位置
2.按下 CTRL+v 进入可视化选择模式
3.此时可以通过键盘来,上下左右来选择区域
输入大写的I,进入批量的编辑模式
4.接下来可以进入编辑模式,去多行修改文本了
通常使用在添加多行注释
批量多行删除注释
可视化块,总之是vim的多行批量操作vim本身的是行操作,这个是列操作
可视化模式
vim去写文件数据
1.多人同时编辑了一个文件
1.保存是数据要
rm -rf xxx.swp
直接删除该swp文件即可
2.保存的数据不要
2.你编辑一个文件时没有正常保存退出
出现的情景
作用:Linux为了保护你的文件数据
注意:该文件是隐藏文件,以点开头,需要用ls -a 来查看
vim的关于swp文件处理
文本编辑器vim
cat /etc/nginx
查看系统的配置文件
cat是一次性把文件内容读取出来,写入到内存再显示出来
cat /etc/passwd
查看系统的用户信息
cat -n /etc/passwd
显示行号 -n
cat -b /1.txt
对非空行输出编号 -b
cat --E /etc/1.txt
多行文本写入
在每行的结束处显示特殊符号$ -E
cat file1 file2 file3
可以连续读取多个文件
重定向覆盖输出符,数据从左边,写入到右边
>
重定向追加输出符,数据从左边,写入到右边
>>
重定向覆盖输入符,数据从右边,写入到左边
<
重定向追加输入符,数据从右边,写入到左边
<<
结合重定向进行使用
cat >> gushi.txt << EOF 写入数据 EOFEOF是一个关键字 end of file 文件的结束
使用cat命令来实现多行内容写入
所以不适合读取大的文件内容,适合阅读小文件
cat命令
tac 文件名
将每个指定文件按行倒置并写到标准输出。
tac命令
一次性读取所有内容到内存,不适合打开大的文件,占资源
分屏查看文件内容,一般用于读取较多内容文件
more命令
空格 翻篇
回车 下一行
q 退出
使用方法
分屏读取文件,不是加载整个文件,而是读多少,加载多少
less命令
查看文件内容
默认显示前10行,可以传入数字参数
head -2 1.txt
指定前多少行 -n
显示文件前N行
head命令
默认显示后10行,可以传入数字参数
tail -2 1.txt
指定后多少行 -n
工作里常用来tail查看日志,以及持续检测日志文件内容变化
tail -f /var/log/messages
tail -F fileName
更适应用实时跟踪日志 -F即使文件不存在,后建立也可以但是得注意路径!!!
可以实时的检测,文档内添加的数据
tail是从结尾看
tail命令
局部查看文件
wc -l /var/log/* 可以同时统计多个文件
1.统计文件的行数 -l
[root@lrhcg ~]# wc -w 1.txt
2.统计单词数 依照空格来判断单词数量 -w
wc -c 1.txt
3.-c:表示bytes, 字节数(空格,回车,换行)
用来统计文件内的信息
wc命令
默认的就是这样,而且什么都不加,就是默认本文件夹信息 (点 .)
单位默认大小是KB
-s :summaries,只显示汇总的大小,统计文件夹的大小
du -h *
-h:表示以高可读性的形式进行显示
查看文件或目录(会递归显示子目录)占用磁盘空间大小
du命令
统计文件信息
find / -name 'lxh'
精确搜索,直接写死了的
find / -name 'lxh*'
模糊搜索,可以使用几个字母加*
选项 -name 查找文件的名字
.log .png .sh 等等,都是普通文件
-type f 文本类型的数据
-type d 找到文件夹类型的数据
选项 -type 选定文件的类型可能有同名的文件和文件夹便于进行区分
可以一次性找出多种压缩格式文件
find / -type f -name '*.tar' -o -name '*.tar.gz' -o -name '*.zip'
或者 -o
大于20m
find / -type f -size +20M -name '*.log'
超过指定大大小的
等于20m
find / -type f -size 20M -name '*.log'
正好指定大小的文件
小于20m
find / -type f -size -20M -name '*.log'
小于指定大小
可以是超过,小于 或者是刚刚好
文件大小 -size
find / -name '*.txt'
* 任意字符
通配符查找
查找属主含有suid权限的文件
-ls 格式化打印输出
find / -type f -perm -4000 -ls
find提供权限查找的参数, -perm
find /var/log/ -name '*.log' -mtime +10 -exec rm -f {} \\;
-exec 跟着shell命令,结尾必须以;分号结束,考虑系统差异,加上转义符\\;{}作用是替代find查阅到的结果,{}前后得有空格
将找到的文件等当成一个一个的参数进行传递
-exec
在删除时会确认,没有输入y的保持原样
find /opt/lxh/ -name '*.log*' -ok rm {} \\;
在删除是会提醒是否删除
更加的安全和友好
比上面多了一个确认的过程
-ok
找到资料后进行动作处理
详见文件时间
关于Linux文件时间的查找
语法:find 搜索路径 选项 选项值
用于搜索整个linux系统中的文件、文件夹,便于你找出机器上的文件。
find命令
文件查找命令
注意名字是区分大小写的
不仅仅只是文本,只要是文本数据九可以
grep '关键字' 文件名
grep '关键字' 文件名1 文件名2 文件名3
可以在多个文件中查找信息
直接在文件中寻找
在文件中不管是a还是A都会查找出来
grep -i 'aaa' /*
忽略大小写的参数 -i
grep -n 'xxx' /*
显示行号参数 -n
ps -ef | grep 进程名 | grep -v 'grep'
常使用在过滤自己
及忽略特定信息
显示不匹配的行 -v
找到包含lxh的文件,并且标出文件名
find / -name '*.txt' -type f | xargs -i grep -l 'lxh' {}
匹配多个文件时,显示匹配的文件名 -l
grep -R
递归进行查找 (当存在子目录时)
grep作用:直接在文件中搜索出你想要的数据,且显示。
grep作用是从文件中查找,并非是文件夹内查找
并且查找的是那一行信息,按行来查找
命令1执行完会有结果(stdout),输出以管道符为分界线命令2等待接收数据,等待数据的stdin,输入,再次进行加工可以再用管道符
结合管道符,实现两个命令的二次加工
文件内容
命令的执行结果
源数据来源
管道符在Linux中的表达为 |
管道符
grap 命令 筛选
就是把 其他命令的给它的数据传递给它后面的命令作为参数
find /opt -name '*.log' | xargs -i cp {} {}.back
-i 使用{}括号来代替传递的数据
你真的想实现二次加工,对数据进行二次处理,就得借助xargsgrep只是对结果文本进行加工,而不是文件内的数据进行加工
xargs命令
date
以机器的当前时间为准
相关的命令包括 touch mkdir 或vim等建立
代表这个文件什么时间被创建
创建时间
关乎于不同的Linux命令
如cat等等,只看了没操作
只是访问了该文件,没有发生实质性的变化
代表这个文件什么时间被访问
访问时间
文件内容或属性发生了改变
代表这个文件什么时间被修改
修改时间
- Access 指最后一次读取的时间,当“该文件的内容被取用”时,就会更新这个读取时间- Change 指最后一次修改元数据的时间 ,当该文件的“状态”改变时,就会更新这个时间。 也就是说,当文件的权限与属性被更改时,就会更新这个时间。(权限和文件名)- Modify 指最后一次修改数据的时间,当该文件的“内容数据”更改时,就会更新这个时间。(修改的里面的内容)会同时导致changtime 也发生改变。
touch -d \"2018-08-08 13:00\" -a /tmp/yuchao_linux.txt
-a access
touch -d \"2020-07-07 07:00\" -m /tmp/yuchao_linux.txt
-m modify
-c change
touch -d 时间
时间的格式 年-月-日 时:分:秒
修改文件的时间属性
多少天之前的
+时间
正好对应的时间
时间
多少天之内的
-时间
-mtime -atime -ctime
使用find来通过时间查找
文件时间
tar -zxvf all_nginx.tgz
万能的解压缩命令
tar -xvf all_nginx.tar
当没有压缩时,直接解包
tar
gzip -d all_nginx.tgz
可以先去压缩
gzip
cat t1.txt | sort -nr
sort是对文本排序的,默认是以第一位字符进行大小比较
sort
因此需要去重的话,必须先进行sort排序
uniq是通过将两个临近的行进行对比。而不是全局进行对比,所以需要先排序!!!
uniq 从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。
cat t1.txt | sort -n | uniq -c
uniq
dig @223.5.5.5 apecome.com
语法 dig @自己设定的DNS 需要查询的域名
dig
退出 ctrl+c exit
> server 8.8.8.8
可以指定解析的dns
> www.yuchaoit.cn
输入需要解析的域名
交互式,直接输入该命令
nslookup 域名
非交互式
nslookup
# 把当前登录的机器的 /etc/passwd文件发给别人 scp /etc/passwd root@192.168.0.158:/opt
scp 源数据的机器 远程机器
发送
scp root@192.168.0.158:/etc/passwd /opt/
scp 你想要的数据机器 放到那
接受
scp远程传输
scp
使用rm删除的文件其实还是可以找回来的
随机写入二进制数据到文件中,比较危险,不推荐使用[root@yuanlai-0224 test_tar]# shred gushi.txt
粉碎文件,是随机写入一堆二进制数据,导致原文件无法使用
shred
for i in {1..30};do echo $(expr $RANDOM / 1000 ) ;done> t1.txt
生成随机数
操作命令补充
0 条评论
回复 删除
下一页