Linux基础编程_课时13_软硬链接

课时13_软硬链接

1、软链接–快捷方式

1.1 创建软链接(ln -s)

命令格式:ln -s 文件名 快捷方式的名字

其中-s:表示soft

enspire@Ubuntu18:~/test001$ ln -s touch.c touch_ls
enspire@Ubuntu18:~/test001$ ls -l
总用量 4
-rw-rw-r-- 1 enspire enspire 144 8月  25 20:22 touch.c
lrwxrwxrwx 1 enspire enspire   7 8月  25 21:07 touch_ls -> touch.c

​ (1)文件touch_ls为touch.c的快捷方式;

​ (2)文件touch_ls的大小显示为7,快捷方式文件大小为实际文件的完整路径字符串长度。

1.2、移动软链接文件后,软链接是否还有效

进行如下操作:将软链接文件移动到上一级目录,切换到上级目录,cat打开软链接,是否能够链接到实际的文件?

enspire@Ubuntu18:~/test001$ mv touch_ls ..
enspire@Ubuntu18:~/test001$ ls
touch.c
enspire@Ubuntu18:~/test001$ cd ..
enspire@Ubuntu18:~$ ls
examples.desktop  test001  touch_ls
enspire@Ubuntu18:~$ cat touch_ls
cat: touch_ls: 没有那个文件或目录

1.3、软链接指向的实际文件路径改为适用绝对路径

enspire@Ubuntu18:~/test001$ ln -s ~/test001/touch.c touch.soft
enspire@Ubuntu18:~/test001$ ll
总用量 12
drwxrwxr-x 2 enspire enspire 4096 8月  25 21:16 ./
drwxr-xr-x 5 enspire enspire 4096 8月  25 21:11 ../
-rw-rw-r-- 1 enspire enspire  144 8月  25 20:22 touch.c
lrwxrwxrwx 1 enspire enspire   29 8月  25 21:16 touch.soft -> /home/enspire/test001/touch.c
enspire@Ubuntu18:~/test001$ mv touch.soft ..
enspire@Ubuntu18:~/test001$ cd ..
enspire@Ubuntu18:~$ ls
examples.desktop  test001  touch_ls  touch.soft
enspire@Ubuntu18:~$ cat touch.soft
sdfasfasdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
enspire@Ubuntu18:~$

总结:创建软链接最好适用绝对路径,可以在软链接被移动位置后仍能够正确链接到实际文件。

enspire@Ubuntu18:~$ ls -l
总用量 16
-rw-r--r-- 1 enspire enspire 8980 4月  16  2018 examples.desktop
drwxrwxr-x 2 enspire enspire 4096 8月  25 21:17 test001
lrwxrwxrwx 1 enspire enspire    7 8月  25 21:07 touch_ls -> touch.c
lrwxrwxrwx 1 enspire enspire   29 8月  25 21:16 touch.soft -> /home/enspire/test001/touch.c
enspire@Ubuntu18:~$

适用绝对路径创建的软链接touch.soft的大小为27,适用相对路径创建的软链接touch_ls的大小为7,两者大小都表示实际文件的完整路径字符串长度。

1.4、目录也可以创建软链接,格式与文件相同

2、硬链接

ls命令中涉及一个硬链接计数。

硬链接类似C++中的引用,创建一个别名。

2.1、硬链接实质

对file1创建一个硬链接,创建的硬链接命名为file3,实际file1和file3是指向的同一个inode节点,同一个文件。同一块磁盘数据块,通过file1修改磁盘上的数据块后,打开file3,看到的是修改后的文件。
硬链接示意图

2.2、创建硬链接(ln)

命令格式:ln 文件名 硬链接文件名

注意事项:

​ (1)硬链接文件不占用磁盘空间,虽然ls -l命令看到的硬链接文件大小与原文件大小相同。

​ (2)创建硬链接文件时,原文件的路径使用相对路径或者绝对路径都可以。

enspire@Ubuntu18:~/test001$ ll
总用量 12
drwxrwxr-x 2 enspire enspire 4096 8月  25 21:31 ./
drwxr-xr-x 5 enspire enspire 4096 8月  25 21:30 ../
-rw-rw-r-- 1 enspire enspire  144 8月  25 20:22 touch.c
enspire@Ubuntu18:~/test001$ ln touch.c touch.hardlink
enspire@Ubuntu18:~/test001$ ll
总用量 16
drwxrwxr-x 2 enspire enspire 4096 8月  25 21:31 ./
drwxr-xr-x 5 enspire enspire 4096 8月  25 21:30 ../
-rw-rw-r-- 2 enspire enspire  144 8月  25 20:22 touch.c
-rw-rw-r-- 2 enspire enspire  144 8月  25 20:22 touch.hardlink
enspire@Ubuntu18:~/test001$

2.3、硬链接计数

​ (1)创建一个新文件file,硬链接计数为1;

​ (2)给file文件创建一个硬链接,硬链接计数变成2;

​ (3)删除一个file文件的硬链接,硬链接计数变为1;

2.4、硬链接使用场景

​ (1)磁盘上有一个文件,假设再/home/enspire/hello

​ (2)需要在其他多个目录中管理hello文件,并且能够实时同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值