Linux文件的相关操作

文件的相关操作

1.文件的创建

文件的创建需要用到touch的相关命令,创建文件的条件是这个文件不存在,如果存在则会报错
touch a :创建一个a文件(A FILE argument that does not exist is created empty),条件是该文件不存在如果文件不存在则同时更新三个时间(btime(文件创建的时间)不能更改)

[root@www ~]# touch a
[root@www ~]# ll
total 2048016
-rw-r--r--. 1 root root          0 Mar 15 22:44 a
[root@www test]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 15 23:07 a
[root@www test]# stat a
  File: a
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 36178318    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2023-03-15 23:03:15.732192378 +0800
Modify: 2023-03-15 23:07:10.835231898 +0800
Change: 2023-03-15 23:07:10.835231898 +0800
 Birth: 2023-03-15 22:56:22.014123559 +0800
[root@www test]# touch a
[root@www test]# stat a
  File: a
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 36178318    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2023-03-15 23:13:33.428296224 +0800
Modify: 2023-03-15 23:13:33.428296224 +0800
Change: 2023-03-15 23:13:33.428296224 +0800
 Birth: 2023-03-15 22:56:22.014123559 +0800
[root@www test]# 

touch {1…4}{a…c} :像矩阵一样分别创建文件

[root@www test]# touch {1..4}{a..c}
[root@www test]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 15 22:47 1a
-rw-r--r--. 1 root root 0 Mar 15 22:47 1b
-rw-r--r--. 1 root root 0 Mar 15 22:47 1c
-rw-r--r--. 1 root root 0 Mar 15 22:47 2a
-rw-r--r--. 1 root root 0 Mar 15 22:47 2b
-rw-r--r--. 1 root root 0 Mar 15 22:47 2c
-rw-r--r--. 1 root root 0 Mar 15 22:47 3a
-rw-r--r--. 1 root root 0 Mar 15 22:47 3b
-rw-r--r--. 1 root root 0 Mar 15 22:47 3c
-rw-r--r--. 1 root root 0 Mar 15 22:47 4a
-rw-r--r--. 1 root root 0 Mar 15 22:47 4b
-rw-r--r--. 1 root root 0 Mar 15 22:47 4c
[root@www test]# 

touch b -c :解释为如果目标文件不存在就不会创建(-c, --no-create
do not create any files)

[root@www test]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 15 22:56 a
[root@www test]# touch b -c
[root@www test]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 15 22:56 a
[root@www test]#

touch -a a:表示如果只是更新atime(上次被访问的时间)标记和ctime(问价状态改变的时间)标记同时更新(-a change only the access time)

[root@www test]# stat a
  File: a
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 36178318    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2023-03-15 22:56:22.014123559 +0800
Modify: 2023-03-15 22:56:22.014123559 +0800
Change: 2023-03-15 22:56:22.014123559 +0800
 Birth: 2023-03-15 22:56:22.014123559 +0800
[root@www test]# touch a -a
[root@www test]# stat a
  File: a
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 36178318    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2023-03-15 23:03:15.732192378 +0800
Modify: 2023-03-15 22:56:22.014123559 +0800
Change: 2023-03-15 23:03:15.732192378 +0800
 Birth: 2023-03-15 22:56:22.014123559 +0800
[root@www test]# 

touch -m a:如果只更新mtime(文件上次被修改的时间),则ctime(文件状态被改变的时间)同时更新(-m change only the modification time)

[root@www test]# stat a
  File: a
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 36178318    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2023-03-15 23:03:15.732192378 +0800
Modify: 2023-03-15 22:56:22.014123559 +0800
Change: 2023-03-15 23:03:15.732192378 +0800
 Birth: 2023-03-15 22:56:22.014123559 +0800
[root@www test]# touch -m a
[root@www test]# stat a
  File: a
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d	Inode: 36178318    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2023-03-15 23:03:15.732192378 +0800
Modify: 2023-03-15 23:07:10.835231898 +0800
Change: 2023-03-15 23:07:10.835231898 +0800
 Birth: 2023-03-15 22:56:22.014123559 +0800
[root@www test]# 

目录的创建

需要用到mkdir的相关命令(Create the DIRECTORY(ies), if they do not already exist.)条件是该目录不存在
mkdir haha:创建一个haha的目录

[root@www test]# mkdir haha
[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 15 23:17 haha
[root@www test]# 

mkdir a/b/c/d -p:创建一个层级目录( -p, --parents no error if existing, make parent directories as needed)一定要有-p

[root@www test]# ll
total 0
[root@www test]# mkdir a/b/c/d -p
[root@www test]# ll
total 0
drwxr-xr-x. 3 root root 15 Mar 15 23:20 a
[root@www test]# tree a
a
└── b
    └── c
        └── d

3 directories, 0 files
[root@www test]# 
[root@www test]# mkdir 1/2/3
mkdir: cannot create directory ‘1/2/3’: No such file or directory
[root@www test]# 

2.文件的删除

需要用到rm的相关命令
rm haha/ 单纯的rm+文件名并不能删除文件,需要添加 -r 或 -R 再或者 -recursive ( -r, -R, --recursive :remove directories and their contents recursively)
rm -r haha:删除a文件如果a文件下面是层级目录的话,就会每个文件都会提示是否删除目录

[root@www test]# ll
total 0
drwxr-xr-x. 3 root root 15 Mar 15 23:20 a
drwxr-xr-x. 2 root root  6 Mar 16 22:18 haha
[root@www test]# rm -r haha
rm: remove directory 'haha'? n
[root@www test]# rm haha
rm: cannot remove 'haha': Is a directory
[root@www test]# rm -r haha
rm: remove directory 'haha'? y--------------(在删除的时候会提示你是否删除文件,输入y并回车是确认删除,输入n回车就是不删除)
[root@www test]# ll
total 0
drwxr-xr-x. 3 root root 15 Mar 15 23:20 a
[root@www test]# rm -r a-----------------------(当删除的是层级目录的时候则每个目录都会提示是否删除目录)
rm: descend into directory 'a'? y
rm: descend into directory 'a/b'? y
rm: descend into directory 'a/b/c'? y
rm: remove directory 'a/b/c/d'? y
rm: remove directory 'a/b/c'? y
rm: remove directory 'a/b'? y
rm: remove directory 'a'? y
[root@www test]# ll
total 0
[root@www test]#

rm -rf file
强制删除文件或目录,并不会给出提示

[root@www test]# ll
total 0
drwxr-xr-x. 3 root root 15 Mar 16 22:23 a
drwxr-xr-x. 2 root root 42 Mar 16 22:25 haha
[root@www test]# rm -rf haha
[root@www test]# ll
total 0
drwxr-xr-x. 3 root root 15 Mar 16 22:23 a
[root@www test]# 

rm -rf /
删除根目录下的所有文件,在linux操作系统中所有文件都在 /(根目录)下面;在执行命令的时候,会提示你如果真的要删除根目录下的文件则需要在命令后面添加一些指令(–no-preserve-root)

[root@www test]# rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
[root@www test]# 

rm -rf /*
强制删除根目录下的所有文件和目录,不会给出提示(注这是一个危险的命令,执行过后操作系统会崩溃)
“*” 在shell中,匹配任意长度的任意字符
“?” 在shell中匹配任意单个字符

[root@www test]# ll
total 0
-rw-r--r--. 1 root root  0 Mar 16 22:37 1
-rw-r--r--. 1 root root  0 Mar 16 22:38 12{2}
-rw-r--r--. 1 root root  0 Mar 16 22:38 13{2}
-rw-r--r--. 1 root root  0 Mar 16 22:38 14{2}
-rw-r--r--. 1 root root  0 Mar 16 22:37 2
-rw-r--r--. 1 root root  0 Mar 16 22:38 22{2}
-rw-r--r--. 1 root root  0 Mar 16 22:38 23{2}
-rw-r--r--. 1 root root  0 Mar 16 22:38 24{2}
-rw-r--r--. 1 root root  0 Mar 16 22:37 3
-rw-r--r--. 1 root root  0 Mar 16 22:37 4
-rw-r--r--. 1 root root  0 Mar 16 22:37 5
drwxr-xr-x. 3 root root 15 Mar 16 22:23 a
-rw-r--r--. 1 root root  0 Mar 16 22:37 a1
-rw-r--r--. 1 root root  0 Mar 16 22:37 a2
-rw-r--r--. 1 root root  0 Mar 16 22:37 a3
-rw-r--r--. 1 root root  0 Mar 16 22:37 a4
-rw-r--r--. 1 root root  0 Mar 16 22:37 a5
-rw-r--r--. 1 root root  0 Mar 16 22:37 b1
-rw-r--r--. 1 root root  0 Mar 16 22:37 b2
-rw-r--r--. 1 root root  0 Mar 16 22:37 b3
-rw-r--r--. 1 root root  0 Mar 16 22:37 b4
-rw-r--r--. 1 root root  0 Mar 16 22:37 b5
-rw-r--r--. 1 root root  0 Mar 16 22:37 c1
-rw-r--r--. 1 root root  0 Mar 16 22:37 c2
-rw-r--r--. 1 root root  0 Mar 16 22:37 c3
-rw-r--r--. 1 root root  0 Mar 16 22:37 c4
-rw-r--r--. 1 root root  0 Mar 16 22:37 c5
-rw-r--r--. 1 root root  0 Mar 16 22:37 d1
-rw-r--r--. 1 root root  0 Mar 16 22:37 d2
-rw-r--r--. 1 root root  0 Mar 16 22:37 d3
-rw-r--r--. 1 root root  0 Mar 16 22:37 d4
-rw-r--r--. 1 root root  0 Mar 16 22:37 d5
[root@www test]# ll 1*
-rw-r--r--. 1 root root 0 Mar 16 22:37 1
-rw-r--r--. 1 root root 0 Mar 16 22:38 12{2}
-rw-r--r--. 1 root root 0 Mar 16 22:38 13{2}
-rw-r--r--. 1 root root 0 Mar 16 22:38 14{2}
[root@www test]# ll a?
-rw-r--r--. 1 root root 0 Mar 16 22:37 a1
-rw-r--r--. 1 root root 0 Mar 16 22:37 a2
-rw-r--r--. 1 root root 0 Mar 16 22:37 a3
-rw-r--r--. 1 root root 0 Mar 16 22:37 a4
-rw-r--r--. 1 root root 0 Mar 16 22:37 a5
[root@www test]# ll 1????
-rw-r--r--. 1 root root 0 Mar 16 22:38 12{2}
-rw-r--r--. 1 root root 0 Mar 16 22:38 13{2}
-rw-r--r--. 1 root root 0 Mar 16 22:38 14{2}
[root@www test]# 

目录的删除

需要用到rmdir的相关命令
rmdir 目录名字 并不常用,因为只能删除空目录,如果目录是层级目录则只能一个一个删除

[root@www test]# ll
total 0
drwxr-xr-x. 3 root root 15 Mar 16 22:45 a-------------------(这里a目录是层级目录)
[root@www test]# rmdir a
rmdir: failed to remove 'a': Directory not empty
[root@www test]# rmdir a/b/c/d
[root@www test]# rmdir a/b/c
[root@www test]# rmdir a/b
[root@www test]# rmdir a
[root@www test]# ll
total 0
[root@www test]# 

3.文件的移动及文件的重命名

文件的移动及文件的重命名都需要用到mv的相关命令

文件的移动

语法结构:
mv 参数1 参数2
(参数1表示需要移动的文件,参数2表示移动到的目标文件)
例: mv a b(这里意为将文件a移动到b中)
注: 下面的例子1~4都是目录,a ~d是文件
1.如果b存在,但b是个文件就会报错

[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 20 20:23 1
drwxr-xr-x. 2 root root 6 Mar 20 20:23 2
drwxr-xr-x. 2 root root 6 Mar 20 20:23 3
drwxr-xr-x. 2 root root 6 Mar 20 20:23 4
-rw-r--r--. 1 root root 0 Mar 20 20:12 a
-rw-r--r--. 1 root root 0 Mar 20 20:12 b
-rw-r--r--. 1 root root 0 Mar 20 20:12 c
-rw-r--r--. 1 root root 0 Mar 20 20:12 d
[root@www test]# mv a b
mv: overwrite 'b'? y-----------------(这里是提示是否将a覆盖,是则输入y回车,不覆盖输入n回车,终止执行命令则Ctrl+C)
[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 20 20:23 1
drwxr-xr-x. 2 root root 6 Mar 20 20:23 2
drwxr-xr-x. 2 root root 6 Mar 20 20:23 3
drwxr-xr-x. 2 root root 6 Mar 20 20:23 4
-rw-r--r--. 1 root root 0 Mar 20 20:12 b
-rw-r--r--. 1 root root 0 Mar 20 20:12 c
-rw-r--r--. 1 root root 0 Mar 20 20:12 d
[root@www test]#

重命名

2.如果移动到的文件不存在,则重命名,就是将移动到的文件重命名为被移动文件

[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 20 20:23 1
drwxr-xr-x. 2 root root 6 Mar 20 20:23 2
drwxr-xr-x. 2 root root 6 Mar 20 20:23 3
drwxr-xr-x. 2 root root 6 Mar 20 20:23 4
-rw-r--r--. 1 root root 0 Mar 20 20:12 b
-rw-r--r--. 1 root root 0 Mar 20 20:12 c
-rw-r--r--. 1 root root 0 Mar 20 20:12 d
[root@www test]# mv d f
[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 20 20:23 1
drwxr-xr-x. 2 root root 6 Mar 20 20:23 2
drwxr-xr-x. 2 root root 6 Mar 20 20:23 3
drwxr-xr-x. 2 root root 6 Mar 20 20:23 4
-rw-r--r--. 1 root root 0 Mar 20 20:12 b
-rw-r--r--. 1 root root 0 Mar 20 20:12 c
-rw-r--r--. 1 root root 0 Mar 20 20:12 f
[root@www test]# 

3.如果被移动到的文件存在,且该文件是一个目录,则将文件移动到b目录中

[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 20 20:23 1
drwxr-xr-x. 2 root root 6 Mar 20 20:23 2
drwxr-xr-x. 2 root root 6 Mar 20 20:23 3
drwxr-xr-x. 2 root root 6 Mar 20 20:23 4
-rw-r--r--. 1 root root 0 Mar 20 20:12 b
-rw-r--r--. 1 root root 0 Mar 20 20:12 c
-rw-r--r--. 1 root root 0 Mar 20 20:12 f
[root@www test]# mv b 1
[root@www test]# tree 1
1
└── b

0 directories, 1 file
[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 15 Mar 20 20:34 1
drwxr-xr-x. 2 root root  6 Mar 20 20:23 2
drwxr-xr-x. 2 root root  6 Mar 20 20:23 3
drwxr-xr-x. 2 root root  6 Mar 20 20:23 4
-rw-r--r--. 1 root root  0 Mar 20 20:12 c
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]# 

4.如果被移动文件不存在,则会抛出错误

[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 15 Mar 20 20:34 1
drwxr-xr-x. 2 root root  6 Mar 20 20:23 2
drwxr-xr-x. 2 root root  6 Mar 20 20:23 3
drwxr-xr-x. 2 root root  6 Mar 20 20:23 4
-rw-r--r--. 1 root root  0 Mar 20 20:12 c
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]# mv a 1
mv: cannot stat 'a': No such file or directory
[root@www test]# 

5.如果被移动的是文件且存在,则将按照例1、2、3条例子执行相应的动作


6.如果被移动的是一个目录,在没有目标文件的时候则将重命名,在有目标文件的时候,则报错,在有目标目录的时候则移动
[root@www test]# ll---------------------------(如果被移动的是一个目录,在没有目标文件的时候则将重命名)
total 0
drwxr-xr-x. 2 root root 15 Mar 20 20:34 1
drwxr-xr-x. 2 root root  6 Mar 20 20:23 2
drwxr-xr-x. 2 root root  6 Mar 20 20:23 3
drwxr-xr-x. 2 root root  6 Mar 20 20:23 4
-rw-r--r--. 1 root root  0 Mar 20 20:12 c
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]# mv 1 10
[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 15 Mar 20 20:34 10
drwxr-xr-x. 2 root root  6 Mar 20 20:23 2
drwxr-xr-x. 2 root root  6 Mar 20 20:23 3
drwxr-xr-x. 2 root root  6 Mar 20 20:23 4
-rw-r--r--. 1 root root  0 Mar 20 20:12 c
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]# 

[root@www test]# ll--------------------(如果被移动的是一个目录,在有目标文件的时候,则报错)
total 0
drwxr-xr-x. 2 root root 15 Mar 20 20:34 10
drwxr-xr-x. 2 root root  6 Mar 20 20:23 2
drwxr-xr-x. 2 root root  6 Mar 20 20:23 3
drwxr-xr-x. 2 root root  6 Mar 20 20:23 4
-rw-r--r--. 1 root root  0 Mar 20 20:48 a
-rw-r--r--. 1 root root  0 Mar 20 20:48 b
-rw-r--r--. 1 root root  0 Mar 20 20:12 c
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]# mv 3 c
mv: overwrite 'c'? ^C
[root@www test]#
[root@www test]# ll----------------(如果被移动的是一个目录,在有目标目录的时候则移动)
total 0
drwxr-xr-x. 2 root root 15 Mar 20 20:34 10
drwxr-xr-x. 2 root root  6 Mar 20 20:23 2
drwxr-xr-x. 2 root root  6 Mar 20 20:23 3
drwxr-xr-x. 2 root root  6 Mar 20 20:23 4
-rw-r--r--. 1 root root  0 Mar 20 20:48 a
-rw-r--r--. 1 root root  0 Mar 20 20:48 b
-rw-r--r--. 1 root root  0 Mar 20 20:12 c
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]# mv 2 3
[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 15 Mar 20 20:34 10
drwxr-xr-x. 3 root root 15 Mar 20 20:49 3
drwxr-xr-x. 2 root root  6 Mar 20 20:23 4
-rw-r--r--. 1 root root  0 Mar 20 20:48 a
-rw-r--r--. 1 root root  0 Mar 20 20:48 b
-rw-r--r--. 1 root root  0 Mar 20 20:12 c
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]# tree
.
├── 10
│   └── b
├── 3
│   └── 2
├── 4
├── a
├── b
├── c
└── f

4 directories, 5 files
[root@www test]# 

7.多个文件的移动
注: 当有两个以上的参数的时,就默认最后一个参数为移动到的文件

[root@www test]# mv a b f------------------(当移动到是一个文件的时候则报错)
mv: target 'f' is not a directory
[root@www test]# 
[root@www test]# ll-----------------(当移动到的是一个目录的时候,则移动)
total 0
drwxr-xr-x. 2 root root 15 Mar 20 20:34 10
drwxr-xr-x. 3 root root 15 Mar 20 20:49 3
drwxr-xr-x. 2 root root  6 Mar 20 20:23 4
-rw-r--r--. 1 root root  0 Mar 20 20:48 a
-rw-r--r--. 1 root root  0 Mar 20 20:48 b
-rw-r--r--. 1 root root  0 Mar 20 20:12 c
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]#
[root@www test]# mv a b c 10
mv: overwrite '10/b'? y---------------(这里目录10里面已经有一个b文件,提示是否覆盖b文件)
[root@www test]# ll
total 0
drwxr-xr-x. 2 root root 33 Mar 20 21:00 10
drwxr-xr-x. 3 root root 15 Mar 20 20:49 3
drwxr-xr-x. 2 root root  6 Mar 20 20:23 4
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]# tree 10
10
├── a
├── b
└── c

0 directories, 3 files
[root@www test]# 
[root@www test]# ll-----------------(目录移动到目录)
total 0
drwxr-xr-x. 2 root root 33 Mar 20 21:00 10
drwxr-xr-x. 2 root root  6 Mar 20 21:08 3
drwxr-xr-x. 2 root root  6 Mar 20 21:08 4
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]# mv 3 4 10
[root@www test]# ll
total 0
drwxr-xr-x. 4 root root 51 Mar 20 21:08 10
-rw-r--r--. 1 root root  0 Mar 20 20:12 f
[root@www test]# tree
.
├── 10
│   ├── 3
│   ├── 4
│   ├── a
│   ├── b
│   └── c
└── f

3 directories, 4 files
[root@www test]# 

4.文件的复制

文件的复制需要用到cp的相关命令
最好用cp -ra 来复制文件或者目录,这样的话会保留文件或目录的一些属性
注:如果没有加选项 -ra 的话只能复制文件不能复制目录
基本结构:
cp file1 file2 :如果file2存在,则意为将file1覆盖成file2,如果file2不存在,则将file1复制成文件2
以下例子中1-2指的是文件,a-d是目录

[root@www test]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 22 21:08 1
-rw-r--r--. 1 root root 0 Mar 22 21:08 2
-rw-r--r--. 1 root root 0 Mar 22 21:08 3
-rw-r--r--. 1 root root 0 Mar 22 21:08 4
drwxr-xr-x. 2 root root 6 Mar 22 21:08 a
drwxr-xr-x. 2 root root 6 Mar 22 21:08 b
drwxr-xr-x. 2 root root 6 Mar 22 21:08 c
drwxr-xr-x. 2 root root 6 Mar 22 21:08 d
[root@www test]# cp 1 2--------------(这里文件2存在,则将源文件覆盖)
cp: overwrite '2'? ^C-----------------(提示是否将文件2覆盖掉)
[root@www test]# cp 1 5----------------(这里的文件5不存在,则将文件1复制成文件5)
[root@www test]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 22 21:08 1
-rw-r--r--. 1 root root 0 Mar 22 21:08 2
-rw-r--r--. 1 root root 0 Mar 22 21:08 3
-rw-r--r--. 1 root root 0 Mar 22 21:08 4
-rw-r--r--. 1 root root 0 Mar 22 21:08 5
drwxr-xr-x. 2 root root 6 Mar 22 21:08 a
drwxr-xr-x. 2 root root 6 Mar 22 21:08 b
drwxr-xr-x. 2 root root 6 Mar 22 21:08 c
drwxr-xr-x. 2 root root 6 Mar 22 21:08 d
[root@www test]# 

多文件复制
多文件复制一般是指将多个文件或目录复制到另外一个目录当中

[root@www test]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 22 21:08 1
-rw-r--r--. 1 root root 0 Mar 22 21:08 2
-rw-r--r--. 1 root root 0 Mar 22 21:08 3
-rw-r--r--. 1 root root 0 Mar 22 21:08 4
-rw-r--r--. 1 root root 0 Mar 22 21:08 5
drwxr-xr-x. 2 root root 6 Mar 22 21:16 a
drwxr-xr-x. 2 root root 6 Mar 22 21:16 b
drwxr-xr-x. 2 root root 6 Mar 22 21:08 c
drwxr-xr-x. 2 root root 6 Mar 22 21:08 d
[root@www test]# cp 1 2 a
[root@www test]# tree
.
├── 1
├── 2
├── 3
├── 4
├── 5
├── a
│   ├── 1
│   └── 2
├── b
├── c
└── d

4 directories, 7 files
[root@www test]# 

5.文件的查看

文件的查看需要用到的相关命令
(1)cat
cat(concatenate)连接并显示内容到标准输出,一次性将所有内容输出到屏幕上(注:在文件过大的时候只能查看4900行后的内容前面的内容并不能看见,文件内容只有600多行以内就能全部显示出来),cat不止是有查看文件的功能,还有连接文件并打印到标准输出上(也就是屏幕)

[root@www test]# ll
total 4
drwxr-xr-x. 2 root root    6 Mar 22 21:34 1
drwxr-xr-x. 2 root root    6 Mar 22 21:34 2
drwxr-xr-x. 2 root root    6 Mar 22 21:34 3
-rw-r--r--. 1 root root    0 Mar 22 21:35 a
-rw-r--r--. 1 root root    0 Mar 22 21:35 b
-rw-r--r--. 1 root root    0 Mar 22 21:35 c
-rw-r--r--. 1 root root 2134 Mar 22 21:32 passwd
[root@www test]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
colord:x:997:993:User for colord:/var/lib/colord:/sbin/nologin
clevis:x:996:992:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/usr/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
sssd:x:995:991:User for sssd:/:/sbin/nologin
libstoragemgmt:x:994:990:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
setroubleshoot:x:993:989:SELinux troubleshoot server:/var/lib/setroubleshoot:/sbin/nologin
pipewire:x:992:987:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
geoclue:x:991:986:User for geoclue:/var/lib/geoclue:/sbin/nologin
flatpak:x:990:985:User for flatpak system helper:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
cockpit-ws:x:989:984:User for cockpit web service:/nonexisting:/sbin/nologin
cockpit-wsinstance:x:988:983:User for cockpit-ws instances:/nonexisting:/sbin/nologin
gnome-initial-setup:x:987:982::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
chrony:x:986:981::/var/lib/chrony:/sbin/nologin
dnsmasq:x:985:980:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
systemd-oom:x:978:978:systemd Userspace OOM Killer:/:/usr/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
haha:x:1001:1001::/home/haha:/bin/bash
[root@www test]# cat a
haha
xixi
[root@www test]# cat b
hehe
[root@www test]# cat a b----------------(同时查看多个 文件)
haha
xixi
hehe
[root@www test]# 

在查看的内容前面显示行数:
cat -n file

[root@www test]# cat -n a
     1	haha
     2	xixi
[root@www test]# 

(2)tac
与cat命令差不多,只不过是按行倒叙显示的内容

[root@www test]# tac a
xixi
haha
[root@www test]# cat a
haha
xixi
[root@www test]# 

(3)more
用于查看内容更多更大的文件,会有一个百分比的提示(–More–(0%)),这个百分比用于提示当前看到了什么地方
对内容进行翻页等相关操作

  • 按回车,按行进行更新查看
  • 按空格,按页进行更新查看
  • 允许pageup,pagedown上下翻页
    注: 一旦百分比显示到百分百则自动退出,一旦退出则无法回看,需要重新输入命令
[root@www test]# more messages
Mar 19 14:00:49 www systemd[1]: Starting NTP client/server...
Mar 19 14:00:49 www systemd[1]: Started irqbalance daemon.
Mar 19 14:00:49 www systemd[1]: Started libstoragemgmt plug-in server daemon.
Mar 19 14:00:49 www systemd[1]: Low Memory Monitor was skipped because of a failed condition check (Cond
itionPathExists=/proc/pressure).
Mar 19 14:00:49 www avahi-daemon[965]: Found user 'avahi' (UID 70) and group 'avahi' (GID 70).
Mar 19 14:00:49 www systemd[1]: Started Machine Check Exception Logging Daemon.
Mar 19 14:00:49 www systemd[1]: Software RAID monitoring and management was skipped because of a failed 
condition check (ConditionPathExists=/etc/mdadm.conf).
Mar 19 14:00:49 www systemd[1]: Load CPU microcode update was skipped because of a failed condition chec
k (ConditionPathExists=/sys/devices/system/cpu/microcode/reload).
Mar 19 14:00:49 www systemd[1]: Auto-connect to subsystems on FC-NVME devices found during boot was skip
ped because of a failed condition check (ConditionPathExists=/sys/class/fc/fc_udev_device/nvme_discovery
).
Mar 19 14:00:49 www systemd[1]: Starting Authorization Manager...
Mar 19 14:00:49 www systemd[1]: Starting Power Profiles daemon...
Mar 19 14:00:49 www systemd[1]: Starting System Logging Service...
Mar 19 14:00:49 www systemd[1]: Starting RealtimeKit Scheduling Policy Service...
Mar 19 14:00:49 www systemd[1]: Self Monitoring and Reporting Technology (SMART) Daemon was skipped beca
use of a failed condition check (ConditionVirtualization=no).
Mar 19 14:00:49 www systemd[1]: OpenSSH ecdsa Server Key Generation was skipped because all trigger cond
ition checks failed.
Mar 19 14:00:49 www systemd[1]: OpenSSH ed25519 Server Key Generation was skipped because all trigger co
ndition checks failed.
Mar 19 14:00:49 www systemd[1]: OpenSSH rsa Server Key Generation was skipped because all trigger condit
ion checks failed.
Mar 19 14:00:49 www systemd[1]: Reached target sshd-keygen.target.
Mar 19 14:00:49 www systemd[1]: System Security Services Daemon was skipped because all trigger conditio
n checks failed.
Mar 19 14:00:49 www systemd[1]: Reached target User and Group Name Lookups.
Mar 19 14:00:49 www systemd[1]: Starting Accounts Service...
Mar 19 14:00:49 www systemd[1]: Starting Switcheroo Control Proxy service...
Mar 19 14:00:49 www bluetoothd[966]: Bluetooth daemon 5.56
Mar 19 14:00:49 www systemd[1]: Starting User Login Management...
Mar 19 14:00:49 www systemd[1]: Starting Disk Manager...
Mar 19 14:00:49 www chronyd[981]: chronyd version 4.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +S
CFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG)
Mar 19 14:00:49 www systemd[1]: Starting Daemon for power management...
Mar 19 14:00:49 www systemd[1]: Started VGAuth Service for open-vm-tools.
Mar 19 14:00:49 www rsyslogd[973]: [origin software="rsyslogd" swVersion="8.2102.0-101.el9" x-pid="973" 
x-info="https://www.rsyslog.com"] start
Mar 19 14:00:49 www chronyd[981]: Frequency -10.504 +/- 31.091 ppm read from /var/lib/chrony/drift
Mar 19 14:00:49 www chronyd[981]: Using right/UTC timezone to obtain leap second data
Mar 19 14:00:49 www systemd[1]: Started Service for virtual machines hosted on VMware.
Mar 19 14:00:49 www chronyd[981]: Loaded seccomp filter (level 2)
Mar 19 14:00:49 www systemd[1]: Started System Logging Service.
Mar 19 14:00:49 www systemd[1]: Started NTP client/server.
Mar 19 14:00:49 www avahi-daemon[965]: Successfully dropped root privileges.
--More--(0%)

(4)less
用法与more一样,只不过在查看内容后不会自动退出,需要手动退出,直接按q键退出

(END)---------------------(end提示查看内容完毕)

(5)head
(head - output the first part of files)
从头开始查看文件前多少行,通过 -n 来指定看文件的前多少行
命令结构:
head -n 行数 file:从头查看文件的前面多少行,默认显示的是十行
head -行数 file:从头开始查看文件前面多少行

[root@www test]# head passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@www test]# head -n 5 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@www test]# head -5 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@www test]# 

(6)tail
(tail - output the last part of files)
从文件尾部查看多少行,和head命令一样也是默认的是十行
tail -n 行数 file:查看文件末尾10行
tail -行数 file:查看文件末尾10行

[root@www test]# tail passwd
cockpit-ws:x:989:984:User for cockpit web service:/nonexisting:/sbin/nologin
cockpit-wsinstance:x:988:983:User for cockpit-ws instances:/nonexisting:/sbin/nologin
gnome-initial-setup:x:987:982::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
chrony:x:986:981::/var/lib/chrony:/sbin/nologin
dnsmasq:x:985:980:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
systemd-oom:x:978:978:systemd Userspace OOM Killer:/:/usr/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
haha:x:1001:1001::/home/haha:/bin/bash
[root@www test]# tail -n 5 passwd
dnsmasq:x:985:980:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
systemd-oom:x:978:978:systemd Userspace OOM Killer:/:/usr/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
haha:x:1001:1001::/home/haha:/bin/bash
[root@www test]# tail -5 passwd
dnsmasq:x:985:980:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
systemd-oom:x:978:978:systemd Userspace OOM Killer:/:/usr/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
haha:x:1001:1001::/home/haha:/bin/bash
[root@www test]# 

选项 -f 的作用
( -f, --follow[={name|descriptor}]
output appended data as the file grows;

​ an absent option argument means ‘descriptor’)持续跟踪文件内容变化,ctrl+c退出持续跟踪
在这里插入图片描述
在这里插入图片描述

6.文件的编辑

文件的编辑需要用到vim的相关命令,在linux操作系统当中所有的文件都是纯文本,而vim刚好是纯文本的编辑器,是vi的增强版,几乎所有的linux都支持
刚打开vim命令的时候进入的是命令模式,按 i 进入插入模式(插入模式可以编写其中的内容),按 esc 退出插入模式进入到命令模式,在命令模式输入 : 进入末行模式

vim进入命令模式:

  • d 进入删除状态
    • d 删除当前行
    • $ 删除光标到行尾,包括光标所在字符
    • ^ 删除光标到行首,不包括光标所在字符
    • G 删除光标所在行到文档尾部所有内容
    • gg 删除光标所在行到文档首部所有内容
    • yy 复制 当前行
    • 2 yy 2 表示要复制从光标所在行共几行
  • p 粘贴
  • cc 剪切
  • u 撤销之前的操作
  • Ctrl + r 重做
(1)移动光标的位置:
  • h 往左移动 按字符移动
  • j 往下移动 按行移动
  • k 往上移动 按行移动
  • l 往右按字符移动
(2)跳转光标的位置
  • $ 光标跳转到光标所在行行尾
  • ^ 光标挑战到光标所在行行首
  • G 文档内容最后一行的行首
  • 22G 光标跳转到指定的22行
  • gg 文档内容的第一行行首
  • w 光标按单词往右移动

在命令模式按 i 进入插入模式

只有在插入模式才能向文件中写入和删去内容
当命令界面最后一行显示了一下内容的时候就是进入了插入模式

-- INSERT --                                                                          1,1           All

在插入模式中按 esc 退出到命令模式

在命令模式中输入 : 进入末行模式

  • : 英文的冒号 中文的冒号不行

  • :w 保存

  • :w filename 另存为

  • :wq 保存并退出

  • :wq! 强制保存并退出 必须看权限

  • :q 退出不保存

  • :q! 强制退出不保存,,,可以哦

  • :r dir1/dir2/dir3/filename 将指定文件内容导入到当前文件

  • :3 3表示要跳转到的指定行
    只有回车后才能实现相应的操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值