Skip to main content

操作文件和目录

操作文件和目录的命令是 cp mv mkdir rm ln

  • cp —复制文件和目录
  • mv —移动/重命名文件和目录
  • mkdir —创建目录
  • rm —删除文件和目录
  • ln —创建硬链接和符号链接

这五个命令属于最常使用的 Linux 命令之列。它们用来操作文件和目录。

[root@VM-0-13-centos ~] cp -u *.html demo

通配符

通配符意义
*匹配任意多个字符(包括零个或一个)
?匹配任意一个字符(不包括零个)
[characters]匹配任意一个属于字符集中的字符
[!characters]匹配任意一个不是字符集中的字符
[[:class:]]匹配任意一个属于指定字符类中的字符

普遍使用的字符类

模式匹配对象
*所有文件
g*文件名以 g 开头的文件
b*.txtb 开头,中间有零个或任意多个字符,并以 .txt 结尾的文件
ACE???ACE 开头,其后紧接着 3 个字符的文件
[abc]*文件名以 a , b , 或 c 开头的文件
ACE.[0-9][0-9][0-9]ACE. 开头,并紧接着 3 个数字的文件
[[:upper:]]*以大写字母开头的文件
[![:digit:]]*不以数字开头的文件
*[[:lower:]123]文件名以小写字母结尾,或以 12 ,或 3 结尾的文件

创建目录 mkdir

mkdir 命令是用来创建目录的。它这样工作:

[root@VM-0-13-centos ~] mkdir lesson
[root@VM-0-13-centos ~] ls
lesson
[root@VM-0-13-centos ~] mkdir dir1 dir2 dir3
[root@VM-0-13-centos ~] ls
dir1 dir2 dir3

复制文件和目录 cp

cp 命令,复制文件或者目录。它有两种使用方法:

[root@VM-0-13-centos ~] cp name1 directory

复制多个项目(文件或目录)到一个目录下。

[root@VM-0-13-centos ~] cp * directory

cp 有用的选项和实例

这里列举了 cp 命令一些有用的选项(短选项和等效的长选项):

选项意义
-a, --archive复制文件和目录,以及它们的属性,包括所有权和权限。通常,副本具有用户所操作文件的默认属性。
-i, --interactive在重写已存在文件之前,提示用户确认。如果这个选项不指定,cp 命令会默认重写文件。
-r, --recursive递归地复制目录及目录中的内容。当复制目录时,需要这个选项(或者-a 选项)。
-u, --update当把文件从一个目录复制到另一个目录时,仅复制目标目录中不存在的文件,或者是文件内容新于目标目录中已经存在的文件。
-v, --verbose显示翔实的命令操作信息

cp 选项

命令运行结果
cp file1 file2复制文件 file1 内容到文件 file2。如果 file2 已经存在,file2 的内容会被 file1 的内容重写。如果 file2 不存在,则会创建 file2。
cp -i file1 file2这条命令和上面的命令一样,除了如果文件 file2 存在的话,在文件 file2 被重写之前,会提示用户确认信息。
cp file1 file2 dir1复制文件 file1 和文件 file2 到目录 dir1。目录 dir1 必须存在。
cp dir1/* dir2使用一个通配符,在目录 dir1 中的所有文件都被复制到目录 dir2 中。dir2 必须已经存在。
cp -r dir1 dir2复制目录 dir1 中的内容到目录 dir2。如果目录 dir2 不存在,创建目录 dir2,操作完成后,目录 dir2 中的内容和 dir1 中的一样。如果目录 dir2 存在,则目录 dir1 (和目录中的内容) 将会被复制到 dir2 中。

移动和重命名文件 mv

mv 命令可以执行文件移动和文件命名任务,这依赖于你怎样使用它。任何一种情况下,完成操作之后,原来的文件名不再存在。mv 使用方法与 cp 很相像:

[root@VM-0-13-centos ~] mv item1 item2

mvcp 共享了很多一样的选项

选项意义
-i --interactive在重写一个已经存在的文件之前,提示用户确认信息。如果不指定这个选项,mv 命令会默认重写文件内容。
-u --update当把文件从一个目录移动另一个目录时,只是移动不存在的文件,或者文件内容新于目标目录相对应文件的内容。
-v --verbose当操作 mv 命令时,显示翔实的操作信息。
mv file1 file2移动 file1file2 。如果 file2 存在,它的内容会被 file1 的内容重写。如果 file2 不存在,则创建 file2。这两种情况下,file1 都不再存在。
mv -i file1 file2除了如果 file2 存在的话,在 file2 被重写之前,用户会得到提示信息外,这个和上面的选项一样。
mv file1 file2 dir1移动 file1file2 到目录 dir1 中。dir1 必须已经存。
mv dir1 dir2如果目录 dir2 不存在,创建目录 dir2,并且移动目录 dir1 的内容到目录 dir2 中,同时删除目录 dir1 。如果目录 dir2 存在,移动目录 dir1(及它的内容)到目录 dir2

rm - 删除文件和目录

rm 命令用来移除(删除)文件和目录

[root@VM-0-13-centos ~] rm item

item 代表一个或多个文件或目录。

普遍使用的 rm 选项

选项意义
-i, --interactive在重写一个已经存在的文件之前,提示用户确认信息。如果不指定这个选项,mv 命令会默认重写文件内容。
-r, --recursive当把文件从一个目录移动另一个目录时,只是移动不存在的文件,或者文件内容新于目标目录相对应文件的内容。
-f, --force忽视不存在的文件,不显示提示信息。这选项覆盖了 --interactive 选项。
-v, --verbose在执行 rm 命令时,显示翔实的操作信息。
命令运行结果
rm file1默默地删除文件
rm -i file1除了在删除文件之前,提示用户确认信息之外,和上面的命令作用一样。
rm -r file1 dir1删除文件 file1 , 目录 dir1 ,及 dir1 中的内容。
rm -rf file1 dir1同上,除了如果文件 file1 ,或目录 dir1 不存在的话,rm 仍会继续执行。

☠ 小心 rm ! 类 Unix 的操作系统,比如说 Linux ,没有复原命令。一旦你用 rm 删除了一些东西,它就消失了。Linux 假定你很聪明,你知道你在做什么。尤其要小心通配符。思考一下这个经典的例子。假如说,你只想删除一个目录中的 HTML 文件。
输入: rm *.html 这是正确的,如果你不小心在 *.html 之间多输入了一个空格,就像这样: rm * .html 这个 rm 命令会删除目录中的所有文件,还会抱怨没有文件叫做 .html
💡 小贴士。当你使用带有通配符的 rm 命令时(除了仔细检查输入的内容外),先用 ls 命令来测试通配符。这会让你看到将要被删除的文件是什么。然后按下上箭头按键,重新调用刚刚执行的命令,用 rm 替换 ls。

ln —创建链接

ln 命令既可创建硬链接,也可以创建符号链接。可以用其中一种方法来使用它:

创建 node 的软连接

[root@VM-0-13-centos ~] ln -s /node /bin/node-v16.3.0-linux-x64/bin/node

💡 ln -s 目标 usr/bin