如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls –l命令去察看,就可以看到显示的link的路径了。
ln yy xx
3、将目录/aaa/下的所有文件软连接到目录/bbb下:
ln -s /aaa/* /bbb/
注意:软连接建立时,要指定 source和dist的完整路径,否则创建连接即使成功也是个无效的连接。
1.对某个文件创建一个连接
[root@A ~]# ln -s /home/kk/ss.sh ~ #如果不写目标地址,即在当前目录建接立链接
[root@A ~]# ls
CentOS-Base.repo.oldboy anaconda-ks.cfg install.log install.log.syslog ss.sh此命令表示在家目录下创建与源文件同名的链接到/home/kk/ss.sh 符号连接
[root@A ~]# ln -s /home/kk/ss.sh ~/dd
[root@A ~]# ls
CentOS-Base.repo.oldboy anaconda-ks.cfg dd install.log install.log.syslog
此命令表示在家目录下建立链接到/home/kk/ss.sh 并且名字为dd的符号连接(前提是在家目录下没有abc这个目录)
2.对某个目录创建符号连接
[root@A home]# ln -s /home/kk /home/abc
[root@A home]# ls
abc apache kk oldboy
[root@A home]# cd abc
[root@A abc]# ls
ss.sh
此命令表示在/home目录下创建一个链接到/home/kk目录的名字为abc的符号连接。
[root@A home]# rm abc
rm: remove symbolic link `abc'? y #删除所作目录链接时的提示
[root@A ~]# ln -s /tmp ~/
[root@A ~]# ls
CentOS-Base.repo.oldboy anaconda-ks.cfg install.log install.log.syslog tmp
此命令表示在家目录下创建一个与源文件夹同名的符号连接
3.对某个文件创建一个硬连接
[root@A ~]# ln /home/kk/ss.sh ~/
[root@A ~]# ls -l
total 60
-rw-r--r-- 1 root root 2239 Oct 24 09:30 CentOS-Base.repo.oldboy
-rw------- 1 root root 1074 Nov 10 12:28 anaconda-ks.cfg
-rw-r--r-- 1 root root 26403 Nov 10 12:28 install.log
-rw-r--r-- 1 root root 4378 Nov 10 12:28 install.log.syslog
-rw-r--r-- 2 root root 82 Dec 26 14:31 ss.sh
此命令表示在家目录下创建与源文件同名的链接到/home/kk/ss.sh硬链接,而且目标文件的颜色和原来一样,
ls –l也无法显示链接的路径
[root@A ~]# ln /home/kk/ss.sh ~/abc
[root@A ~]# ls
CentOS-Base.repo.oldboy abc anaconda-ks.cfg install.log install.log.syslog
此命令表示在家目录下建立链接到/tmp/abc.txt 并且名字为abc的硬链接(前提是在家目录下没有abc这个目录)
abc目录己存在的情况
[root@A ~]# mkdir abc
[root@A ~]# ls
CentOS-Base.repo.oldboy abc anaconda-ks.cfg install.log install.log.syslog
[root@A ~]# ln /home/kk/ss.sh ~/abc #做硬链接
[root@A ~]# ls
CentOS-Base.repo.oldboy abc anaconda-ks.cfg install.log install.log.syslog
[root@A ~]# cd abc
[root@A abc]# ls
ss.sh
源文件是目录不可以做硬链接
[root@A ~]# ln /home/kk ~/abc
ln: `/home/kk': hard link not allowed for directory
4.参数 -v的用法
硬链接:
[root@A home]# ln -v /home/kk/ss.sh /home #加上参数v后,
create hard link `/home/ss.sh' to `/home/kk/ss.sh' #会用文字显示源文件到目标的链接
[root@A home]# ls
apache kk oldboy ss.sh
[root@A home]# ln -vs /home/kk/ss.sh /home #创建名子相同的软链接
create symbolic link `/home/ss.sh' to `/home/kk/ss.sh' #会用文字显示源文件到目标的链接
ln: creating symbolic link `/home/ss.sh' to `/home/kk/ss.sh': File exists #同时也出现了己存在提示
软链接
[root@A home]# ln -vs /home/kk/ss.sh /home/dd #加上参数v后的软链接
create symbolic link `/home/dd' to `/home/kk/ss.sh' #会用文字显示源文件到目标的链接
[root@A home]# ls
apache dd kk oldboy ss.sh
青绿色的软链接,跟原来颜色一样的是硬链接
5.-f的用法
[root@A home]# ls
apache dd kk oldboy ss.sh #dd 是己存在软链接;ss.sh是己存在硬链接
[root@A home]# ln -s -f /home/kk/ss.sh /home #创建/home/kk/ss.sh的软链接
[root@A home]# ls
apache dd kk oldboy ss.sh #上面加了f参数,ss.sh现在是软链接
[root@A home]# ln /home/kk/ss.sh /home/dd #创建/home/kk/ss.sh 的硬链接,名子同样是dd
ln: creating hard link `/home/dd' to `/home/kk/ss.sh': File exists #提示出现了,己存在
[root@A home]# ln -f /home/kk/ss.sh /home/dd #加上f参数后,提示没有了
[root@A home]# ls
apache dd kk oldboy ss.sh #dd变成链接了,
-f的主要过程:先将同名的软链接dd删除,然后再创建硬链接dd
6.-d和-b的用法
[root@A home]# ln /home/kk /home/dd #创建硬链接不允许
ln: `/home/kk': hard link not allowed for directory #不允许对目录创建硬链接
[root@A home]# ln -F /home/kk /home/dd #加上-d参数
ln: creating hard link `/home/dd' to `/home/kk': Operation not permitted #为什么还是不行呀?
7.-i的用法
[root@A home]# ln -s /home/kk/ss.sh #创建软链接
[root@A home]# ls #查看
apache kk oldboy ss.sh
[root@A home]# ln -fi /home/kk/ss.sh #加上-f参数删除同名的,加上-i参数-在删除之前给出提示
ln: replace `./ss.sh'? #提示
[root@A home]# ln -fi /home/kk/ss.sh
ln: replace `./ss.sh'? n #我选择了n
[root@A home]# ls #查看
apache kk oldboy ss.sh #还存在
[root@A home]# ln -fb /home/kk/ss.sh #加上参数b
[root@A home]# ls #查看
apache kk oldboy ss.sh ss.sh~ #之前存在的软链接被更名备份了,然后创建同名的硬链接