openEuler基础(十六)文件管理命令(ln)

提出问题:
在openEuler系统中能否像windows一样,创建快捷方式?
答案是肯定的,但是在openEuler系统中,"快捷方式"不太一样。
在Windows系统中,快捷方式是一个指向源文件的链接文件,可以让用户通过这个链接来访问原始的文件;原文件被删除或移动到其他地方后,链接文件就会失效。
在openEuler中存在硬链接软链接两种文件。
ln命令用于创建链接文件。

软链接(symbolic link) 硬链接(hard link)
以路径形式存在,类似于Windows的快捷方式 以文件副本形式存在,但不占用实际空间
删除源文件后链接失效 删除源文件后链接不失效
可以对目录进行链接 不可以对目录进行链接
可以跨文件系统 不可以跨文件系统

ln的功能是为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,不需要在每一个目录下都放一个相同的文件,只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)该文件就可以,不必重复占用磁盘空间。

一、链接ln命令
ln命令在不带参数的情况下,默认创建的是硬链接。
语法:ln [-f|-n][-s] SourceFile [TargetFile]
-b 删除,覆盖以前建立的链接。
-d 允许超级用户制作目录的硬链接。
-f 强制执行。
-i 交互模式,文件存在则提示用户是否覆盖。
-n 把符号链接视为一般目录。
-s 软链接(符号链接)。

示例:在当前目录下,为文件a.txt创建硬链接。

[root@localhost ~]# vi a.txt

在a.txt中按字母i,输入字符串:hello world。然后按esc键,输入 :wq,保存并退出。

[root@localhost ~]# ls
a.txt 

使用ln命令创建a.txt文件的链接文件mylink1。

[root@localhost ~]#ln  a.txt mylink1

用vi打开mylink1文件,可以看到内容和a.txt完全一样。

[root@localhost ~]# vi  mylink1

二、硬链接
可以将它理解为一个”指向原始文件的指针”,系统不为它分配独立的文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的连接数就会增加1;而且只有当该文件的连接数为 0 时,才算彻底被将它删除。因此即便删除原始文件,依然可以通过硬链接文件来访问。

示例1:在当前目录下,为文件a.txt创建硬链接。

[root@localhost ~]# vi a.txt

在a.txt中按字母i,输入字符串:hello world。然后按esc键,输入 :wq,保存并退出。

[root@localhost ~]# ls
a.txt 

使用ln命令创建a.txt文件的链接文件mylink1。

[root@localhost ~]#ln  a.txt mylink1

用vi打开mylink1文件,可以看到内容和a.txt完全一样。

[root@localhost ~]# vi  mylink1

删除文件a.txt,然后用vi打开mylink1文件,还是可以看到a.txt的内容。

[root@localhost ~]# rm –rf  a.txt
[root@localhost ~]# vi  mylink1

需要注意的是,不能跨分区对文件进行硬链接。
示例2:在/tmp目录下,为当前目录(/root)下的a.txt文件创建硬链接。

[root@localhost ~]# vi a.txt

在a.txt中按字母i,输入字符串:hello world。然后按esc键,输入 :wq,保存并退出。

[root@localhost ~]# ls
a.txt 

使用ln命令创建a.txt文件的硬链接文件mylink2,硬链接文件mylink2在/tmp目录下。

[root@localhost ~]#ln  /root/a.txt  /tmp/mylink2
ln: 无法创建硬链接 '/tmp/mylink2' => '/root/a.txt': 无效的跨设备链接

也不能对目录进行硬链接。
示例3:在当前目录(/root)下创建目录mydir,并为它创建硬链接dirlink1。

[root@localhost ~]# mkdir mydir
[root@localhost ~]#ln  mydir  dirlink1
ln: mydir: 不允许将硬链接指向目录

三、软链接
等同于Windows系统下的快捷方式,仅仅包括所含链接文件的路径名字。因此能链接目录,也能跨文件系统链接。但是,当删除源文件后,软链接文件也将失效。
示例1:在当前目录下,为文件a.txt创建硬链接。

[root@localhost ~]# vi a.txt

在a.txt中按字母i,输入字符串:hello world。然后按esc键,输入 :wq,保存并退出。

[root@localhost ~]# ls
a.txt 

使用ln命令创建a.txt文件的软链接文件mylink3。

[root@localhost ~]#ln  -s  a.txt  mylink3

用vi打开mylink1文件,可以看到内容和a.txt完全一样。

[root@localhost ~]# vi  mylink3

删除文件a.txt,然后用vi打开mylink3文件,不能看到a.txt的内容。

[root@localhost ~]# rm  –rf  a.txt
[root@localhost ~]# vi  mylink3

示例2:在/tmp目录下,为当前目录(/root)下的a.txt文件创建软链接。

[root@localhost ~]# vi a.txt

在a.txt中按字母i,输入字符串:hello world。然后按esc键,输入 :wq,保存并退出。

[root@localhost ~]# ls
a.txt 

使用ln命令创建a.txt文件的软链接文件mylink4,硬链接文件mylink4在/tmp目录下。

[root@localhost ~]#ln  /root/a.txt  /tmp/mylink4
[root@localhost ~]# vi  mylink4

示例3:在当前目录(/root)下创建目录mydir,并为它创建软链接dirlink2。

[root@localhost ~]# mkdir mydir
[root@localhost ~]#ln -s mydir  dirlink2
[root@localhost ~]#cd  dirlink2

四、ln命令训练
下面,通过一个完整流程,训练ln命令用法。
1.在/tmp目录下,创建文件夹(姓名),并进入该文件夹。

[root@localhost ~]# mkdir /tmp/zhangsan
[root@localhost ~]# cd /tmp/zhangsan
[root@localhost zhangsan]# 

2.在文件夹(姓名)中,创建文件(姓名.txt),并在文件中输入自己的姓名。

[root@localhost zhangsan]# vi zhangsan.txt

3.在文件夹(姓名)中,创建文件(班级.txt),并在文件中输入班级信息。

[root@localhost zhangsan]# vi class.txt

4.在文件夹(姓名)中,创建文件(学号.txt),并在文件中输入自己的学号。

[root@localhost zhangsan]# vi stuid.txt

5.在/root目录下,为/tmp/zhangsan/姓名.txt文件新建软链接mylink_name。

[root@localhost zhangsan]# cd
[root@localhost ~]# ln -s /tmp/zhangsan/zhangsan.txt mylink_name
[root@localhost ~]# vi mylink_name
[root@localhost ~]# 

6.在/root目录下,为/tmp/zhangsan/班级.txt文件新建硬链接mylink_class,看是否可以成功,说明为什么,并改正。

[root@localhost zhangsan]# cd
[root@localhost ~]# ln /tmp/zhangsan/class.txt mylink_class
ln: 无法创建硬链接 'mylink_class' => '/tmp/zhangsan/class.txt': 无效的跨设备链接

无法创建成功,因为硬链接不能跨区。

[root@localhost ~]# cp /tmp/zhangsan/class.txt /root/class.txt
[root@localhost ~]# ln class.txt mylink_class
[root@localhost ~]# vi mylink_class 
[root@localhost ~]#

你可能感兴趣的:(openEuler,linux,运维,服务器)