linux命令创建硬链接,Linux终端命令接口(十一)硬链接与软连接

本文介绍了Linux系统中查看和管理硬链接的方法,包括使用`ls-l`和`ls-i`命令来检查文件的硬链接数和inode号。还详细讲解了如何查找与特定inode关联的所有文件。此外,文章涵盖了Linux的挂载概念,解释了如何通过`mount`命令挂载文件系统,并列举了一些常用参数。最后,文章提到了RPM包的安装与卸载,包括`rpm`命令的不同选项及其用途。

一、进入终端 输入 使用  ls -l  即可.

示例:

$ touch file1      # 创建新文件 file1

$ touch file2      # 创建新文件 file2

$ ln file1 file3    # 为 file1 创建硬链接 file3

$ ls -ltotal 0

-rw-r--r-- 2 root root 0 01-25 16:59 file1

-rw-r--r-- 1 root root 0 01-25 17:00 file2

-rw-r--r-- 2 root root 0 01-25 16:59 file3

结果的第二列数字就是指向该文件的硬链接数. 注意, 硬链接和原文件是无法区分的. 所以 file3 是 file1 的硬链接也可以看作 file1 是 file3 的硬链接. 所以该数字大于 2 即说明该文件是硬链接.

补充说明:

1)  使用 ls -i    # 可以与 ls -l 一起使用, 即 ls -il

可以查看文件的 inode number

$ ls -iltotal 0

267105 -rw-r--r-- 2 root root 0 01-25 16:59 file1

267106 -rw-r--r-- 1 root root 0 01-25 17:00 file2

267105 -rw-r--r-- 2 root root 0 01-25 16:59 file3

这时结果的第一列就是文件的 inode number, 可以看出由于 file1 和 file3 互为硬链接, 所以他们的 inode number 相同.

2) 如何找出所有硬链接到某个文件的文件?

首先使用

ls -i

查看文件的 inode number

然后使用

find -inum

查找所有指向该 inode 的文件

例子:

$ find . -inum 267105

./file3

./file1

3) 关于文件夹

文件夹没有硬链接, 只有符号链接

l是链接,相当于windows的快捷方式

d是目录,相当于windows的文件夹

c是字符设备文件,给你说你不懂,鼠标,键盘算是

b是块设备,硬盘就是一个例子

linux下的挂载

在DOS/Windows中,C盘和D盘是并列的最顶级目录,但Linux中没有C盘D盘E盘的概念,整个文件系统就只有一个顶级的根目录(/),所有的物理磁盘都是根目录(/)下的一个子目录而已。所以,如果你要给现在的系统加快硬盘或添加分区,就先创建一个目录,然后用MOUNT和相应的格式参数把

硬盘或分区挂载到你创建的那个目录中去,成功后,访问那个目录既是访问你加上的硬盘或分区

这个比如D盘分区和linux系统中根目录/test一一绑定的过程就叫做Linux系统中的挂载。

挂载时使用mount命令

其中常用的参数有

-t 指定设备的文件系统类型,常见的有:

minix linux最早使用的文件系统

ext2 linux目前常用的文件系统

msdos MS-DOS的fat,就是fat16

vfat windows98常用的fat32

nfs 网络文件系统

iso9660 CD-ROM光盘标准文件系统

ntfs windows NT 2000的文件系统

hpfs OS/2文件系统

auto 自动检测文件系统

-o 指定挂载文件系统时的选项。有些也可用在/etc/fstab中。常用的有

codepage=XXX 代码页

iocharset=XXX 字符集

ro 以只读方式挂载

rw 以读写方式挂载

nouser 使一般用户无法挂载

user 可以让一般用户挂载设备

提醒一下,mount命令没有建立挂载点的功能,因此你应该确保执行mount命令时,挂载点已经存在。(不懂?说白了点就是你要把文件系统挂载到哪,首先要先建上个目录。这样OK?)

rpm安装

i 表示安装install v 显示到前台  h 显示安装进度

rpm -i 需要安装的包文件名

rpm -i example.rpm  #安装 example.rpm 包;

rpm -iv example.rpm  #安装 example.rpm 包并在安装过程中显示正在安装的文件信息;

rpm -ivh example.rpm  #安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度;

rpm –ivh rpm的软件包名

更高级的,请见下表:

rpm参数 参数说明

-i 安装软件

-t 测试安装,不是真的安装

-p 显示安装进度

-f 忽略任何错误

-U 升级安装

-v 检测套件是否正确安装

这些参数可以同时采用。更多的内容可以参考RPM的命令帮助。

2. 卸载:

我同样只需简单的一句话,就可以说完。执行:

rpm –e 软件名

不过要注意的是,后面使用的是软件名,而不是软件包名。例如,要安装software-1.2.3-1.i386.rpm这个包时,应执行:

rpm –ivh software-1.2.3-1.i386.rpm

而当卸载时,则应执行:

rpm –e software。

<think>首先,用户的问题是:“我想了解如何在Linux中区分链接和硬链接。请问linux区分链接硬链接方法”。用户希望了解如何区分链接和硬链接。参考站内引用:-[^1]:讨论了硬链接创建、删除、特性和应用。-[^2]:总结了链接和硬链接的区别:-删除源文件:链接失效,硬链接不会。-创建对象:链接可以为文件和目录(允许不存在),硬链接只可以为文件。-文件系统:链接可以跨文件系统,硬链接必须是同一个文件系统。-文件权限:链接可以和源文件不一样,硬链接一定和源文件一样。-[^3]:介绍了硬链接的概念,是一种特殊的文件引用,用于访问目标文件。-[^4]:描述了硬链接的特性,如源文件在硬盘中是同一个东西,删除硬链接不影响链接存在,只有所有链接删除文件才被删除。这些引用提供了区分的方法和特性。用户要求“区分链接和硬链接的方法”,所以我需要基于这些整理出如何实际操作或识别它们。关键区分方法:1.**文件类型**:-使用命令如`ls-l`查看文件列表。链接(symboliclink)在输出中显示链接文件指向的目标文件,类型以'l'开头。例如,`lrwxrwxrwx1useruser8Jun1210:00slink->sourcefile`。-硬链接在文件系统中是相同的文件,`ls-l`显示多个文件共享相同的inode号。2.**inode号**:-使用`ls-i`查看inode号。硬链接共享相同的inode号。链接有自己的inode号,区别于目标文件的inode。3.**删除源文件的影响**:-如果删除源文件,链接会失效(成为悬空链接),而硬链接继续正常工作。4.**文件和目录的创建**:-链接可以链接到文件或目录,甚至是无效的路径。-硬链接只能链接到文件,不能链接到目录(以避免循环问题)。5.**跨文件系统**:-链接可以跨越不同的文件系统。-硬链接必须在同一个文件系统上创建。6.**文件权限**:-链接的权限通常显示为'lrwxrwxrwx',但实际权限由目标文件决定。用户不能更改链接的权限;权限是基于目标的。-硬链接的权限源文件相同,因为它指向同一个数据块。在Linux中实际区分的方法:-**使用命令`ls-l`**:检查文件类型和链接指向。-**使用命令`ls-i`**:检查inode号是否相同(相同表示硬链接;不同表示链接或普通文件)。-**删除测试**:在安全环境中测试删除源文件(不推荐在关键系统)。-**使用`stat`命令**:查看详细信息,如文件类型、链接计数等。对于链接,`stat`显示链接信息;对于硬链接,显示相同的inode。根据系统级指令:-所有行内数学表达式使用$...$,但这里没有数学内容。-独立公式用$$...$$,也没有数学公式。-LaTeX语法正确,但回答是中文字符。-使用中文回答。-生成相关问题。-引用的段落末尾添加引用标识。回答结构:-用户希望逐步解决问题,结构清晰。-解释链接和硬链接的区别。-提供实际操作方法来区分它们。生成相关问题:-指令说“生成相关问题”,在回答末尾添加类似示例的问题列表。引用标识:-在引用内容的末尾添加[^n]。我的回答应包含:1.介绍链接和硬链接的基本概念。2.区分方法,使用命令解释。3.特性总结。4.添加引用标识。5.最后生成相关问题。大纲:1.**引言**:简述硬链接的定义和目的。2.**区分方法**:-使用`ls-l`命令查看类型和指向。-使用`ls-i`或`stat`检查inode。-创建和删除测试。-其他区别如创建对象、文件系统、权限。3.**总结**:关键特性差异。4.**生成相关问题**:在最后添加相关问题列表。确保中文。</think> 在 Linux 中区分链接(symbolic link)和硬链接(hard link)是关键文件管理技能。基于系统命令和文件特性,区分方法清晰明了。下面我将以结构化的方式,逐步解释区分方法,确保内容准确可靠。主要区分依据包括文件类型、inode号、删除影响、创建对象、文件系统限制和权限特性。我会结合 Linux 命令操作(如 `ls`、`stat` 和创建删除测试)进行说明。所有方法均参考站内文献总结而来,引用标识已在相关内容末尾标注。 ### 1. **基本概念回顾** - **链接(symbolic link)**:类似于 Windows 的快捷方式,是一个独立文件,包含指向目标文件的路径。删除源文件会导致链接失效[^1]。 - **硬链接(hard link)**:不是独立的文件实体,而是多个文件名共享同一个 inode 和数据块。删除源文件不影响硬链接访问,只有所有硬链接都被删除时,数据才真正被清除[^4]。 关键区别在于:链接是“引用”目标文件,而硬链接是“共享”目标文件的存储空间。 ### 2. **区分方法:基于命令操作** 以下方法使用 Linux 终端命令实际操作,可直接在系统上运行以验证链接类型。 #### (1) **使用 `ls -l` 命令检查文件类型和指向** - **方法**: - 运行 `ls -l [文件名]` 查看详细信息。 - 观察输出第一列:链接以 `l`(小写 L)开头,并显示箭头 `->` 指向目标文件;硬链接以普通文件类型(如 `-`) 开头,不显示额外指向。 - 示例: ```bash # 创建测试文件 echo "Hello" > source.txt # 创建链接和硬链接 ln -s source.txt soft_link # 链接 ln source.txt hard_link # 硬链接 # 查看区别 ls -l ``` 输出结果: ``` -rw-r--r-- 1 user group 6 Jun 18 10:00 hard_link # 硬链接,类似普通文件 lrwxrwxrwx 1 user group 10 Jun 18 10:00 soft_link -> source.txt # 链接,以'l'开头并指向目标 -rw-r--r-- 2 user group 6 Jun 18 10:00 source.txt ``` 这里,`hard_link` 显示为普通文件类型,无指向符号;`soft_link` 以 `l` 开头,并显示指向 `source.txt`,表示链接。 - **特性分析**:链接的文件类型标识(`l`) 直观显示了它是独立引用;硬链接则不区分于普通文件[^1]。 #### (2) **使用 `ls -i` 或 `stat` 命令检查 inode 号** - **方法**: - 运行 `ls -i [文件名]` 或 `stat [文件名]` 查看 inode 号(文件在文件系统中的唯一标识)。 - **硬链接**:共享相同的 inode 号作为源文件。 - **链接**:有自己的 inode 号,区别于源文件。 - 示例: ```bash ls -i ``` 输出结果: ``` 123456 hard_link # 硬链接的inode号源文件相同 123456 source.txt # 源文件的inode号 654321 soft_link # 链接有自己的inode号,不同 ``` 或使用 `stat` 命令: ```bash stat hard_link # 输出中Inode值匹配源文件 stat soft_link # 输出中Inode值不同,且显示文件类型为symbolic link ``` - **特性分析**:硬链接共享 inode,证明它们指向同一数据块;链接的独立 inode 表明它是新文件对象[^4]。 #### (3) **删除源文件测试影响** - **方法**: - 删除源文件后,检查链接是否可用。 - **链接**:删除源文件后失效(访问时显示 “No such file or directory”)。 - **硬链接**:删除源文件后仍能正常访问内容。 - 示例: ```bash rm source.txt # 删除源文件 cat soft_link # 报错: 文件不存在 cat hard_link # 输出 "Hello"(内容正常访问) ``` - **特性分析**:链接依赖目标路径,删除后成“悬空链接”;硬链接作为数据共享者不受删除影响[^2]。 ### 3. **区分方法:基于文件特性** 除了命令操作,以下特性可直接用于逻辑判断,无需额外工具。 #### (1) **创建对象差异** - **链接**:可链接到文件或目录,即使目标不存在(创建时需用 `ln -s`)。 - 示例:`ln -s /non/existent_dir link_dir`(允许创建,但访问时报错)[^2]。 - **硬链接**:仅能链接到文件(不支持目录),必须目标文件存在(创建时用 `ln`)。 - 示例:尝试 `ln /dir1 /dir2` 会报错 “Invalid argument”[^1]。 - **总结**:如果能链接到目录或无效路径,必为链接[^2]。 #### (2) **文件系统限制** - **链接**:可跨不同文件系统(如从 `/dev/sda1` 链接到 `/dev/sdb1`)。 - **硬链接**:仅在同一文件系统内创建(跨系统链接时会报错 “Invalid cross-device link”)[^2]。 - **验证**:使用 `df -h [文件路径]` 检查链接和源文件是否在同一挂载点。 #### (3) **文件权限和行为** - **链接**: - 权限通常显示为 `lrwxrwxrwx`(实际权限由目标文件决定),用户不能更改链接的权限(修改权限会影响目标)。 - 示例:`chmod 644 soft_link` 会改变目标文件的权限。 - **硬链接**: - 权限始终源文件相同(修改任一硬链接的权限会同步更新所有链接)。 - 示例:`chmod 755 hard_link` 也会改变 `source.txt` 的权限。 - **特性分析**:链接的权限固定为 `777`(在 `ls -l` 中显示),但无实际控制作用;硬链接的权限完全绑定源文件[^2]。 ### 4. **总结:核心区别要点** | 特征 | 链接(symbolic link) | 硬链接(hard link) | 区分方法 | |--------------|----------------------------------|---------------------------------|----------------------------------| | **文件类型** | 独立文件,`ls -l` 显示 `l` 和 `->` | 共享 inode,普通文件外观相同 | `ls -l` 第一列检查 | | **inode 号** | 自有 inode,不同于源文件 | 源文件共享相同 inode | `ls -i` 或 `stat` 验证 | | **删除源文件** | 失效(悬空链接) | 仍可正常访问 | 删除测试 | | **创建对象** | 文件和目录(允许无效路径) | 仅文件(不支持目录) | 尝试链接目录判断 | | **文件系统** | 可跨文件系统 | 必须是同一文件系统 | `df` 检查挂载点 | | **文件权限** | 权限固定 `lrwxrwxrwx`,实际由目标决定 | 权限源文件完全一致 | 修改权限观察影响 | 通过以上方法,您可以可靠地区分链接和硬链接链接适用于跨系统引用或目录操作;硬链接用于节省空间和提高文件访问效率[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值