Linux学习笔记--ln命令(链接命令)

ln:英文名link,链接的意思。

Linux 系统中有软链接和硬链接两种特殊的“文件”。

硬链接特征:

1) 硬链接文件跟源文件拥有相同的i(inode)节点和存储block块,
   它们可以看作是同一个文件。
2) 可通过i节点进行识别(i节点相同)。
3) 链接文件和源文件必须在相同的分区,不能跨分区。
3) 不能针对目录创建硬链接。
   (这个虽然Linux ln命令帮助说明里说可以用"ln -d"创建目录的硬链接,
   但是本人实测不可行,本人在网上搜索出来了一段详细解释说明,
   具体说明请看文章最下边的"特别说明"。)
4) 修改任意一个文件,另外一个文件的内容都会改变。
5) 当源文件被删除时,硬链接文件还可以正常使用。

软链接特征:

1) 软链接文件作用跟windows系统的快捷方式作用相同。
2) 软链接拥有自己的i节点和存储block块,
   但是此数据块中保存的信息是源文件的i节点和文件名信息,
   并不会保存实际的文件数据内容。
3) 用"ll"命令查看时,软链接文件前面都是"lrwxrwxrwx",
   其中第一位的字母"l"即表示此文件为软链接文件,
   软链接文件的真实权限取决于源文件的权限。
4) 修改任意一个文件,另外一个文件的内容都会改变。
5) 当源文件被删除时,软链接文件将不能使用。

1. 命令格式:

ln [选项] 源文件或目录 目标文件或目录

2. 常用选项:

"ln -b" 如果目标目录中已经有同名的文件,那么在覆盖之前先进行备份
"ln -f" 如果目标目录中已经有同名的文件,无需提示,直接覆盖
"ln -i" 人机交互,如果目标目录中已经有同名的文件,则提示是否进行覆盖
"ln -n" 把软链接视为一般目录(说明:范例中我会详细解释)
"ln -s" 创建软链接
"ln -v" 详细显示操作进行的步骤。(v为verbose的意思)

3. 常用范例:

1) 创建一个硬链接文件。

2) 创建一个软链接文件。

3) 创建一个硬链接文件,如果目标目录中已经有同名文件,覆盖前先进行备份。

4) 给目录创建一个软链接。

5) "ln -n" 命令实例说明。

6) 创建软链接失败实例说明

特别说明:

1) 创建软链接时,如果软链接文件跟源文件不在同一个目录,那么源文件地址必须为绝对路径,否则创建出来的软链接无法使用。

2) 不能针对文件创建硬链接。

"linux系统中的硬连接有两个限制:不能跨越文件系统和不允许普通用户对目录作硬连接。至于第一个限制,很好理解,而第二个就不那么好理解了。 我们对任何一个目录用ls -l 命令都可以看到其连接数至少是2,这也说明了系统中是存在硬连接的,而且命令ln -d 也可以让超级用户对目录作硬连接,这些都说明了系统限制对目录进行硬连接只是一个硬性规定,并不是逻辑上不允许或技术上的不可行。那么操作系统为什么要进行限制呢?如果引入了对目录的硬连接就有可能在目录中引入循环,那么在目录遍历的时候系统就会陷入无限循环当中。也许您会说,符号连接不也可以引入循环吗,那么为什么不限制目录的符号连接呢?原因就在于在linux系统中,每个文件(目录也是文件)都对应着一个inode结构,其中inode数据结构中包含了文件类型(目录,普通文件,符号连接文件等等)的信息,也就是说操作系统在遍历目录时可以判断出符号连接,既然可以判断出符号连接当然就可以采取一些措施来防范进入过大的循环了,系统在连续遇到8个符号连接后就停止遍历,这就是为什么对目录符号连接不会进入死循环的原因了。但是对于硬连接,由于操作系统中采用的数据结构和算法限制,目前是不能防范这种死循环的。" (此解答是在网上找到的,因为无法找到文章的出处以及原作者信息,故无法标识原作者信息,如有知情者,可速与我联系,我会及时加入作者信息。谢谢)
时间: 2024-10-17 15:54:37

Linux学习笔记--ln命令(链接命令)的相关文章

【linux学习笔记三】链接命令

链接命令:ln link =============华丽的分割线============= ln又有软链接和硬链接 //硬链接特征(不建议创建硬链接) 1.拥有相同的i节点和存储block块,可以看做是同一个文件 2.可以通过i节点识别 3.不能垮分区 4.不能针对目录使用 //软连接的特征 1.类似windows快捷方式 2.软连接拥有自己的i节点和block块,但是数据块中只保存源文件的文件名和i节点号,并没有实际的文件数据 3.lrwxrwxrwx l软连接(软连接文件权限都为rwxrwx

linux学习笔记一:获取命令帮助

linux命令超多,忘记命令的使用方式.格式是很平常的事 囧.能够使用系统自带的帮助文件获取到相关的信息是学习linux的必备基本功! 下面记录几个常用的帮助命令,只为加深本菜的记忆,有不对的地方请看到这篇博文的大大加以指导,感激不尽! 简要介绍下命令,命令分为两大种类. 一种为shell自带的一些基础命令,称为内部命令.该类命令集成在shell内部,执行速度比外部命令快. 还有一种称为外部命令,该类命令是额外安装的,开机不自动加载,在需要使用时通过路径查找(printenv中的PATH项),加

linux学习笔记---一些有趣的命令

一 在说链接之前我们哈需要说明一个东西,就是inode,一个文件的名字可以有多个,但是inode里的i-number却只有一个,(inode是一个数据结构,里面存放文件的各种属性,属主,属组,权限,大小,最后访问的时间) 那怎么查看那i-number呢?直接输入ls -li就可以查看了(第一列) ? linux ls -litotal 20940224 -rw-rw-r-- 2 xujie xujie 23 Nov 25 21:17 a940219 lrwxrwxrwx 1 xujie xuji

Linux学习笔记(十)--命令学习(文件创建)

linux 文件创建命令 我们经常性的要创建一些文档来添加内容或者创建文件目录来把文件进行整理归类,所以我们有必要先把创建的命令熟悉,linux文件创建命令基本有如下这些:  mkdir    rmdir    touch    rm    cp  move  命令: 注:我们在学习使用创建命令前首先要了解的是linux里文件起名要求     1.文件名长度与windows里的差不多,最多256个字符(建议尽量短些)     2.除了 \ 符号外,别的都可以用作文件名,这方面比windows的宽

Linux学习笔记(十一)--命令学习(文件权限属性)

在进行新内容学习前,我们先把上面的内容简单的回顾下: 绝对路径:『一定由根目录 / 写起』:相对路径:『不是由 / 写起』 特殊目录有:., .., -, ~, ~account需要注意: 与目录相关的命令有:cd, mkdir, rmdir, pwd 等重要命令: rmdir 仅能删除空目录,要删除非空目录需使用『 rm -r 』命令: ls 可以检视文件的属性,尤其 -d, -a, -l 等选项特别重要! 文件的复制.删除.移动可以分别使用:cp, rm , mv等命令来操作: 检查文件的内

Linux学习笔记(十三)--命令学习(文档的压缩与打包)

现在 1.网上下载的文件档都是压缩文件. 2.减少空间要用到压缩文件. 所以我们有必要学下怎么对文件的压缩与解压. linux 文档的压缩与打包命令 在linux中支持的压缩方式好多,但最常用的压缩方式是:     tar 命令 其压缩方式也有二种(gz & bz2)     现在我们要开始学习它的使用..... 命令 tar 功能 把文件进行打包与解包 语法 tar [-zjxcvfpP] filename 扩展 -z :是否同时用gzip压缩 -j :是否同时用bzip2压缩 -x :解包或

Linux学习笔记——目录、文件管理命令及常用选项

目录管理命令: ls . cd . pwd  .mkdir. rmdir .tree 文件管理命令: touch. stat .file. rm .cp. mv .nan 目录管理 #ls  列出列表 格式ls [OPTION]... [FILE]... -h (hurman)单位转换 -a (all)显示以.开头的文件 (显示隐藏文件) .当前目录 ..表示父目录 -A  不显示当前目录. 和父目录.. ,其他全部显示 -d (diectory)显示目录属性 -i  (id)  显示i节点号

linux学习笔记:locate,find命令总结

linux中locate,find命令都是在文件系统中查找符合条件的文件,但是locate是利用数据库来搜寻数据,所以速度相对比较快. locate依赖于事先构建好的索引库,每天系统在空闲时间都会通过周期性任务自动完成索引库的更新,手动更新索引库就需要执行命令updatedb,也正是因为依赖于数据库,造成locate查询出来的结果可能会跟执行查询命令时的实际情况有出入,并且其为模糊查找. locate命令格式: locate [OPTION]... [PATTERN]... 常用选项: -b,-

Linux学习笔记——目录、文件管理命令

目录管理命令: ls . cd . pwd  .mkdir. rmdir .tree 文件管理命令: touch. stat .file. rm .cp. mv .nan 目录管理 #ls  列出列表 格式ls [OPTION]... [FILE]... -h (hurman)单位转换 -a (all)显示以.开头的文件 (显示隐藏文件) .当前目录 ..表示父目录 -A  不显示当前目录. 和父目录.. ,其他全部显示 -d (diectory)显示目录属性 -i  (id)  显示i节点号