当前位置:首页 > 资讯 > 热门博客 > 正文

【Linux探索之旅】第二部分第四课:文件操纵,鼓掌之中

发表于: 2015-08-18   作者:frogoscar   来源:转载   浏览次数:
摘要: 内容简介1、第二部分第四课:文件操纵,鼓掌之中2、第二部分第五课预告:用户和权限文件操纵,鼓掌之中既然上一课我们学习了Linux中的文件组织方式,那么现在就该是玩弄,啊不,是操纵它们的时候了。文件操作有哪些呢?一般就是显示文件内容啦,还有拷贝文件,移动文件,删除文件,等等。这一课我们还会学习链接的知识,认识硬链接和软链接的区别和原理。当然了,虽说是文件操作,但是目录操作我们也会说。因为在Linux

0?wx_fmt=jpeg

内容简介

1、第二部分第四课:文件操纵,鼓掌之中

2、第二部分第五课预告:用户和权限


文件操纵,鼓掌之中


既然上一课我们学习了Linux中的文件组织方式,那么现在就该是玩弄,啊不,是操纵它们的时候了。


文件操作有哪些呢?一般就是显示文件内容啦,还有拷贝文件,移动文件,删除文件,等等。


这一课我们还会学习链接的知识,认识硬链接和软链接的区别和原理。


当然了,虽说是文件操作,但是目录操作我们也会说。因为在Linux中,一切皆文件,目录也是文件。


这一课有很重要的基础概念,而且要学不少命令,都是很常用的。


希望大家认真学习。但也不要怕,我们的课程会秉持浅显易懂的原则,带大家领略Linux的无穷魅力。


“酒过三巡难话休,菜过五味不絮烦”,小编你要做到“话休絮烦”,不难吧?


cat命令和less命令:显示文件内容


首先,我们来学习一下如何显示文件的内容。在Linux中,有好几个命令都可以显示文件内容,不过最常用的还是:


  • cat

  • less


这两个命令只能显示文件内容,并不能对文件内容进行修改。之后我们会学习如何编辑文件的,不过那需要一整课的内容才行。


也许你会问:“为什么要学习两个命令呢?既然这两个命令都能显示文件内容,我学一个不就好了?”


事实上,这两个命令各有特色。我们分别来学习。


在开始学习今天的这些命令之前,我们来介绍一个我们将要操作的文件:syslog。


syslog这个文件位于/var/log这个目录中。还记得上一课讲的么,/var这个目录通常包含程序的数据,比如一些log(日志)文件,记录电脑中发生了什么事。


我们用cd命令来进入/var/log,再用ls命令看看里面有什么东东:


cd /var/log
ls


如下图所示:


0?wx_fmt=jpeg


可以看到好多种不同颜色的文件,记得我们上一课说的吗?


  1. 蓝色-->目录

  2. 绿色-->可执行文件

  3. 红色-->压缩文件

  4. 浅蓝色-->链接文件

  5. 灰色-->其他文件


我们看到syslog这个文件了,它是一个普通文件。不过这个文件很有用,因为它是当下你电脑里发生的几乎所有事情的日志。其实从名字我们也可以窥见一二,syslog由sys和log组成,sys是system的缩写,是英语“系统”的意思;log就是log,是英语“日志”的意思。


你可能注意到了,我们在Linux中看到的文件,很多都是没有后缀名的,如果习惯Windows的用户可能不太适应,因为Windows中一般这类文件会像这样命名:syslog.txt,syslog.log,等等。


即使Linux下很多文件没有后缀名,但这绝不影响它们的显示和编辑,和其他文件是一样的。


cat命令:一次性显示文件的所有内容


cat命令可以一次性在终端中显示文件的所有内容。


cat命令的用法也很简单,只需要在命令后加上想要显示的文件路径即可。例如:


0?wx_fmt=jpeg


syslog文件的内容很多,一页根本显示不下,所以我们的截图只能看到一页内容,其实下面还有很多。


不过,cat命令的初衷就是如此:显示文件的所有内容。不过我们也意识到了,cat命令更适合处理小文件。


cat命令没有什么参数比较值得学习。因为这个命令比较简单,如果你想要在显示的文件内容上加上行号,那么你可以加上 -n 这个参数:


cat -n syslog


less命令:分页显示文件内容


cat命令会把文件所有内容一下子显示出来,如果文件比较大,是会令人猝不及防的。


这种时候,另外的一个命令less就显得必不可少了。less命令和cat命令之间最大的区别就是:less命令会分一页一页地显示文件内容,使我们可以方便地在终端里阅读。


当然了,其实还有个命令是more。不过这个more命令和less命令的功能是类似的,而且more的缺陷就是它没有less那么强大,比如more命令虽然也是一页一页地显示文件,但是我们不能往后翻页,只能往前,一路向北。而且less命令还有更多其他功能是more没有的,究其原因呢就是more是比较老的命令了。这年头毕竟是吃青春饭的,more命令只能说:“臣妾做不到啊”...


less命令的用法与cat命令是一样的,也是在命令之后直接加文件的路径:


less syslog


显示如下:


0?wx_fmt=jpeg


less命令的好处是它会先读入文件开始的若干行,然后就停在那里,而这若干行的行数取决于终端屏幕的大小。这样的好处是我们可以有时间去渐进地读文件的内容。


所以,暂时说来,我们只读取了文件的头几行。


那怎么读取文件后面的内容呢?


让我们来学习一些有用的键盘快捷键吧。


首先来看less命令中最基本最常用的快捷键:


  1. 空格键:文件内容读取下一个终端屏幕的行数,相当于前进一个屏幕(页)。很常用的快捷键。与键盘上的PageDown(下一页)效果一样。

  2. 回车键:文件内容读取下一行,也就是前进一行。键盘上的向下键效果是一样的。

  3. d键:前进半页(半个屏幕)。

  4. b键:后退一页。与键盘上的PageUp(上一页)效果一样。

  5. y键:后退一行。键盘上的向上键效果是一样的。

  6. u键:后退半页(半个屏幕)。

  7. q键:停止读取文件,中止less命令。


这里所说的快捷键当中提到字母时,大小写是需要区分的。比如我们说到d键,那么就是小写字母d,而不是大写字母D(shift + d)。在Linux中,通常来说都区分大小写。


再来看看一些略显高级的快捷键,虽然不像上面的几个那么常用,但学习一下也真是极好的:


  1. =号:显示你在文件中的什么位置(会显示当前页面的内容是文件中第几行到第几行,整个文件所含行数,所含字符数,整个文件所含字符)。

  2. h键:显示帮助文档。按q键退出帮助文档。

  3. /(斜杠):进入搜索模式,只要在斜杠后面输入你要搜索的文字,按下回车键,就会把所有符合的结果都标识出来,要在搜索所得结果中跳转,可以按n键(跳到下一个符合项目),N键(跳到上一个符合项目)。当然了,正则表达式(Regular Expression)也是可以用在搜索内容中的。这里我们就不细说什么是正则表达式了,有兴趣可以百度看看。

  4. n键:跳到下一个符合的搜索结果。

  5. N键:跳到上一个符合的搜索结果。


如你所见,less命令很强大,可以帮助我们更好地浏览文件内容。


虽然说一开始要记着这些快捷键有点累人,但是熟练之后绝对让你事半功倍。


head命令和tail命令:显示文件的开头和结尾


额,除了cat和less,读取文件内容还有其他命令要学啊... 臣妾做不到啊...


但是这两个新命令可是很有用的,所以放下皇后的架子,来学一下吧。


这两个命令有点对立的关系,因为head命令用于显示文件的开头几行,tail命令用于显示文件结尾的几行。


head命令:显示文件开头


head在英语中是“头部”的意思,所以顾名思义,这个命令用于显示文件的开头。


默认情况下,head会显示文件的头10行:


head syslog


0?wx_fmt=jpeg


我们也可以指定显示的行数,用 -n 这个参数:


head -n 5 syslog


就会显示文件的头5行。


0?wx_fmt=jpeg


tail命令:显示文件结尾


tail在英语中是“尾部”的意思,所以顾名思义,这个命令用于显示文件的结尾。


默认情况下,tail会显示文件的尾10行。


我们也可以指定显示的行数,用 -n 这个参数:


tail -n 5 syslog


就会显示文件的尾5行。


如果你认为tail命令就这点本事,那您就大错特错啦... “大错特错不要来侮辱我的美,我不是你的style,为何偏偏缠着我”... 小编你药不能停啊~


tail命令还可以配合 -f 参数来实时追踪文件的更新:


tail -f syslog


这样,就会检查文件是否有追加内容,如果有,就显示新增内容。


0?wx_fmt=jpeg


可以用快捷键 Ctrl + c 来终止tail -f 命令。


事实上,Ctrl + c这个组合快捷键(同时按下)可以终止大部分终端的命令和正在执行的程序,有点类似Windows中的Alt + F4。


默认地,tail -f会每过1秒检查一下文件是否有新内容。你也可以指定间隔检查的秒数,用 -s 参数:


tail -f -s 4 syslog

 每隔4秒检查一次文件是否有更新


tail -f -s 2.5 syslog

每隔2.5秒检查一次文件是否有更新


touch命令和mkdir命令:创建文件和目录


长舒一口气吗?终于结束了如何显示文件的学习。


我们再来看看其他文件操作。


touch命令:创建一个空白文件


事实上,Linux没有一个命令是专门用来创建一个空白文件的。平时我们习惯用文本编辑器(Emacs,Vim,gedit,Sublime Text,nano等)来创建空白文件,并且编辑文件。


touch命令其实一开始的设计初衷是修改文件的时间戳,就是可以修改文件的创建时间或修改时间,让电脑以为文件是在那个时候被修改或创建的。touch在英语中是“触摸,触碰”的意思,就是说我碰一下那个文件,让电脑以为我刚修改过。


但是,为什么把touch命令放在这里来学习呢?因为touch命令如果后面跟着的文件名是不存在的,那么它就会新建一个。


touch的用法也比较简单,就是touch命令后面直接跟文件路径。


我们在演示touch命令的用法前,得先挪个地方,因为我们不希望在 /var/log 这个系统目录里搞七捻三。


如果你认真学习了前几课,那么你应该知道如何快速的回到我们的用户家目录,是的,就是单独一个 cd 命令,什么参数也不加。


0?wx_fmt=jpeg


使用touch命令创建新的空白文件之前,我们还得挪个地方,因为小编的家目录里面文件太多,不容易看到一会touch新生成的文件。所以我们cd到一个已存在的目录,比如我可以进入 linux_c 这个目录 (当然,作为读者的你完全可以用你自己的家目录,如果里面文件不多的话):


0?wx_fmt=jpeg


我们用ls -F 看到了目前存在于我们的 ~/linux_c 文件夹中的文件。


那么我们用touch命令来创建新文件看看:


0?wx_fmt=jpeg


看到了吗,我们用 touch new_file 创建了一个名叫 new_file 的新空白文件。


我们可以再来创建一个:


0?wx_fmt=jpeg


事实上,我们可以用touch命令同时创建多个文件:


touch new_file new_file_2


如果我所要创建的文件的名字里有空格怎么办呢?


很简单,加上双引号:


touch "new file"


mkdir:创建一个目录


如果说touch命令可以用来创建一个文件,那么mkdir命令就是用于创建一个目录的。


mkdir其实是mk和dir的缩合,mk是make的缩写,表示“创建”;dir是directory的缩写,表示“目录”。


所以,学编程过程中我们也可以边学英语,不是吗?


mkdir的用法也和touch一样,就是后面接需要创建的目录路径。


0?wx_fmt=jpeg


可以看到,我们用 mkdir new_folder 创建了一个名叫 new_folder 的新目录,这个目录里当然还没有什么东西。可以看到用 ls -F 命令后,显示的new_folder是深蓝色的,表示它是一个目录。


mkdir也可以同时创建好几个目录:


mkdir new_folder new_folder_2


如果我所要创建的目录的名字里有空格怎么办呢?


很简单,加上双引号:


mkdir "new folder"


我们还可以用 -p 参数来递归创建目录结构。


比如:


mkdir -p one/two/three


就会先创建one这个目录,在one目录里面创建two这个目录,在two里面再创建three这个目录:


0?wx_fmt=jpeg


cp命令和mv命令:拷贝文件和移动文件


接着来学习很重要的文件拷贝和移动的操作,还有文件的重命名。


cp命令:拷贝文件或目录


cp是英语copy的缩写,表示“拷贝”。所以,顾名思义,此命令用于拷贝。cp命令不仅可以拷贝单个文件,还可以拷贝多个文件,也可以拷贝目录。


如果我们要拷贝刚才创建的new_file文件怎么做呢?很简单:


cp new_file new_file_copy


第一个文件new_file是已经存在的文件,也就是被拷贝的文件;第二个文件new_file_copy是需要创建的文件,是new_file的副本,内容一模一样。


0?wx_fmt=jpeg


我们可以看到,我们用cp命令在当前目录下创建了new_file的副本new_file_copy。


复制文件到另一个目录


上面的例子中,我们是在当前目录下拷贝了文件new_file,并生成了它的副本new_file_copy。


当然,我们并不一定要在同一个目录下拷贝。我们也可以把文件拷贝到其他目录。


只需要把cp命令的第二个参数换成目录名。


cp new_file one/


上面的命令就把new_file这个文件拷贝到了one这个目录中。


0?wx_fmt=jpeg


原先我们的one目录下只有two这个子目录,现在多了一个文件new_file,它的内容和one目录的上层目录linux_c中的new_file是一样的。


如果你想拷贝文件到其他目录的同时,不要具有相同名字,那么可以这样做:


cp new_file one/new_file_copy


0?wx_fmt=jpeg


看到了吗,one这个目录里多了一个new_file_copy的文件,它的内容和one目录的上层目录linux_c中的new_file是一样的。


拷贝目录


要拷贝目录,只要在cp命令之后加上-R参数(注意是大写的R)。拷贝的时候,目录中的所有内容(子目录和文件)都会被拷贝。


之前,我们创建了一个目录one,现在我们将其拷贝为one_copy看看:


0?wx_fmt=jpeg


看到了吗?one_copy目录中的内容和one里面一模一样。


使用通配符*


*号(星号)是很常用的正则表达式的符号,被称为“通配符”,顾名思义就是百搭,可以替代任意字符串。


所以如果我们用如下命令:


cp *.txt folder


那么就会把当前目录下所有txt文件拷贝到folder这个子目录当中。


又如:


cp ha* folder


那么就会把当前目录下凡是以ha开头的文件都拷贝到folder目录中。


通配符是极为强大的,如果用得好,可以大大提高效率。是不是觉得比在Windows下用鼠标拷贝文件快捷很多呢?


mv命令:移动文件


mv是英语move的缩写,表示“移动”。mv命令有两个功能:


  1. 移动文件(或目录)

  2. 重命名文件(或目录)


移动文件


与cp命令用法类似,不同的是cp命令会复制当前文件,而mv命令则是单纯的移动,并不会制作副本。所以,cp命令就好比Windows中的复制+黏贴,而mv命令就好比Windows中的剪切+黏贴。


mv new_file_2 one


以上命令将new_filw_2这个文件移动到one这个目录,使得原先存在于linux_c这个目录的new_file_2文件不存在了。看到与cp的不同了吗,之前我们用cp命令的时候,原文件还是在的,只是把副本移动到了其他目录。


0?wx_fmt=jpeg


用mv命令来移动目录很简单,不需要额外的参数,就跟移动文件一样:


mv new_folder one


以上命令将new_folder这个目录(包括其下的子目录和文件)移动到one这个目录中。


0?wx_fmt=jpeg


当然,我们也可以使用通配符:


mv *.txt one


以上命令是将当前目录下所有txt文件移动到one这个目录中。


除了移动文件,mv命令还可以用于重命名文件。


事实上,Linux中没有一个专门的命令用于重命名文件。之所以mv命令可以重命名文件,其实还是归因于它的机制:移动文件。经过mv移动之后,原始文件变成了新的名字的文件,文件内容是不变的,这不就相当于重命名了吗?


mv new_file renamed_file


以上命令会将new_file重命名为renamed_file


0?wx_fmt=jpeg


希望大家好好练习cp和mv这两个命令,因为这两个命令真的很常用。


好了,经过了这一系列cp和mv的操作,现在我们的目录linux_c已经有点凌乱了。是时候做一些清理工作了,有请我们的rm命令。


rm命令:删除文件和目录


rm是英语remove的缩写,表示“移除”。这个命令就是用来删除东西的。


rm命令可不好惹。


为什么说它不好惹呢?因为在终端中没有回收站或垃圾箱,如果用rm命令删除了文件,那可没后悔药吃,一般比较难恢复(还是有办法可以恢复的,只是挺麻烦)。


所以rm命令用起来虽然很酸爽,但是还需谨慎啊。


rm命令可以删除一个文件,多个文件,目录,甚至你的整个Linux系统(如果你愿意的话)。


rm new_file_copy


以上命令删除当前目录下的new_file_copy这个文件。


0?wx_fmt=jpeg


我们也可以同时删除多个文件,只要用空格隔开每个文件即可。例如:


rm file1 file2 file3


-i 参数:向用户确认是否删除


保险起见,用rm命令删除文件时,可以加上 -i 参数,这样对于每一个要删除的文件,终端都会询问我们是否确定删除。i是英语inform的缩写,表示“告知,通知”。


有两种回答:


  1. y:是英语yes的缩写,表示“是”。那么回车确认后,文件就删除了。

  2. n:是英语no的缩写,表示“否”。那么回车确认后,文件不会删除。


0?wx_fmt=jpeg


上图中,我输入了n,再回车,那么rm命令就不生效,文件没有被删除。如果我输入的是y,那么文件就会被删除。


-f参数:慎用,不会询问是否删除,强制删除


如果在rm命令后加上-f参数,那么终端不会询问用户是否确定删除文件,不论如何,文件会立刻被强制删除。


f是英语force的缩写,表示“强迫”。


rm -f file


以上命令会强制删除file文件。


-r参数:递归地删除


r是英语recursive的缩写,表示“递归的”。所以使用-r参数,可以使rm命令删除目录,并且递归删除其包含的子目录和文件。


这个命令也挺危险的,用得不好可能你的子目录和文件都没了。


rm -r one


以上命令会删除one这个目录,包括其子目录和文件。


其实,也存在一个命令rmdir,看着和rm -r挺像的。但是这个命令有个局限性:只能删除空的目录。


rm命令加-r和-f参数:极为危险!


前方高能预警!


为什么说rm -rf命令极为危险呢?因为不凑巧的话,你可能毁了整个操作系统。


接下来,我们要给大家演示很可怕的一个命令,一个令人闻风哭泣的命令,一个“未成年人免入”的命令。


是的,那就是:


千万不要这样做! =>   rm -rf /* 或者 rm -rf /


请读者千万不要抱着试试看的心态,复制这条命令,然后用管理员身份运行这条命令。因为这条命令会删除你的整个Linux系统,如果你的Windows系统也挂载在Linux下,那么也会把你的Windows系统删了。所以,千万不要玩火!


这条命令可谓是Linux中头号一等危险的命令。


我们把这条命令分解开来分析:


  1. rm:rm命令,这个没问题吧,删除命令么。

  2. -r:递归删除。

  3. -f:不询问,强制删除。

  4. /:系统的根目录。后面可以不加通配符*,也可以加。


所以整个命令的意思很明确:强制递归删除根目录下所有文件!


但你要问了:“既然有这么危险的命令,那么为什么Linux的开发者允许这样的命令存在呢?”


这是因为,不一定是谁都可以运行这条命令的,比如我暂时是以oscar这个用户登录的,oscar是普通用户,是不具备执行这条命令的权限的,但如果是系统的超级用户,大管家root的话,执行这条命令是完全没问题的。


所以,这也是为什么我们说初学者尽量不要登录为root。


下一课我们会讲用户和权限,到时候会有更深理解。


最后提醒一次:不管何种情况,千万不要运行这条命令:  rm -rf /


ln命令:创建链接


虽然说ln这个命令不是特别常用,比之前的cp,mv,rm等使用频率要低,但是这个命令你迟早要用的吧,因为这个命令很有用。


ln是link的缩写,在英语中表示“链接”。所以ln命令用于在文件之间创建链接。说起链接可能你比较陌生,那么为了简单起见,我们用一个你比较熟悉的词好了:快捷方式。


虽然Linux的链接比起Windows的快捷方式要更复杂一些。但是性质是类似的。


事实上,Linux下有两种链接类型:


  1. Physical link:物理链接或硬链接。

  2. Symbolic link:符号链接或软连接。


为了区分这两种链接类型的不同,我们首先来谈一谈如Linux这样的操作系统中文件在硬盘上的存放。


好啦,不要做苦瓜脸啦,只不过讲一下操作系统的一些原理,对于我们更好地理解是很有帮助的。


文件的存储


在硬盘上存储时,大致来说(请注意我用了“大致来说”),每个文件有两部分:


  1. 文件名

  2. 文件内容


文件名的列表是储存在硬盘的其他地方的,和文件内容分开存放,这样方便Linux管理。


注意:为什么我上面要用“大致说来”呢?因为此处我们简化了描述,其实每个文件有三部分组成:


  1. 文件名

  2. 权限

  3. 文件内容


我们这里简化地将文件分为两部分:文件名和文件内容。因为我们不想把事情复杂化,我们想要理解两种链接类型的区别,暂时只要知道这些就够了。


每个文件的文件内容被分配到一个标示号码,就是inode。因此每个文件名都绑定到它的文件内容(用inode标识),原理如下图:


0?wx_fmt=jpeg


理解了这点就可以学习下面的了,暂时我们并不需要钻研太深。当然有兴趣的话,也可以百度一下inode,看一些资料,加深理解。


下面我们学习如何创建硬链接和软连接。


创建硬链接


比之软链接,硬链接的使用几率小很多。但是我们还是要学习一下,毕竟可能会用到。


硬链接的原理:使链接的两个文件共享同样的文件内容,也就是同样的inode。


所以一旦文件1和文件2之间有了硬链接,那么你修改文件1或文件2,其实修改的是相同的一块内容。只不过我们可以用两个文件名来取到文件内容。


硬链接有一个缺陷:只能创建指向文件的硬链接,不能创建指向目录的硬链接。但是软链接可以指向文件或目录。当然了,事实上,通过一些参数的修改,也可以创建指向目录的硬链接,但是比较复杂,这里不再详述。所以对于目录的链接,我们一般都是用软链接。


为了演示硬链接和软链接的操作,我们在家目录下新建一个目录吧。


cd
mkdir test
cd test


并且用touch命令创建一个新的空白文件:


touch file1


我们接着来创建一个文件file2,使之成为file1的硬链接。


要创建硬链接,直接用ln命令,不加什么参数:


ln file1 file2


以上命令创建了file1的一个硬链接file2。


硬链接原理图:


0?wx_fmt=jpeg


上图中,我们看到,file2是新生成的硬链接,它指向file1的文件内容,也就是说它们共享相同的文件内容,也就是拥有同一个inode。


我们用ls -l命令看一下,仿佛看不出什么端倪。因为目前看来,并没什么因素使我们相信这两个文件指向同一块文件内容(同一个inode)。不过从浅蓝色可以看出,这两个都是链接文件。


但是我们可以用ls -i命令查看一下(-i参数可以显示文件的inode)。我们可以看到file1和file2的inode是一样的,都是3022618。当然你的电脑上应该和我不一样,是其他数字。


如果我们用rm file2来删除file2,那么对file1没什么影响。如果我们用rm file1来删除file1,对file2也没什么影响。所以,对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上被删除。


只有既删除file1又删除file2,它们共同指向的文件内容才会消失,也就是那个inode才会被删去。


0?wx_fmt=jpeg


我们用ls -l命令查看文件信息的时候,第二列的那个2,其实是表示拥有相同inode号的文件数,不难理解,因为它们指向相同的文件内容,所以共享一个inode。


这个第二列的数字,一般来说对于普通文件,都是1,因为不同文件inode不同嘛。对于目录来说,这第二列的数字标明目录内所含文件数目。


创建软链接


其实,软链接才是真正像我们在Windows下的快捷方式的,其原理很相似。


创建硬链接是ln不带什么参数,但是要创建软链接需要加上-s参数。s是symbolic(符号的)的缩写。


因为之前我们的test目录中,我们已经删除了file2这个文件。那么我们再来创建file1的软链接吧,还是命名为file2好了。


ln -s file1 file2


以上命令创建了file1的软链接file2。


软链接原理图:


0?wx_fmt=jpeg


可以看到上图中,file2指向的不再是file1的文件内容(和硬链接不同),而是指向file1的文件名。


用ls -l命令查看一下,会发现形式和之前的硬链接不一样噢,file2的信息是这样的: file2->file1,表示file2指向file1。


而且file2前面的权限那里的第一个字母变成了l,表示link(链接)。之前硬链接的时候是没有l的,硬链接外表看起来就和普通文件类似。


我们用ls -l命令查看文件信息的时候,第二列的那个1,其实是表示拥有相同inode号的文件数,不难理解,因为file2指向file1,它们并没有指向同一块文件内容,所以它们的inode号不相同。


用ls -i看一下就知道了:


file1的inode号仍然是3022618,而file2的inode号是3022612,不一样。


打开file2查看其内容,发现其内容和file1是一样的。这不难理解,因为其实file2这个软链接只是file1的一个快捷方式,它指向的是file1,所以显示的是file1的内容。但其实它自身的inode和file1并不一样,也就是文件内容不一样。


软链接的特点:


  1. 如果我们删除了file2,没什么大不了,file1不会受到影响。但是如果删除了file1,那么file2会变成“死链接”,因为指向的文件不见了。

  2. 软链接可以指向目录,硬链接不行。


0?wx_fmt=jpeg


可以看到,一旦删除了file1,那么file2就变成了红色,是标明此软链接已经损坏。因为file2指向的文件file1已经被删除,file2不知道要指向哪里了。


硬链接和软链接,我们大体上讲完了。也许还是有点晕,不过可以参考一些课外读物,加深理解。自己动手做做实验,就会慢慢理解了。


总结


  1. cat命令用于显示文件的所有内容。不过如果文件内容太多,最好用less命令,可以分一页一页地显示文件。

  2. 我们可以用head和tail命令分别显示文件开头和结尾的若干行。特别地,使用tail -f,我们可以实时地显示文件的变化,对于随时间一直在改变的文件,例如日志(log)文件特别有用。

  3. mkdir命令用于创建目录。touch命令用于创建空文件。使用mkdir -p,我们可以递归地创建目录结构。

  4. cp命令用于拷贝文件或目录。mv命令用于移动文件或目录,也可以为文件重命名。

  5. rm命令用于删除文件或目录。记住:终端里可没有“回收站”,所以删除前要谨慎考虑。

  6. 我们使用ln命令,可以创建指向文件的链接(类似类似Windows的快捷方式,但比快捷方式复杂)。


第二部分第五课预告


今天的课就到这里,一起加油吧!

下一课我们学习:用户和权限

【Linux探索之旅】第二部分第四课:文件操纵,鼓掌之中

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
程序员(使用后端应用程序)和 Web 程序员(编写 HTML、CSS 和 JavaScript 上)之间的分水岭是长久
最近研究博客文件,稍微总结一下,以后继续补充: 道歉 由于频视出了点问题,所以临时只有这点内容
发一下牢骚和主题无关: 条记 #Shell工具 #日记件文 #编辑 #vi datelog.sh #查看件文容内 [root@loc
我发现了昨天的错误。不用将 MultiDataObject 替换成 XMLDataObject,你只需要简单地确认 MIME 类型
我发现了昨天的错误。不用将 MultiDataObject 替换成 XMLDataObject,你只需要简单地确认 MIME 类型
我发现了昨天的错误。不用将 MultiDataObject 替换成 XMLDataObject,你只需要简单地确认 MIME 类型
我发现了昨天的错误。不用将 MultiDataObject 替换成 XMLDataObject,你只需要简单地确认 MIME 类型
不久之前看了「编程之美」,里面有在windows下操纵CPU绘制正弦曲线的示例程序。思路很简单,但是需
不久之前看了「编程之美」,里面有在windows下操纵CPU绘制正弦曲线的示例程序。思路很简单,但是需
2.GC OMS安装(第二台机器部署) 1. 配置图形化 [oracle@ocm2 ~]$ xhost + access control disabled
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号