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

思维导图


posted @   hjx、贤  阅读(140)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示