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