ln命令举例详解
ln命令举例详解
?
举例:
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~???? #之前存在的软链接被更名备份了,然后创建同名的硬链接
*******************************
工具至上
Email:zsc1528@gmail.com
QQ:2743230905
*******************************