从零开始的linux 第十三章


(小编推门而入)同学们早~~又是一个愉快的一天~~

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMS41MWN0by5jb20vd3lmczAyL00wMC9BNy8yNi93S2lvTDFuaHl0UFJENjNiQUFBbG4zZS1pX0k0NjIuanBn" title="-5759326e8704bfea.jpg" width="220" height="268" border="0" hspace="0" vspace="0" style="width:220px;height:268px;" alt="wKioL1nhytPRD63bAAAln3e-i_I462.jpg" referrerpolicy="no-referrer">

(↑同学们看到小编后的眼神)

唉??同学们怎么了...干嘛用这种眼神看着小编..

路人乙:“早你个头啊!都快晚上了!!你迟到了一天!!迟到了一天!!”

哎呀~~抱歉啦~~床太暖和了,而世界太冷(想着裤兜里空荡荡的钱包,忍住不让泪水流下来),这个物欲横流的社会,只有被子能给小编一丝温暖~(吐槽:突变的画风)

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zNC41MWN0by5jb20vd3lmczAyL00wMS9BNy8yNy93S2lvTDFuaDBTUHpXdEhIQUFCR01PMXBXXzQ5MzMuanBn" title="-3c450a0d765ae52.jpg" width="220" height="161" border="0" hspace="0" vspace="0" style="width:220px;height:161px;" alt="wKioL1nh0SPzWtHHAABGMO1pW_4933.jpg" referrerpolicy="no-referrer">

(↑路人乙):“阿啦~~有我们陪伴的假期不开心吗?”

(一脸嫌弃)你表情再邪恶一点小编可能就开心了....

路人甲:“唉?小编...不开心吗...”

没有呀,小编很开心~谢谢路人甲让同学们陪老师过节~~

路人乙:“喂!!这待遇可不一样啊!老师不是应该一视同仁的嘛!!”

好啦,不开玩笑啦~回到座位上,小编要讲课咯~~愉快的假期已经结束一个星期了,小编前面讲的内容,同学们有没有忘记呢?嗯,忘记吧,忘记了小编就可以解放不用再讲了(吐槽:你真的是我们的老师吗!?)


开玩笑的开玩笑的~~小编上一章讲了用使字体改变颜色date系统时钟命令,clock,hwclock硬件时钟命令,cal日历这些命令的详细用法。虽然小编每章都会说命令比较杂乱,但实际上也不乱嘛~~不过这次呢,小编还是要说的~这章内容,可能会比较乱哦~~


同学们在第三章的时候就已经知道了linux的文件系统,并知道了文件类型,和linux中必须存在的目录(FHS),在第二章小编在最后提到了linux的哲学思想,以及给同学们讲了file命令来查看文件类型等等一些文件系统的相关理论,那么,对于一些简单的操作如何去查看一个文件的内容,如何去创建一个普通文件以及如何去创建一个目录小编至今还没有告诉大家~~那么这章,小编就来详细介绍一下如何去创建文件,目录以及查看一个文件内容。


小编之前讲了nano编辑器,小编没给大家介绍查看命令之前,相信同学们查看文件时用的是这个编辑器来查看,而且还可以修改。虽然有修改功能,但若只是用来查看文件内容,是很不方便的~所以,小编给大家介绍一下常用工具:

cat:文本查看工具

小编现在创建一个普通文件,并输入一些内容,用 cat 来查看一下内容:

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMS41MWN0by5jb20vd3lmczAyL00wMC9BNy8yNy93S2lvTDFuaDFoYXgwLUsxQUFBS3pTT0F0R1UwNzUucG5n" title="QQ截图20171014172908.png" width="550" height="130" border="0" hspace="0" vspace="0" style="width:550px;height:130px;" alt="wKioL1nh1hax0-K1AAAKzSOAtGU075.png" referrerpolicy="no-referrer">

cat命令后面直接输入要查看的文件,即可查看文件中的内容,注意哦~若查看的文件不在当前路径下,要写上路径。

另外,这个命令有哪些选项呢?小编现在查看一下 man文档,同学们要养成遇到命令要先查看man文档~~

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMi41MWN0by5jb20vd3lmczAyL00wMS8wOC83Mi93S2lvbTFuaDJlYmpnQmFUQUFBcTBRTThFdncwMDQucG5n" title="QQ截图20171014173352.png" width="550" height="239" border="0" hspace="0" vspace="0" style="width:550px;height:239px;" alt="wKiom1nh2ebjgBaTAAAq0QM8Evw004.png" referrerpolicy="no-referrer">

cat命令虽然简单,但其选项也不少,小编这里就给同学们介绍一下经常用到的~~其他的选项,感兴趣的话可以自己试试咯~~


-n:对所有输出行进行编号(显示每一行的行号)

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMS41MWN0by5jb20vd3lmczAyL00wMi9BNy8yNy93S2lvTDFuaDJOZlFxbmtlQUFBTGpsbFViTGM4OTkucG5n" title="QQ截图20171014174018.png" width="550" height="132" border="0" hspace="0" vspace="0" style="width:550px;height:132px;" alt="wKioL1nh2NfQqnkeAAALjllUbLc899.png" referrerpolicy="no-referrer">

cat -n 加上指定的文件 可以是显示的内容加上行号,嗯..这个到底有什么用呢??23333 用到的时候就知道啦~~


-E:每行结束时显示$符号

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMi41MWN0by5jb20vd3lmczAyL00wMC8wOC83Mi93S2lvbTFuaDNObVFVZGRjQUFBTURGdkxYM3M1MTgucG5n" title="QQ截图20171014174628.png" width="550" height="103" border="0" hspace="0" vspace="0" style="width:550px;height:103px;" alt="wKiom1nh3NmQUddcAAAMDFvLX3s518.png" referrerpolicy="no-referrer">

该选项会在每行结束的时候加上$,表示这一行已经结束(注意咯,文件内容小编修改过哦~不要在意为什么内容会不一样了),文件内容少的话确实用不到,但是,若是一个内容多的文件:

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zNS41MWN0by5jb20vd3lmczAyL00wMS9BNy8yNy93S2lvTDFuaDJxU1FGMy1KQUFDUThyVVV4OGsyNzkucG5n" title="QQ截图20171014174836.png" width="550" height="169" border="0" hspace="0" vspace="0" style="width:550px;height:169px;" alt="wKioL1nh2qSQF3-JAACQ8rUUx8k279.png" referrerpolicy="no-referrer">

要区分到底哪里才是一行的结尾就有点麻烦咯~~所以这时候这个命令还是有用处的~~


cat命令基本只是用来查看一个文件的内容,不会做什么复杂的操作,所以基本上选项需要记得并不多,如-E选项,在man文档中提到了一个 -A 选项,可以替代 -vET 三个选项

-A:相当于-vET三个选项(-v:显示文件中的TAB符号,-T:显示制表符^I)

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMy41MWN0by5jb20vd3lmczAyL00wMS8wOC83My93S2lvbTFuaDNyUHctYmtjQUFBTU11OWttYncyMTIucG5n" title="QQ截图20171014175419.png" width="550" height="109" border="0" hspace="0" vspace="0" style="width:550px;height:109px;" alt="wKiom1nh3rPw-bkcAAAMMu9kmbw212.png" referrerpolicy="no-referrer">

呼~~还不如不加~~好像更乱惹~~


因为命令过于简单,所以对于 cat 查看文件内容的命令,小编就介绍这么多~~还有一些同样是查看文件内容的命令,某些场景要比 cat 命令实用很多很多~~那些命令等同学们熟练了 cat 命令小编再给大家介绍吧~~

路人丙:“小编大人,为什么我用cat命令来查看内容,却出现错误了呢?”

纳尼!?你把执行的命令和错误让小编看一下.....

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zNS41MWN0by5jb20vd3lmczAyL00wMi8wOC83NC93S2lvbTFuaDd4eWdFZUpMQUFBS2x4SFhzNVUzMzgucG5n" title="QQ截图20171014190159.png" width="550" height="78" border="0" hspace="0" vspace="0" style="width:550px;height:78px;" alt="wKiom1nh7xygEeJLAAAKlxHXs5U338.png" referrerpolicy="no-referrer">

(↑路人丙的操作)

(↓小编看了路人丙的操作后的表情)

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMy41MWN0by5jb20vd3lmczAyL00wMC8wOC83NC93S2lvbTFuaDhHemdTSl9GQUFCQzBmOVNmOFk2NjkuanBn" title="1d6904b3882c4eb7.jpg" width="200" height="200" border="0" hspace="0" vspace="0" style="width:200px;height:200px;" alt="wKiom1nh8GzgSJ_FAABC0f9Sf8Y669.jpg" referrerpolicy="no-referrer">

小编怎么会有这样的学生...忍住...忍住..一定要忍住..保持微笑,注意形象...650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMS41MWN0by5jb20vd3lmczAyL00wMS9BNy8yOC93S2lvTDFuaDd1Q3pYWUdwQUFBSnRaeXhwQVk3OTUuanBn" title="3362b5020d8a7665.jpg" width="40" height="44" border="0" hspace="0" vspace="0" style="width:40px;height:44px;" alt="wKioL1nh7uCzXYGpAAAJtZyxpAY795.jpg" referrerpolicy="no-referrer">

路人甲追问:“小编大人,我机器是不是坏掉了~”

不行...小编忍不住了...

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMi41MWN0by5jb20vd3lmczAyL00wMi8wOC83NC93S2lvbTFuaDg2bnlpUUR4QUFBMUJqX1pOVmsyMjAuanBn" title="2c04e53667c0292d1.jpg" width="150" height="129" border="0" hspace="0" vspace="0" style="width:150px;height:129px;" alt="wKiom1nh86nyiQDxAAA1Bj_ZNVk220.jpg" referrerpolicy="no-referrer">

注意看错误提示!!错误提示!!!这是一个目录!cat 命令是用来看普通文件的!


好啦~~对于cat命令,小编就介绍到这里。大家要注意不要犯路人丙一样的错误~~


查看普通文件大家知道如何去查看了,那么,如何去创建普通文件呢?

touch:创建一个空文件

那么,这个命令要如何使用呢?小编依然去查看一下man文档:

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMi41MWN0by5jb20vd3lmczAyL00wMi8wOC83NC93S2lvbTFuaDlfM1RpVVVwQUFCQmZpZHE4ZG8zNzYucG5n" title="QQ截图20171014194203.png" width="550" height="301" border="0" hspace="0" vspace="0" style="width:550px;height:301px;" alt="wKiom1nh9_3TiUUpAABBfidq8do376.png" referrerpolicy="no-referrer">

从man文档中,可以看出touch命令的用法:

touch [OPTION]... FILE..

OPTION表示的是这个命令的选项,省略号表示选项可以同时加多个,file是后面指定要创建文件的文件名字,如,小编在/app/目录下创建一个文件:

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMy41MWN0by5jb20vd3lmczAyL00wMC9BNy8yOC93S2lvTDFuaDlxSFQ3MlJyQUFBSjJyNllLSms5MDIucG5n" title="QQ截图20171014194718.png" width="550" height="110" border="0" hspace="0" vspace="0" style="width:550px;height:110px;" alt="wKioL1nh9qHT72RrAAAJ2r6YKJk902.png" referrerpolicy="no-referrer">

小编用 touch 命令创建了一个名字叫做 text 的文件,之后用ls 命令来确认这个文件是否存在,存在,说明创建成功~~

touch命令的选项,涉及到了“时间戳”的概念,什么是时间戳呢?小编这里就给同学们简单解释一下:

时间戳:

文件有两类数据:数据和元数据

元数据:metadata,文件的所有属性

数据:data,文件内容

(↑对于两者的理解,可理解为,只要与文件的内容无关的都是元数据,即文件属性,包括权 限、大小等信息)

时间戳状态:

记录了文件:最后一次访问时间.access time(ctime)

最后一次更改.moduft time(mtime)

最近一次改动.change time(ctime)

↑其中"最后一次更改"指的是文件中的数据更改,即文件内容发生了变化;"最近一次改动"指的是文件的元数据改变(如权限,大小等发生变化)

对于上面的介绍,不难发现,只要文件的数据发生了变化,那么元数据就必然会发生变化,因为文件的"元数据"中也包含了文件的大小,而更改文件中的数据,文件大小必然会发生变化。


那么,文件的时间戳要如何来查看呢?

stat:显示文件或文件系统的状态

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMy41MWN0by5jb20vd3lmczAyL00wMS8wOC83NS93S2lvbTFuaF80ZlFhbE1LQUFBeWtueTRmRjgwMjAucG5n" title="QQ截图20171014201426.png" width="550" height="159" border="0" hspace="0" vspace="0" style="width:550px;height:159px;" alt="wKiom1nh_4fQalMKAAAykny4fF8020.png" referrerpolicy="no-referrer">

该命令是显示文件或文件系统的所有状态,所以不仅仅是显示时间戳,包括文件的权限,Inode号以及大小等等多种信息。最下面的 Access即为最后一次访问时间,Modify为最后一次更改时间,Change为最后一次改动时间。

当我们用 nano编辑器来修改文件内容时:

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zNC41MWN0by5jb20vd3lmczAyL00wMC9BNy8yOS93S2lvTDFuaF9hdmlZcTY3QUFBSG1IVTh4NEU1NzIucG5n" title="QQ截图20171014201803.png" width="550" height="109" border="0" hspace="0" vspace="0" style="width:550px;height:109px;" alt="wKioL1nh_aviYq67AAAHmHU8x4E572.png" referrerpolicy="no-referrer">

小编向该文件中随便添加一些内容,再来查看一下该文件的时间戳:

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMS41MWN0by5jb20vd3lmczAyL00wMS8wOC83NS93S2lvbTFuaUFKLVE2YnpuQUFBVF9YeUhKemM5MzEucG5n" title="QQ截图20171014201906.png" width="550" height="105" border="0" hspace="0" vspace="0" style="width:550px;height:105px;" alt="wKiom1niAJ-Q6bznAAAT_XyHJzc931.png" referrerpolicy="no-referrer">

可以看到,Atime(访问时间),Mtime(更改时间),Ctime(改动时间) 都发生了变化,而Atime的变化时因为小编用 nano编辑器打开了它,mtime和ctime是因为数据和大小发生了变化,当小编保存的那一刻,该时间才会改变,所以,Atime和其他两个时间才会不一致


时间戳的改变,不仅仅是修改文件或者访问文件时才会改变,touch命令本身就有修改时间戳的功能,实际上,touch命令后面指定的文件,不仅仅是不存在的文件,它可以是已经存在的文件。

若文件存在,用touch命令可以修改该文件的时间戳,比如:

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMi41MWN0by5jb20vd3lmczAyL00wMC9BNy8yOS93S2lvTDFuaF84Yno0cmdGQUFBeE4tVmdvY2czMzUucG5n" title="QQ截图20171014202703.png" width="550" height="185" border="0" hspace="0" vspace="0" style="width:550px;height:185px;" alt="wKioL1nh_8bz4rgFAAAxN-Vgocg335.png" referrerpolicy="no-referrer">

可以发现,小编 touch 一个已存在的文件后,该文件的时间戳全部发生了改变。若我们希望的是仅仅改变某一条时间,而不是改变所有的时间。touch还有一些针对修改时间戳的命令:

-a:仅修改文件的Atime(访问时间)

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zNS41MWN0by5jb20vd3lmczAyL00wMS8wOC83NS93S2lvbTFuaUEyV3d6LUxCQUFBcUd4RjdyejgwODIucG5n" title="QQ截图20171014203021.png" width="550" height="199" border="0" hspace="0" vspace="0" style="width:550px;height:199px;" alt="wKiom1niA2Wwz-LBAAAqGxF7rz8082.png" referrerpolicy="no-referrer">

啊咧??Ctime怎么也改变了呢??哎呀~~不要在意这些细节啦~~man文档中说的是修改访问时间,很明显,该命令也把文件的Ctime也改变了,所以呢~~man文档的话也是不能全信~~信谁呢??哼哼~~当然是小编啦~~那,小编上面对于 -a 的解释就要改改了:

-a:修改文件的Atime和Ctime


-m:仅修改文件的Mtime

这个会不会出错呢?

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zMi41MWN0by5jb20vd3lmczAyL00wMS8wOC83NS93S2lvbTFuaUJpTFRsVWlpQUFBeTdaeGM3Tzg2NDMucG5n" title="QQ截图20171014203908.png" width="550" height="180" border="0" hspace="0" vspace="0" style="width:550px;height:180px;" alt="wKiom1niBiLTlUiiAAAy7Zxc7O8643.png" referrerpolicy="no-referrer">

哇~~又出错惹~~man文档是真的不能全信哦~~明明是修改Mtime,却连同把Ctime也改了,还是相信小编可靠,man文档也不可靠惹~~所以:

-m:修改文件的Mtime和Ctime

什么?你问小编上一张图和这一张图中间怎么相隔这么长时间?哼哼,中间的时间,小编去给其他同学讲题咯~~所以耽误了一点点时间啦~~那么,下一个选项:

-t:将文件的Atime和Mtime修改成指定的时间

其格式为 "年月日时分.秒",即:-t"年月日时分.秒"

小编这里指定的是:201710142000.00

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cHM6Ly9zNS41MWN0by5jb20vd3lmczAyL00wMC8wOC83NS93S2lvbTFuaUNBNkJpMEZ5QUFBcllXSU5rVUUyMzcucG5n" title="QQ截图20171014204750.png" width="550" height="193" border="0" hspace="0" vspace="0" style="width:550px;height:193px;" alt="wKiom1niCA6Bi0FyAAArYWINkUE237.png" referrerpolicy="no-referrer">

哼哼,我们现在可以随意设置访问时间和更改时间啦~~可以为所欲为啦~~不过,这有什么用呢??比如,你把一些相对重要的文件的时间戳设置成未来时间~~有很多可能会出问题哦~~~


好啦~~由于时间关系~小编这次就到这里吧~唉。。还有好多好多东西没给同学们讲,那么期待下次小编给大家讲吧~~

嗯,时间不早了~又该睡觉惹~~(吐槽:你不是刚睡醒吗!)



The END

本文出自 “13125850” 博客,请务必保留此出处http://13135850.blog.51cto.com/13125850/1972411

更多相关文章

  1. 获取Linux 内存页大小的命令
  2. linux中的nm命令简介
  3. Bash脚本删除目录中多个文件名末尾的'x'字符数量?
  4. Bash脚本不删除给定目录中的文件
  5. 文本文件到字符串数组?
  6. 为什么“可执行文件”操作系统是独立的?
  7. [Linux学习]关机命令
  8. 实体机与虚拟机linux文件互拷贝
  9. 如何使用for-each循环在bash中迭代文件路径?

随机推荐

  1. [Android]Android achartengine统计图
  2. SDK Platform Tools component is missin
  3. Android四大布局
  4. android视频播放库
  5. XML Drawable
  6. eclipse中查看Android SDK源代码
  7. Android调用手机拍照以及从相册选择照片
  8. Android面试题集(陆续更新中)
  9. [zz]Android TableLayout
  10. Andorid学习笔记(ADT)-常见的UI布局