用法介绍
ln [参数] [-T] 原始文件 链接名称 第一种形式
ln [参数] 原始文件 第二种形式
ln [参数] 原始文件 链接存在的文件夹 第三种形式
ln [参数] -t 链接存在的文件夹 原始文件 第四种形式
描述
第一种形式在建立建立连接文件,建立连接的目录可以在连接名称种之处;第二种形式在当前文件夹建立连接;第三种形式在指定的文件夹(第二个参数)建立链接,目录必须存在;在指定的文件夹(第一个参数)建立连接,目录必须存在;默认建立硬链接且原始文件必须存在。
参数
-s 符号链接,默认是硬链接
-f 如果链接文件存在则删除链接文件并建立新的链接文件
符号链接:相当于win下的快捷方式,
硬链接 :在某个目录下新增加一个该文件的关联数据,建立一个,比符号链接安全,但限制较多不能跨文件系统和分区,不能建立目录的硬链接
常见的用法
1. ln -s /root/tools/lln /root/tt/lln
在 /root/tt/建立lln的符号链接,删除原文件符号文件lln将不能使用
2.ln /root/tools/lln /root/lln
在/root/tt/建立lln的硬链接,删除任意一个其他那个还可以用
3. ln -s /root/tools /root/tt
建立目录的符号链接,tt里边会有tools为名的文件夹链接指向源文件夹
4.ln -s /root/tools/* /root/tt
建立指向源文件所有文件的链接,为了兼容源文件夹下有子文件夹所以建立符号链接,当然*可以用正则代替,但是如果想建立链接向源文件夹下多个执行文件的链接呢?
果文件比较多而且还要有规则肿么办?可以通过这个脚本来实现:
#!/bin/sh
#############################################################################################################################################################################
# author banzhang@chunshiban.com #
# version 1.0 #
# last modify time 2012-06-29 16:25 #
# update http://soft.chunshiban.com/linux/script/shell/lln.tar.z #
# 主要用来为一个文件夹下的多个可执行文件建立符号链接,比如将/usr/local/bin 下的可执行性文件连接到 /usr/local/lamp下可执行 lln /usr/local/bin/ /usr/local/lamp/ ; #
# 支持grep正则表达式比如以cc开头的可执行文件连接到/usr/local/lamp/下课桌椅执行lln /usr/local/bin /usr/local/lamp/ cc*即可 #
#############################################################################################################################################################################
cd $1
oldDir=`pwd`
#newDir=`echo $2|sed -r 's/\/$//'`
cd $2
newDir=`pwd`
cd $oldDir
if [ $# == 2 ];then
declare list=`ls ./`
elif [ $# == 3 ];then
declare list=`ls ./|grep $3`
else
echo "use:lln TARGET LINK_NAME [PATTERN]"
exit
fi
for bin in $list
do
if [ -f "$bin" -a -x "$bin" ]; then
echo "$oldDir/$bin will be link to $newDir/$bin"
read -p "Please input Y/N: " -t 10 yn
if [ "$yn" == "Y" -o "$yn" == "y" ]; then
`ln -s $oldDir/$bin $newDir/$bin` && echo "$oldDir/$bin link to $newDir/$bin ok!"
else
echo "pass the file $oldDir/$bin"
echo ""
fi
fi
done
这在我们整合多个项目的时候很有用,比如需要把跟lamp服务相关的文件整合到一起:php,mysql,apache,memcached,redis等监控工具,放到一起然后引入到环境变量中.