易错点
易错1:尽量不要使用相对路径
- 创建软链接时,如果源文件使用相对路径,应该是相对于【软链接所在目录的】路径,而不是相对pwd
- 解释:若希望创建的软链接文件在
/root
下,则以相对路径描述源文件时,也应相对于/root
,而不是pwd
=
易错2:删除【目录的软链接】
# 正确命令:
rm -rf dir_link
# 🟥🟥🟥🟥🟥🟥🟥错误: rm -rf dir_link/ 将会删除链接目录下所有文件
=
易错3:对【目录的软链接】使用-R
递归修改目录下所有文件的属性!!!
# 必须指定到斜线之后!!!否则只表示软链接文件本身!!!
# 如:二进制安装mysql解压之后
chown -R root.root /usr/local/mysql/ # 必须是斜线结尾!!!!!
chown -R root.root /usr/local/mysql # 错!!!!!!!!!!!
==============================================================
# 注意以下区别。。。
[root@CentOS8 ~]#ll /usr/local/mysql # 表示软链接本身
lrwxrwxrwx 1 root root 47 Oct 31 20:36 /usr/local/mysql -> /usr/local/mariadb-10.2.31-linux-systemd-x86_64
[root@CentOS8 ~]#ll /usr/local/mysql/ # 表示目录!!!!!!!!!!!!
total 176
drwxr-xr-x 2 root root 4096 Sep 17 2019 bin
-rw-r--r-- 1 root root 17987 Jan 27 2020 COPYING
-rw-r--r-- 1 root root 2354 Jan 27 2020 CREDITS
...........
常规操作
对文件创建软链接
# 命令
ln -s 源文件 [链接名]
#-----------------------------------------------------------------------------------
#1 不指定链接名
# 表示在当前目录创建软链接(链接名=源文件basename)
[root@centos7 ~]#ll
lrwxrwxrwx 1 root root 25 Oct 21 08:49 redis-cli -> /apps/redis/bin/redis-cli
#-----------------------------------------------------------------------------------
#2 指定链接名(相对路径)
# 表示在【当前目录】创建软链接(链接名即为指定的名字)
# 注意:此时源文件必须用绝对路径。。。。。。。。。。
[root@centos7 ~]#ln -s /apps/redis/bin/redis-cli cakunzi
[root@centos7 ~]#ll
lrwxrwxrwx 1 root root 25 Oct 21 08:57 cakunzi -> /apps/redis/bin/redis-cli
#-----------------------------------------------------------------------------------
#3 指定链接名(绝对路径)
# 表示在【指定路径】创建软链接(链接名即为指定的名字)
[root@centos7 ~]#ln -s /apps/redis/bin/redis-cli /data/zhubazi
[root@centos7 ~]#ll /data/zhubazi
lrwxrwxrwx 1 root root 25 Oct 21 09:01 zhubazi -> /apps/redis/bin/redis-cli
#-----------------------------------------------------------------------------------
#4 指定链接路径(用绝对路径指定一个目录)
# 表示在【该目录下】创建软链接(链接名=源文件basename)
[root@centos7 ~]#ln -s /apps/redis/bin/redis-cli /data
[root@centos7 ~]#ll /data/
lrwxrwxrwx 1 root root 25 Oct 21 10:37 redis-cli -> /apps/redis/bin/redis-cli
#-----------------------------------------------------------------------------------
# 补充:软链接也是一个文件,文件名不能与当前目录的其他文件冲突
# 文件名冲突报错:
[root@centos7 ~]#ln -s /apps/redis/bin/redis-cli redis-5.0.7.tar.gz
ln: failed to create symbolic link ‘redis-5.0.7.tar.gz’: File exists
=
对目录创建软链接
# 命令
ln -s 源目录 链接名
# 注意:必须指定链接名,否则名字冲突
[root@centos7 ~]#ll -d dev/
drwxr-xr-x 2 root root 4096 May 20 23:06 dev/
[root@centos7 ~]#ln -s dev/
ln: failed to create symbolic link ‘./dev’: File exists
#-----------------------------------------------------------------------------------
#1 链接名是文件(相对路径)
[root@centos7 ~]#ln -s dev/ caokunzi
[root@centos7 ~]#ll
total 4
lrwxrwxrwx 1 root root 4 May 20 23:08 caokunzi -> dev/
drwxr-xr-x 2 root root 4096 May 20 23:06 dev
#-----------------------------------------------------------------------------------
#2 链接名是文件(绝对路径)
# 此时原始目录必须使用绝对路径。。。。。。。。。
ln -s dev/ /data/zhubazi-1 # 错
ln -s /root/dev/ /data/zhubazi-2 # 对
#-----------------------------------------------------------------------------------
#3 链接名是目录
# 此时原始目录必须使用绝对路径。。。。。。。。。
# 创建结果:链接名为目录basename
[root@centos7 ~]#ln -s /root/dev/ /data/
[root@centos7 ~]#ll /data/
total 16
lrwxrwxrwx 1 root root 10 May 20 23:14 dev -> /root/dev/
wan