day8 文件管理命令
文件管理命令
删除命令
# rm
默认只能删除普通文件
语法
rm [选项] 文件
选项
-f :强制删除忽略不存在的文件,不提示确认(可删除文件,不能删除目录)
-i :在删除前需要确认(y或n)
例:
09:01:25 root@localhost.localdomain,10.0.0.158:/srv # rm -fi ./1
rm: remove regular empty file ‘./1’?
-I :再删除超过三个文件或递归删除前要求确认,此选项比-i提示内容更少,但同样可以阻止大多数错误发生
例:
09:06:08 root@localhost.localdomain,10.0.0.158:/srv # rm -rI ./abc
rm: remove 1 argument recursively? y
-r,-R:递归删除目录及其内容
例:
[root@localhost srv]# rm -r abc
rm: descend into directory ‘abc’? y
rm: descend into directory ‘abc/123’? y
rm: remove regular empty file ‘abc/123/hjx’? y
-v:详细显示进行的步骤
09:18:56 root@localhost.localdomain,10.0.0.158:/srv # rm -rfv abc
removed directory: ‘abc/123/qwe/ert’
removed directory: ‘abc/123/qwe’
removed directory: ‘abc/123’
removed directory: ‘abc’
命令指示
# rm 1:是否删除普通空文件1(有确认提示)
09:20:36 root@localhost.localdomain,10.0.0.158:/srv # rm 1
rm: remove regular empty file ‘1’? y
# rm -f 1:强制删除普通空文件1(没有确认提示)
# rm -r x_m:是否删除x_m目录(有确认提示)
✓ 09:25:31 root@localhost.localdomain,10.0.0.158:/srv # rm -r x_m
rm: remove directory ‘x_m’? y
# rm -fr :强制删除文件和目录(没有确认提示)
rm -rf ./abc/123/*:删除当前目录下abc里面123里面的所有文件
# rm -rf old*:删除所有前置是old的文件
例:
✓ 09:38:52 root@localhost.localdomain,10.0.0.158:/srv # touch old{1..4}
0 ✓ 09:39:03 root@localhost.localdomain,10.0.0.158:/srv # ll
total 0
drwxr-xr-x. 3 root root 17 Mar 22 09:31 abc
-rw-r--r--. 1 root root 0 Mar 22 09:39 old1
-rw-r--r--. 1 root root 0 Mar 22 09:39 old2
-rw-r--r--. 1 root root 0 Mar 22 09:39 old3
-rw-r--r--. 1 root root 0 Mar 22 09:39 old4
0 ✓ 09:39:38 root@localhost.localdomain,10.0.0.158:/srv # rm -rf old*
0 ✓ 09:39:52 root@localhost.localdomain,10.0.0.158:/srv # ll
total 0
drwxr-xr-x. 3 root root 17 Mar 22 09:31 abc
# rm -rf *old:删除所有后置是old的文件
例:
09:39:54 root@localhost.localdomain,10.0.0.158:/srv # touch {1..4}old
0 ✓ 09:40:55 root@localhost.localdomain,10.0.0.158:/srv # ll
total 0
-rw-r--r--. 1 root root 0 Mar 22 09:40 1old
-rw-r--r--. 1 root root 0 Mar 22 09:40 2old
-rw-r--r--. 1 root root 0 Mar 22 09:40 3old
-rw-r--r--. 1 root root 0 Mar 22 09:40 4old
drwxr-xr-x. 3 root root 17 Mar 22 09:31 abc
0 ✓ 09:40:56 root@localhost.localdomain,10.0.0.158:/srv # rm -rf *old
0 ✓ 09:41:22 root@localhost.localdomain,10.0.0.158:/srv # ll
total 0
drwxr-xr-x. 3 root root 17 Mar 22 09:31 abc
# rm:删除文件
# rm -r:删除目录
报错
[root@localhost srv]# rm etc
rm: cannot remove ‘etc’: Is a directory
etc是一个目录,rm不能直接删除
复制命令cp
# cp:复制copy
语法
cp [选项] 目标路径
cp 默认只能拷贝文件
把srv下面abc/123里的hjx文件,复制到srv下面的ert
[root@localhost srv]# cp /srv/abc/123/hjx /srv/ert
# 选项
-t:目标路径,源文件(让选项和源文件颠倒)
# -p:保持文件属性(属性不变)
例:
[root@localhost srv]# ll
total 12
-rw-r--r--. 1 root root 0 Mar 23 16:51 hjx
drwxr-xr-x. 2 root root 6 Mar 21 16:43 x_n
[root@localhost srv]# cp -p hjx ./x_n
[root@localhost srv]# ll x_n
total 0
-rw-r--r--. 1 root root 0 Mar 23 16:51 hjx
# -r:递归复制,复制目录及目录下的所有文件
例:
查看abc目录里面
[root@localhost srv]# ll abc
total 4
drwxr-xr-x. 2 root root 17 Mar 23 16:42 123
-rw-r--r--. 1 root root 9 Mar 23 16:43 hjx
复制abc目录及abc目录下的所有文件到y_n
[root@localhost srv]# cp -r abc ./y_n
[root@localhost srv]# ll y_n
total 0
drwxr-xr-x. 3 root root 28 Mar 23 17:10 abc
# -a:相当于-rp,既可拷贝目录,又可以保持文件属性
例:
[root@localhost srv]# cp -i hjx ./111
cp: overwrite ‘./111/hjx’?
# -i:覆盖提示
[root@localhost srv]# cp hjx ./zzz
cp: overwrite ‘./zzz’? y
# 避免提示有两种方法
1.使用转义符:让转义符后面的内容,做它自己[root@localhost srv]# \cp hjx ./zzz
2.使用命令的绝对路径[root@localhost srv]# /bin/cp hjx ./zzz
# -v:显示拷贝的过程
例:
[root@localhost srv]# cp -av 111 ./y_m
‘111’ -> ‘./y_m/111’
‘111/abc’ -> ‘./y_m/111/abc’
‘111/abc/123’ -> ‘./y_m/111/abc/123’
‘111/abc/123/hjx’ -> ‘./y_m/111/abc/123/hjx’
‘111/abc/hjx’ -> ‘./y_m/111/abc/hjx’
‘111/hjx’ -> ‘./y_m/111/hjx’
# 复制并改名cp
[root@localhost srv]# cp -a hjx ./zzz
是否存在
-存在
1)存在,并且zzz是个目录:将hjx放到zzz目录下,不改名
例: [root@localhost srv]# cp hjx ./zzz
[root@localhost srv]# ll zzz
total 4
-rw-r--r--. 1 root root 10 Mar 23 17:35 hjx
2)存在,并且hjx是个普通文件:则提示是否要覆盖,输入y则覆盖,输入n则不覆盖
例:[root@localhost srv]# cp hjx ./zzz
cp: overwrite ‘./zzz’? y
-不存在:复制到srv下,并且改名为zzz
#报错
[root@localhost srv]# cp 111 ./ert
cp: omitting directory ‘111’
111存在其他目录或文件存在,加个-r就可以了
普通文件查看命令
cat 只能查看文件内容
# 语法
cat [OPTION]... [FILE]...
cat 选项... 普通文件...
#选项
-n:mumber,打印显示行号
-E:end,查看文件每一行的结尾以$符结尾
-T:tab,查看文件每一行是否有制表符,一个制表符用^I表示一个制表符
-A:即显示制表符,又显示结尾
#报错
[root@localhost srv]# cat 111
cat: 111: Is a directory
111 是目录
#举例
[root@localhost srv]# echo 1 > 1.txt
[root@localhost srv]# echo 2 > 2.txt
[root@localhost srv]# echo 3 > 3.txt
[root@localhost srv]# cat 1.txt
1
[root@localhost srv]# cat 2.txt
2
[root@localhost srv]# cat 3.txt
3
# -n:打印行号
例:
[root@localhost srv]# cat -n 1.txt
1 1
2 a
3 s
4 d
5 f
6 g
7 h
8 z
9 c
10 v
11 b
12 n
13 m
14 cv
15 ds
16 s
17 r
18
# -E:查看文件每一行的结尾以$符结尾
例:
[root@localhost srv]# cat -E 1.txt
1$
a$
s$
d$
f$
g$
h$
z$
c$
v$
b$
n$
m$
c v$
d s$
s$
r$
$
# cat -T:tab,查看文件每一行是否有制表符
例:
[root@localhost srv]# cat -T 1.txt
1
a
s
d
f
g
h
z
c
v
b
n
^Im
c^I^Iv
d ^I^I s
s
r
# cat -A:即显示制表符,又显示结尾
例:
[root@localhost srv]# cat -A 1.txt
1$
a$
s$
d$
f$
g$
h$
z$
c$
v$
b$
n$
^Im$
c^I^Iv$
d ^I^I s$
s$
r$
$
高难度用法
# 高难度用法(在文件不存在的情况下,创建文件并写入内容)
# 直接vi一个不存在的文件
[root@localhost srv]# vi ./www
[root@localhost srv]# ll
total 32
-rw-r--r--. 1 root root 5 Mar 23 18:14 www
# echo内容重定向到一个文件中
[root@localhost srv]# echo 3333 > eee
[root@localhost srv]# ll
total 36
-rw-r--r--. 1 root root 5 Mar 23 18:16 eee
# 使用cat创建文件并写入内容
[root@localhost srv]# cat >> rrr << end
> eqw
> eqw
> 123
> 432
> end
[root@localhost srv]# ll
total 40
-rw-r--r--. 1 root root 16 Mar 23 18:18 rrr
[root@localhost srv]# cat rrr
eqw
eqw
123
432
# cat >> 文件名字 << 结尾词(不固定,一般规范用EOF)
# 注意:cat查看文件时,会将文件所有内容全部加载到内存里
普通文件查看命令扩展
# more
more 文件名
按回车,一行一行向下显示
按空格,一页一页向下显示
Ctrl + b:向上查看
Ctrl + f:向下查看
# less
less 文件名
按回车,一行一行向下显示
按空格,一页一页向下显示
Ctrl + b:向上查看
Ctrl + f:向下查看
输入/关键字,高亮显示,所有匹配到的内容
按n,查找下一个关键字Shift + n 查找上一个关键字
----------------------------分割线--------------------------------
# head
head 文件名
默认显示一个文件的前10行内容
# 选项
# -n:指定查看文件开头的前N行,n可以省略
例:
[root@localhost srv]# head -3 1.txt
1
a
s
# tail
tail 文件名
默认显示文件后10行内容
# 选项
-n:指定查看文件末尾的后N行,n可以省略
例:
[root@localhost srv]# tail -3 1.txt
s
r
# -f:follow,跟踪,动态跟踪一个文件的末尾
例:[root@localhost srv]# tail -f 1.txt
c
v
b
n
m
c v
d s
s
r
# (实时跟踪)
3.23练习题
1.请用命令查出tree命令程序的绝对路径
[root@localhost srv]# which tree
2.请使用一条命令在/abc目录下创建1000个目录
名录名称例:xxx.zls
前面任意后面接 . 和自己的名字拼音缩写
命令:[root@localhost srv]# mkdir {1..1000}.hjx
3.请用一条命令删除刚才创建的1000个目录
[root@localhost srv]# rm -rf /srv/.hjx*
4.把/etc目录复制到/tmp下,保持属性
[root@localhost srv]# cp -a /etc /tmp
5.请尝试,将zls.txt中的内容,保存到oldboy.txt中(不允许用复制命令)
#zls.txt,oldboy.txt昨天练习题内容一致
[root@localhost srv]# echo zls.txt > oldboy.txt
6.请将zls.txt文件复制到/tmp目录下,并改名叫zls_niubi.txt
[root@localhost srv]# cp -a zls.txt /tmp/zls_niubi.txt
7.创建/oldboy/0602目录,并将网卡配置文件复制到该目录下
[root@localhost srv]# cp -a /etc/sysconfig/network-scripts/ifcfg-ens160 /oldboy/0602
8.在/oldboy/0602目录中创建zls1.txt文件,并将www.driverzeng.com
写入文件中
[root@localhost srv]# echo www.driverzeng.com > /oldboy/0602/zls.txt
9.在/oldboy/0602目录中创建cjk.txt文件,并将www.cjk.com
写入文件中
[root@localhost srv]# cat >> /oldboy/0602/cjk.txt <<end
> www.cjk.com
> end
10.将cjk.txt和zls1.txt文件中的内容合并到heiheihei.txt中(zls在上cjk在下)
[root@localhost srv]# cat >> heiheihei.txt << end
> www.driverzeng.com
> www.cjk.com
> end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!