1. 程式人生 > >從零開始的linux 第十三章

從零開始的linux 第十三章

cat touch stat查看文件屬性 更改時間戳

從零開始的linux 第十三章


(小編推門而入)同學們早~~又是一個愉快的一天~~

技術分享

(↑同學們看到小編後的眼神)

唉??同學們怎麽了...幹嘛用這種眼神看著小編..

路人乙:“早你個頭啊!都快晚上了!!你遲到了一天!!遲到了一天!!”

哎呀~~抱歉啦~~床太暖和了,而世界太冷(想著褲兜裏空蕩蕩的錢包,忍住不讓淚水流下來),這個物欲橫流的社會,只有被子能給小編一絲溫暖~(吐槽:突變的畫風)

技術分享

(↑路人乙):“阿啦~~有我們陪伴的假期不開心嗎?”

(一臉嫌棄)你表情再邪惡一點小編可能就開心了....

路人甲:“唉?小編...不開心嗎...”

沒有呀,小編很開心~謝謝路人甲讓同學們陪老師過節~~

路人乙:“餵!!這待遇可不一樣啊!老師不是應該一視同仁的嘛!!”

好啦,不開玩笑啦~回到座位上,小編要講課咯~~愉快的假期已經結束一個星期了,小編前面講的內容,同學們有沒有忘記呢?嗯,忘記吧,忘記了小編就可以解放不用再講了(吐槽:你真的是我們的老師嗎!?)


開玩笑的開玩笑的~~小編上一章講了用使字體改變顏色date系統時鐘命令,clock,hwclock硬件時鐘命令,cal日歷這些命令的詳細用法。雖然小編每章都會說命令比較雜亂,但實際上也不亂嘛~~不過這次呢,小編還是要說的~這章內容,可能會比較亂哦~~


同學們在第三章的時候就已經知道了linux的文件系統,並知道了文件類型,和linux中必須存在的目錄(FHS),在第二章小編在最後提到了linux的哲學思想,以及給同學們講了file命令來查看文件類型等等一些文件系統的相關理論,那麽,對於一些簡單的操作如何去查看一個文件的內容,如何去創建一個普通文件以及如何去創建一個目錄小編至今還沒有告訴大家~~那麽這章,小編就來詳細介紹一下如何去創建文件,目錄以及查看一個文件內容。


小編之前講了nano編輯器,小編沒給大家介紹查看命令之前,相信同學們查看文件時用的是這個編輯器來查看,而且還可以修改。雖然有修改功能,但若只是用來查看文件內容,是很不方便的~所以,小編給大家介紹一下常用工具:

cat:文本查看工具

小編現在創建一個普通文件,並輸入一些內容,用 cat 來查看一下內容:

技術分享

cat 命令後面直接輸入要查看的文件,即可查看文件中的內容,註意哦~若查看的文件不在當前路徑下,要寫上路徑。

另外,這個命令有哪些選項呢?小編現在查看一下 man文檔,同學們要養成遇到命令要先查看man文檔~~

技術分享

cat 命令雖然簡單,但其選項也不少,小編這裏就給同學們介紹一下經常用到的~~其他的選項,感興趣的話可以自己試試咯~~


-n:對所有輸出行進行編號(顯示每一行的行號)

技術分享

cat -n 加上指定的文件 可以是顯示的內容加上行號,嗯..這個到底有什麽用呢??23333 用到的時候就知道啦~~


-E:每行結束時顯示$符號

技術分享

該選項會在每行結束的時候加上$,表示這一行已經結束(註意咯,文件內容小編修改過哦~不要在意為什麽內容會不一樣了),文件內容少的話確實用不到,但是,若是一個內容多的文件:

技術分享

要區分到底哪裏才是一行的結尾就有點麻煩咯~~所以這時候這個命令還是有用處的~~


cat命令基本只是用來查看一個文件的內容,不會做什麽復雜的操作,所以基本上選項需要記得並不多,如-E選項,在man文檔中提到了一個 -A 選項,可以替代 -vET 三個選項

-A:相當於-vET三個選項(-v:顯示文件中的TAB符號,-T:顯示制表符^I)

技術分享

呼~~還不如不加~~好像更亂惹~~


因為命令過於簡單,所以對於 cat 查看文件內容的命令,小編就介紹這麽多~~還有一些同樣是查看文件內容的命令,某些場景要比 cat 命令實用很多很多~~那些命令等同學們熟練了 cat 命令小編再給大家介紹吧~~

路人丙:“小編大人,為什麽我用cat命令來查看內容,卻出現錯誤了呢?”

納尼!?你把執行的命令和錯誤讓小編看一下.....

技術分享

(↑路人丙的操作)

(↓小編看了路人丙的操作後的表情)

技術分享

小編怎麽會有這樣的學生...忍住...忍住..一定要忍住..保持微笑,註意形象...技術分享

路人甲追問:“小編大人,我機器是不是壞掉了~”

不行...小編忍不住了...

技術分享

註意看錯誤提示!!錯誤提示!!!這是一個目錄!cat 命令是用來看普通文件的!


好啦~~對於cat命令,小編就介紹到這裏。大家要註意不要犯路人丙一樣的錯誤~~


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

touch:創建一個空文件

那麽,這個命令要如何使用呢?小編依然去查看一下man文檔:

技術分享

從man文檔中,可以看出touch命令的用法:

touch [OPTION]... FILE..

OPTION表示的是這個命令的選項,省略號表示選項可以同時加多個,file是後面指定要創建文件的文件名字,如,小編在/app/目錄下創建一個文件:

技術分享

小編用 touch 命令創建了一個名字叫做 text 的文件,之後用ls 命令來確認這個文件是否存在,存在,說明創建成功~~

touch 命令的選項,涉及到了“時間戳”的概念,什麽是時間戳呢?小編這裏就給同學們簡單解釋一下:

時間戳:

文件有兩類數據:數據和元數據

元數據:metadata,文件的所有屬性

數據:data,文件內容

(↑對於兩者的理解,可理解為,只要與文件的內容無關的都是元數據,即文件屬性,包括權 限、大小等信息)

時間戳狀態:

記錄了文件:最後一次訪問時間.access time(ctime)

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

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

↑其中"最後一次更改"指的是文件中的數據更改,即文件內容發生了變化;"最近一次改動"指的是文件的元數據改變(如權限,大小等發生變化)

對於上面的介紹,不難發現,只要文件的數據發生了變化,那麽元數據就必然會發生變化,因為文件的"元數據"中也包含了文件的大小,而更改文件中的數據,文件大小必然會發生變化。


那麽,文件的時間戳要如何來查看呢?

stat:顯示文件或文件系統的狀態

技術分享

該命令是顯示文件或文件系統的所有狀態,所以不僅僅是顯示時間戳,包括文件的權限,Inode號以及大小等等多種信息。最下面的 Access 即為最後一次訪問時間,Modify 為最後一次更改時間,Change 為最後一次改動時間。

當我們用 nano編輯器來修改文件內容時:

技術分享

小編向該文件中隨便添加一些內容,再來查看一下該文件的時間戳:

技術分享

可以看到,Atime(訪問時間),Mtime(更改時間),Ctime(改動時間) 都發生了變化,而Atime的變化時因為小編用 nano編輯器打開了它,mtime和ctime是因為數據和大小發生了變化,當小編保存的那一刻,該時間才會改變,所以,Atime和其他兩個時間才會不一致


時間戳的改變,不僅僅是修改文件或者訪問文件時才會改變,touch命令本身就有修改時間戳的功能,實際上,touch命令後面指定的文件,不僅僅是不存在的文件,它可以是已經存在的文件。

若文件存在,用touch命令可以修改該文件的時間戳,比如:

技術分享

可以發現,小編 touch 一個已存在的文件後,該文件的時間戳全部發生了改變。若我們希望的是僅僅改變某一條時間,而不是改變所有的時間。touch還有一些針對修改時間戳的命令:

-a:僅修改文件的Atime(訪問時間)

技術分享

啊咧??Ctime怎麽也改變了呢??哎呀~~不要在意這些細節啦~~man文檔中說的是修改訪問時間,很明顯,該命令也把文件的Ctime也改變了,所以呢~~man文檔的話也是不能全信~~信誰呢??哼哼~~當然是小編啦~~那,小編上面對於 -a 的解釋就要改改了:

-a:修改文件的Atime和Ctime


-m:僅修改文件的Mtime

這個會不會出錯呢?

技術分享

哇~~又出錯惹~~man文檔是真的不能全信哦~~明明是修改Mtime,卻連同把Ctime也改了,還是相信小編可靠,man文檔也不可靠惹~~所以:

-m:修改文件的Mtime和Ctime

什麽?你問小編上一張圖和這一張圖中間怎麽相隔這麽長時間?哼哼,中間的時間,小編去給其他同學講題咯~~所以耽誤了一點點時間啦~~那麽,下一個選項:

-t:將文件的Atime和Mtime修改成指定的時間

其格式為 "年月日時分.秒",即:-t "年月日時分.秒"

小編這裏指定的是:201710142000.00

技術分享

哼哼,我們現在可以隨意設置訪問時間和更改時間啦~~可以為所欲為啦~~不過,這有什麽用呢??比如,你把一些相對重要的文件的時間戳設置成未來時間~~有很多可能會出問題哦~~~


好啦~~由於時間關系~小編這次就到這裏吧~唉。。還有好多好多東西沒給同學們講,那麽期待下次小編給大家講吧~~

嗯,時間不早了~又該睡覺惹~~(吐槽:你不是剛睡醒嗎!)



The END

本文出自 “13125850” 博客,請務必保留此出處http://13135850.blog.51cto.com/13125850/1972410

從零開始的linux 第十三章