Linux文件操作(命令)
Linux02
文件子系统
移动文件或者目录
mv [选项] 源文件 目标文件|目标路径
- 执行mv命令的效果和Windows下的剪切-->粘贴的效果一样
-
和cp命令一样,mv命令会出现覆盖现存文件的情况,mv也可以使用-f或者-i选项来关闭或者开启提醒
-
Linux里面没有专门的重命名命令,使用mv命令移动到原来的目录下面就可以实现重命名了
常见有三种用法(和 cp 操作类似):
1、mv file1 file2
如果file2不存在,则重命名;如果file2存在,则覆盖file2里面的内容。(加 -i 选项则在覆盖前添加警告)
2、mv file dir
此操作要求dir目录存在,将file 移动到dir 目录下
3、mv dir1 dir2
如果dir2不存在,则重命名;如果dir2存在,则将dir1移动到dir2中
注意与cp操作的区别,如图:
删除文件
rm [选项] 文件|目录
-
使用rm,cp和mv导致文件被覆盖或者删除都是 不可恢复的!
-
不要以root的身份或者是sudo权限来执行 rm -rf,这会造成不可恢复的后果
-
和rm以及cp命令一样,rm也可以使用-f选项来实现强制删除,使用-i选项来实现删除前交互提示,使用-r选项来实现递归删除目录及目录下文件
树状目录结构显示
首次使用之前需要先安装tree
sudo apt install tree
使用tree命令就可以显示目录的树状结构,显然,tree命令可以将目录的树形结构用图形化的方式打印出来,在tree命令之后添加-h选项,可以增加文件大小输出。
tree 路径名
tree -h 路径名
如果对tree命令的详细命令不了解,可以在安装完tree以后再使用man命令查看命令帮助,下面是使用tree以后的输出结果:
创建文件
三种方式:
echo "hello world" > a.txt
touch b.txt
vim c.txt
查找文件
索引
-
在Windows的旧版本当中,想要搜索一个文件是非常缓慢的。为了实现快速查找,在Windows 10和Linux系统当中,系统会专门维护一个索引文件
-
在Linux当中,索引文件是存放在具体的磁盘文件前面的,索引文件里面存放了各个文件的位置信息和其他信息。可以使用索引来实现快速查找。
locate命令
查找倒排索引库
which命令
find命令(最常用)
使用find命令可以根据查找条件来在起始目录之下来查找文件,然后再执行指定的操作
find 起始目录 查找条件 操作
根据名称和文件属性查找
-
-name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]
-
-type x 查找类型为x的文件
使用示例:
组合查找
根据用户名(用户ID)和组名(组ID)查找
-
-gid n 查找属于ID号为n的用户组的所有文件
-
-uid n 查找属于ID号为n的用户的所有文件
-
-group ’字串’ 查找属于用户组名为所给字串的所有的文件
-
-user ’字串’ 查找属于用户名为所给字串的所有的文件
使用示例:
根据权限查找
- -perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644
使用示例:
根据文件大小查找
- -size n[bckw] 查找指定文件大小的文件,n后面的字符表示单位,缺省为b,代表512字节的块
- -empty 查找在系统中为空的文件或者文件夹。
注意理解向上取整的意思:
比如此处,寻找文件大小为5M的文件,即会找出文件大小为 (4M,5M] 的文件。
还可以配合"+"和"-"使用,这里的"+"的意思是搜索比指定大小还要大的文件,"-" 的意思是搜索比指定大小还要小的文件:
查找在系统中为空的文件或者目录:
find . -empty
根据时间查找
-
-amin n 查找n分钟以前被访问过的所有文件(+表示n分钟之前,-表示n分钟之内,+号和-号都不能省略)
-
-cmin n 查找n分钟以前文件状态被修改过的所有文件
-
-mmin n 查找n分钟以前文件内容被修改过的所有文件
-
-atime n 查找n天以前被访问过的所有文件
-
-ctime n 查找n天以前文件状态被修改过的所有文件
-
-mtime n 查找n天以前文件内容被修改过的所有文件
-
其他的查找条件可以在man帮助里面找到
查看文件内容
cat命令
cat [选项] [文件]
一些选项参数
-
-b 对非空输出行编号
-
-E 在每行结束处显示$
-
-n 对输出的所有行编号
-
-s 不输出多行空行
示例:
head命令和tail命令
使用head命令默认可以显示文件的前10行,但可以添加 -n 选项来改变显示的行数:
head [–n 行数值] [文件名]
类似于head命令,tail命令默认显示后十行:
tail [–n 行数值] [文件名]
其他:
more 文件名
# 进入以后使用f和b向前向后翻页,使用q退出浏览
使用more或者less命令来单页浏览文件
搜索文件内容
使用grep命令可以查找文件内容
$ grep [选项][查找模式][文件名1,文件名2,…]
grep : gloablly search for a regular expression
-
选项中使用-E,可以使用拓展正则表达式规则,否则默认采用基本规则
-
使用 -n 在输出前加上匹配串所在的行号
一般我们最常用的是这种格式:
grep -nE patter 文件名
例如:
正则表达式
和find命令使用通配符有所区别,grep使用正则表达式的方式来进行模式匹配。正则表达式是利用通配符(特殊字符)来定义了规则,从而和文本进行匹配。grep命令的目标就是找到符合规则的字符串集合
正则表达式语法:
-
单个字符是匹配的基本单位,比如a就能够匹配含有字母的字符串集合。几乎所有的字母和数字都能够匹配它们本身
-
反斜杠+某些字符构成转义字符,它们作为整体可以看成是一个特殊的单个字符
-
大部分的通配符规则:
a|b 匹配 a 或 b 使用-E
gr(a|e)y 匹配 gray 或 grey
. 匹配任一字符
[abc] 匹配任一字符:a或b或c
[^abc] 匹配任一字符,但不包括a,b,c
[a-z] 匹配从 a 到 z 之间的任一字符
[a-zA-Z] 匹配从a到z,及从A到Z之间的任一字符
^表达式 匹配字符串的头部 使用-E
表达式$ 匹配字符串的尾部 使用-E
( ) 匹配标记的子表达式 使用-E
\b 匹配字词边界
\n 匹配第n个标记的子表达式,n代表1到9
* 匹配前一项内容0或多次
? 匹配前一项内容0或1次 使用-E
+ 匹配前一项内容1或多次 使用-E
{x} 匹配前一项内容x次
{x,} 匹配前一项内容最少x次
{,x} 匹配前一项内容最多x次
{x,y} 匹配前一项内容次数介于x和y之间 使用-E
\ 转义字符
常用的有以下内容:
基本单位:字符、转义字符、[abc]、(expr)、.(匹配任意字符)
基本操作:操作的对象是基本单位
1、连接:"ab"、"[abc]x"、".txt"、" \ .txt"
2、重复:
+:重复至少一次
?:重复 0 次或 1 次
*:重复任意次数
{x}:重复 x 次
{x,y}:重复[x,y]次
{x,}:只是重复 x 次
指定基本单位出现的位置:
使用示例:
grep -nE "\<f[^ ]*t\>" The_Holy_Bible.txt //匹配以 f 开头,t 结尾的单词
命令的组合
使用 ;
示例:
mkdir test;cd test
使用管道 |
此方法是将上一命令的输出,当作下一个命令的输入
管道 + args
权限相关
修改权限
-
文件的权限有三种,依次是读、写和执行
-
从命令ls -l的打印结果中可以得知,这种三种权限还会根据用户的身份而有所不同。文件的拥有者、文件拥有者的同组其他成员以及其他用户对文件的权限会有所区别
使用chmod可以修改文件的权限:
文字设定法
chmod [who][+|-|=][mode] 文件名
# who代表用户类型:u表示用户,g表示组成员,o表示其他用户,a或者不写代表所有用户(ugo三个字母可以组合)
# +|-|=代表操作符:+表示添加某个权限,-表示取消某个权限,=表示设置成某种权限
#mode代表模式,使用rwx三个字母的组合,r表示可读,w表示可写,x表示可执行
使用示例:
chmod u+x,g+x,o-r a
数字设定法
-
通常文件的权限是采用类似于位图的形式来进行存储,3位的2进制数字可以用来表示文件的读写执行权限,9位的2进制数字就可以表示文件的所有用户权限。
-
在3位2进制数中,通常使用最高位表示读权限,随后是写权限,最低位是执行权限。然后再将拥有用户,拥有组和其他用户组合起来,就能得到一个9位2进制数字,最后按照8进制和2进制的转换方法,文件权限就能很轻松地一个用3位8进制数字来表示
-
例如 0644 (110 100 100)就是 拥有者可读可写不可执行,组用户和其他用户可读不可写不可执行
使用示例:
文件创建掩码
在 Linux 系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask 命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-rw-rw-,创建目录的默认权限 drwxrwxrwx ,而 umask 值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。
umask原理:
目录的默认权限是777,计算方法与文件一致
其他
重定向
scp(远程拷贝)命令
链接
硬链接
ln 源文件 目标文件
使用示例:
通过查看 h_link 中的内容可以发现和 a.txt 中的内容是相同的
软(符号)链接
ln -s 源文件 目标文件
使用示例:
打包工具
使用示例:
别名
alias //查看所有别名
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了