`

Linux命令——ln详解【转】

阅读更多
引用
本文原来记录在笔记软件中,可是出处已经找不到了

ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件。
  当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln –s /bin/less /usr/local/bin/less
  -s 是代号(symbolic)的意思。
  这里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接和硬链接两种,软链接就是ln –s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
  如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls –l命令去察看,就可以看到显示的link的路径了。
  指令详细说明
  指令名称 : ln
  使用权限 : 所有使用者
  使用方式 : ln [options] source dist,其中 option 的格式为 :
  [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
  [--help] [--version] [--]
  说明 : Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
  ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。
  不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
  -f : 链结时先将与 dist 同档名的档案删除
  -d : 允许系统管理者硬链结自己的目录
  -i : 在删除与 dist 同档名的档案时先进行询问
  -n : 在进行软连结时,将 dist 视为一般的档案
  -s : 进行软链结(symbolic link)
  -v : 在连结之前显示其档名
  -b : 将在链结时会被覆写或删除的档案进行备份
  -S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
  -V METHOD : 指定备份的方式
  --help : 显示辅助说明
  --version : 显示版本
  范例 :
  将档案 yy 产生一个 symbolic link : zz
  ln -s yy zz
  将档案 yy 产生一个 hard link : zz
  ln yy xx

LINUX 硬链接与软链接的区别
对于一个文件来说,有唯一的索引接点(inode)与之对应,而对于一个索引接点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件。注意在Linux下是一切皆文件的啊,文件夹、新加的硬盘 ...都可以看着文件来处理的啊。
    连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。符号连接相当于Windows 下的快捷方式。
*************************** 不可以对  文件夹/目录  建立硬连接的,我们通常用的还是软连接比较多。   
   
eg:
    ln -s source dist        # 建立软连接
    ln source dist            # 建立硬连接

    它们到底有什么区别呢?上次也好好的看了,好象同文件系统的结构有一定的关系,没怎么太详细的研究下次看明白了再加上。
----------------------
    软链接实际上只是一段文字,里面包含着它所指向的文件的名字,系统看到软链接后自动跳到对应的文件位置处进行处理;相反,硬链接为文件开设一个新的目录项,硬链接与文件原有的名字是平权的,在Linux看来它们是等价的。由于这个原因,硬链接不能连接两个不同文件系统上的文件。

软连接与windows下的快捷方式类似
至于硬连接,举个例子说吧,你把dir1/file1硬连接到dir2/file2, 就是在dir2下建立一个dir1/file1的镜像文件file2,它与file1是占用一样大的空间的,并且改动两者中的一个,另一个也会发生同样的改动.
软连接和硬连接可以这样理解:
硬连接就像一个文件有多个文件名,
软连接就是产生一个新文件(这个文件内容,实际上就是记当要链接原文件路径的信息),这个文件指向另一个文件的位置,
硬连接必须在同一文件系统中,而软连接可以跨文件系统
硬连接 :源文件名和链接文件名都指向相同的物理地址,目录不能够有硬连接,文件在磁盘中只有一个复制,可以节省硬盘空间,由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此可以防止不必要的误删除软连接(符号连接)用ln -s命令创建文件的符号连接,符号连接是linux特殊文件的一种,作为一个文件,它的资料是它所连接的文件的路径名,类似于硬件方式,******可以删除原始文件 而连接文件仍然存在。********

本文试图清晰彻底的解释软链接和硬链接文件的区别
一 链接文件
    链接有两种方式,软链接和硬链接。
  1 软链接文件
  软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
    **********链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。
  用ln -s 命令可以生成一个软连接,如下:
  [root@linux236 test]# ln -s  source_file softlink_file
  在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。
  2 硬链接文件
  info ln 命令告诉您,硬链接是已存在文件的另一个名字(A "hard link" is another name for an existing file),这多少有些令人困惑。硬连接的命令是
  ln -d existfile newfile
  硬链接文件有两个限制
  1)、不允许给目录创建硬链接;
  2)、只有在同一文件系统中的文件之间才能创建硬链接。
  ***********对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。
    ***********这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。
二  两者之间的区别
    硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Number)。
    在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。*******硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要
    文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个
    连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。
    软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
三  个人体会
    软链接是另一个文件,作用可以理解为一个指针,******作用在这个文件上的操作除了删除都直接转向实际指向文件,由于是一个真实的文件所以占用磁盘空间
    硬链接可以认为不是一个文件,它只是实际文件的一个别名,它的作用是防止真实文件被误操作,给一个文件建立硬链接后,他们互为别名,删除其中任意一个,
    这样用RM命令只会删除该别名,实际文件并不会被删除。只有链接数为0时,才会删除原始文件。

分享到:
评论

相关推荐

    实验三Linux——基本命令.docx

    Linux 基本命令详解 本文将对 Linux 基本命令进行详细的介绍和解释,旨在帮助读者初步了解 Linux 操作系统的基本使用和命令操作。 一、更改主机名和基本命令的使用 在 Linux 中,pwd 命令用于查看当前所在的目录...

    Linux基本命令VERY GOOD

    【Linux基本命令详解】 在计算机领域,Linux是一个广泛使用的开源操作系统,它的命令行接口,即shell,是用户与操作系统内核交互的主要方式。shell扮演着一个桥梁的角色,它接收用户的输入,解析命令,并将这些命令...

    嵌入式学习指引--Linux下60个系统命令详解

    ### 嵌入式学习指引——Linux下60个系统命令详解 #### 一、引言 在Linux系统中,掌握基本的命令行操作对于高效地进行开发、管理和维护至关重要。本文将详细介绍Linux下的六个重要类别的命令,涵盖安装与登录、文件...

    在hqyj的学习笔记——关于Linux的基础命令

    【Linux基础命令详解】 在Linux操作系统中,命令行是日常操作的核心部分,尤其对于初学者而言,掌握基础命令是入门的关键。以下是一些常见的Linux基础命令及其用途: 1. `whoami`:此命令用于显示当前用户的用户名...

    linux常用命令.pdf

    ### Linux常用命令详解 #### 一、查看命令位置与Python环境 在Linux环境中,了解当前使用的命令路径对于环境切换尤其重要。以下两个命令可以帮助我们快速定位到特定命令的位置。 1. **`which`命令** - **用途**:...

    Linux基础课件-网络管理命令-netstat命令.pptx

    **Linux网络管理命令——netstat命令详解** 在Linux操作系统中,`netstat`是一个非常重要的网络管理工具,它能够提供关于TCP/IP网络连接、路由表、接口统计等丰富的信息。理解并熟练掌握`netstat`命令,对于系统...

    交叉编译器的安装详解

    ln -s /usr/local/arm/2.95.3 arm-linux ``` - 查看创建的软链接是否正确,可以使用`ls -l`命令。 3. **修改环境变量** - 打开`/etc/profile`文件,添加交叉编译器的路径到`PATH`环境变量中。命令如下: ```...

    Linux精简易懂的教程

    ### Linux精简易懂的教程——基础命令详解 #### 一、引言 在Linux系统中,掌握基础命令是非常重要的一步。这些命令可以帮助我们更高效地管理文件和目录,执行日常任务,以及解决各种问题。本篇文章将详细介绍一些...

    gdb——objdump.txt

    - `list n`或`ln`命令显示从当前行开始的n行代码。 3. **运行和控制流程** - `run`或`r`命令运行程序,直到遇到断点或者程序正常结束。 - `break`或`b`命令设置断点,例如`b main`在`main`函数处设置断点。 - `...

    linux-cmd.zh

    ### Linux系统编程——基本命令详解 #### 前言 在深入探讨Linux系统的基本命令之前,我们先简要介绍学习Linux的目的以及应有的学习态度和方法。 - **学习目标**:成为一名合格的Linux/Unix系统程序员。 - **学习...

    Linux经典教材

    ### Linux经典教材——文件安全与权限详解 #### 一、文件安全与权限概述 在Linux系统中,确保数据的安全性和完整性至关重要。为了实现这一目标,Linux提供了强大的文件和目录权限管理机制。本章节将深入探讨文件和...

    linux实验4.doc

    【实验报告——Linux 文件系统与目录管理】 实验目标: 1. 掌握在Linux系统中进行目录和文件管理的基本操作命令。 2. 学习如何修改文件的权限设置。 3. 了解并实践文件链接的不同类型及其应用。 实验内容与步骤...

    嵌入式Linux系统开发笔记--赖永诚

    ### 嵌入式Linux系统开发笔记核心知识点详解 #### 一、嵌入式Linux系统概述 嵌入式Linux系统是指专门为嵌入式设备定制的Linux操作系统。它由Bootloader(引导加载程序)、Linux内核以及根文件系统三大部分组成。 ...

    linux自启动设置方法

    ### Linux自启动设置详解 #### 一、Linux的启动机制概览 Linux系统的启动机制非常复杂,涉及到多个关键步骤和组件。了解这些机制对于管理服务器和优化系统性能至关重要。 **1.1 Init作为核心进程** - **Init简介...

    Linux基础入门.pdf

    #### 一、初识Linux——PC上Linux系统常规目录结构 在深入了解Linux之前,首先需要熟悉其基本的目录结构。这不仅有助于理解Linux系统的组织方式,还能帮助用户更加高效地管理和操作文件。 ##### 根目录(/) - **...

    Linux基础入门(已阅).pdf

    #### 一、初识Linux——PC上Linux系统常规目录结构 在初识Linux的过程中,理解其目录结构对于更好地管理和使用Linux系统至关重要。以下是对Linux常见目录及其功能的详细介绍: 1. **根目录(/)**:这是Linux文件...

    制作DOM盘上的Linux 系统

    - **分区操作**:使用`fdisk`命令将DOM盘划分为两个分区——/dev/hdc1 和 /dev/hdc2。其中,/dev/hdc1 分配10MB用于boot分区,存储内核文件;/dev/hdc2 分配剩余空间作为根分区,用于安装Linux系统其他组件。 - **...

    LINUX文件管理

    ### LINUX文件管理详解 #### 一、inode的概念与作用 在深入探讨Linux文件管理系统之前,我们需要先理解一个核心概念——inode。inode(索引节点)是Linux文件系统中用于存储文件元信息的一种特殊数据结构。它的...

Global site tag (gtag.js) - Google Analytics