操作文件和目录
操作文件和目录的命令是 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*.txt | 以 b 开头,中间有零个或任意多个字符,并以 .txt 结尾的文件 |
| ACE??? | 以 ACE 开头,其后紧接着 3 个字符的文件 |
| [abc]* | 文件名以 a , b , 或 c 开头的文件 |
| ACE.[0-9][0-9][0-9] | 以 ACE. 开头,并紧接着 3 个数字的文件 |
| [[:upper:]]* | 以大写字母开头的文件 |
| [![:digit:]]* | 不以数字开头的文件 |
| *[[:lower:]123] | 文件名以小写字母结尾,或以 1 ,2 ,或 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
mv 与 cp 共享了很多一样的选项
| 选项 | 意义 |
|---|---|
| -i --interactive | 在重写一个已经存在的文件之前,提示用户确认信息。如果不指定这个选项,mv 命令会默认重写文件内容。 |
| -u --update | 当把文件从一个目录移动另一个目录时,只是移动不存在的文件,或者文件内容新于目标目录相对应文件的内容。 |
| -v --verbose | 当操作 mv 命令时,显示翔实的操作信息。 |
| mv file1 file2 | 移动 file1 到 file2 。如果 file2 存在,它的内容会被 file1 的内容重写。如果 file2 不存在,则创建 file2。这两种情况下,file1 都不再存在。 |
| mv -i file1 file2 | 除了如果 file2 存在的话,在 file2 被重写之前,用户会得到提示信息外,这个和上面的选项一样。 |
| mv file1 file2 dir1 | 移动 file1 和 file2 到目录 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