#《快乐的 Linux 命令行》

#移动文件

感觉mvcp是一样的,只是不同的在于,mv移动文件夹的时候不需要-r,自动完成的。

两种用法:

1
mv item1 item2

把文件或目录item1移动或重命名为item2

1
mv item1... directory

把一个或多个条目从一个目录移动到另一个目录中。

mv命令的一些参数选项:

选项 长选项 描述
-i --interactive 在重写一个已经存在的文件之前,提示用户确认信息。如果不指定这个选项,mv 命令会默认重写文件内容。
-u --update 当把文件从一个目录移动另一个目录时,只是移动不存在的文件,或者文件内容新于目标目录相对应文件的内容。
-v --verbose 显示详细的命令操作信息

示例:

  • 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

#删除文件

1
rm item...

感觉在 linux 下第一个知道的命令大概就是rm -rf /*吧…

一些选项:

选项 长选项 描述
-i --interactive 在删除已存在的文件前,提示用户确认信息。如果不指定这个选项,rm 会默默地删除文件
-r --recursive 递归地删除文件,这意味着,如果要删除一个目录,而此目录又包含子目录,那么子目录也会被删除。要删除一个目录,必须指定这个选项。
-f --force 忽视不存在的文件,不显示提示信息。这选项覆盖了--interactive选项。
-v --verbose 显示详细的命令操作信息

类 Unix 系统,是没有复原命令的

当你使用带有通配符的rm命令时,除了仔细检查输入的内容外,先用ls命令来测试通配。
当你使用带有通配符的rm命令时,除了仔细检查输入的内容外,先用ls命令来测试通配。
当你使用带有通配符的rm命令时,除了仔细检查输入的内容外,先用ls命令来测试通配。

1
2
rm *.html # 删除所有html文件
rm * .html # 会删除目录中的所有文件,并提示没有“.html”文件

#创建链接

硬链接:

1
ln file link

符号链接:

1
ln -s item link

item可以是一个文件或是一个目录。

硬链接的缺点:

  • 一个硬链接不能关联它所在文件系统之外的文件。这是说一个链接不能关联与链接本身不在同一个磁盘分区上的文件。
  • 一个硬链接不能关联一个目录。

一个硬链接和文件本身没有什么区别。

当一个硬链接被删除时,这个链接被删除,但是文件本身的内容仍然存在,直到所有关联这个文件的链接都删除掉。

当你删除一个符号链接时,只有这个链接被删除,而不是文件自身。

如果先于符号链接删除文件,这个链接仍然存在,但是不指向任何东西。(会被 ls 命令标红,表示坏链接

#测试

1
2
3
4
5
6
7
8
9
10
11
12
onns@DESKTOP-5JJP7PL:~$ vi fun
onns@DESKTOP-5JJP7PL:~$ ln fun fun-hard
onns@DESKTOP-5JJP7PL:~$ ls
fun fun-hard
onns@DESKTOP-5JJP7PL:~$ ls -l
total 0
-rw-r--r-- 2 onns onns 19 Nov 6 14:23 fun
-rw-r--r-- 2 onns onns 19 Nov 6 14:23 fun-hard
onns@DESKTOP-5JJP7PL:~$ ls -li
total 0
35465847065606899 -rw-r--r-- 2 onns onns 19 Nov 6 14:23 fun
35465847065606899 -rw-r--r-- 2 onns onns 19 Nov 6 14:23 fun-hard

可以通过-i参数来展示文件索引节点的信息,可以看出这实际上是索引的同一个文件。

1
2
3
4
5
6
onns@DESKTOP-5JJP7PL:~$ ln -s fun fun-sym
onns@DESKTOP-5JJP7PL:~$ ls -l
total 0
-rw-r--r-- 2 onns onns 19 Nov 6 14:23 fun
-rw-r--r-- 2 onns onns 19 Nov 6 14:23 fun-hard
lrwxrwxrwx 1 onns onns 3 Nov 6 14:25 fun-sym -> fun

符号链接的大小是指向文件字符的大小,而不是实际大小,因为fun-sym指向的是funfun三个字符,所以大小是3

对于符号链接,有一点值得记住,执行的大多数文件操作是针对链接的对象,而不是链接本身。

rm命令是个特例。当你删除链接的时候,删除链接本身,而不是链接的对象。