1. 程式人生 > 其它 >Linux自學之旅-基礎命令(三)

Linux自學之旅-基礎命令(三)

技術標籤:Linuxlinux運維

Linux自學之旅-基礎命令(三)

文章目錄


前言

1.上節我們講述的是對目錄進行操作的一些基礎命令,那既然有目錄操作,那是不是也該有檔案的操作命令鴨。

2.那麼我們這節就將介紹一些基礎的對檔案操作的命令


提示:以下是本篇文章正文內容

一、前節回顧

上一節中我們主要介紹瞭如下幾個對目錄進行操作的基本命令以及關機重啟命令{

1.“ls”:顯示目錄底下的內容

2.“cd”:切換當前工作路徑

3.“pwd”:顯示當前的工作路徑

4.“mkdir”:建立空目錄

5.“rmdir”:刪除空目錄

6.shutdown -h now:立即關機

7.shutdown -r now:立即重啟

(想具體瞭解這幾個命令的使用方式的請點選下方連結訪問:
Linux基礎命令(一)
}


二、(檔案/目錄)時間

1.在開始介紹檔案操作命令前,我們先來說說Linux底下(檔案/目錄)時間(就是說Linux底下檔案和目錄都有自身的一個時間),三個引數{

1.訪問時間(Access Time,簡稱 atime):我們每次讀取一次檔案或檢視一次檔案該時間都會進行修改【比如你這個檔案是個文字,我如果使用檢視檔案內容的命令去檢視你這個文字檔案裡面有什麼東西,那麼我看一次這個訪問時間就會改一次】

2.資料修改時間(Modify Time,簡稱 mtime):當檔案的資料內容被修改時,該時間就會改變(我前面查看了你的文字檔案裡面有什麼了吧,那麼我如果在進行修改,把裡面的內容更改的話那麼資料修改時間就會改變)

3.狀態修改時間(Change Time,簡稱 ctime):當檔案的許可權或者屬性被修改時,該時間也會隨之改變(可以理解為我前面的“訪問時間”或“資料修改時間”只要一有改動,那麼我這個時間也是會隨之一起進行變化。因為對檔案來說,就算你的訪問時間變化了其他沒變,也算是檔案本身的屬性改變)
}


三、檔案操作命令(一)

1.stat命令

stat是檢視檔案或目錄的詳細資訊的命令

  • 命令名稱:stat
  • 命令全稱:display file or file system status
  • 所在路徑:/usr/bin/stat
  • 執行許可權:所有使用者
  • 功能描述:檢視檔案或目錄的詳細資訊(可以理解為windows下右擊一個應用之後點屬性彈出來的東西)
命令格式
stat 檔案/目錄

舉個例子:

[[email protected] ~]# ls -lh
總用量 48K
-rw-r--r--. 1 root root    0 1月  14 07:53 2020-01-01 18:01
-rw-r--r--. 1 root root    0 1月  14 07:52 2020-01-02 09:10:33
drwxr-xr-x. 2 root root 4.0K 1月  13 07:59 aa
-rw-------. 1 root root 1.2K 1月  11 11:22 anaconda-ks.cfg
-rw-r--r--. 1 root root  27K 1月  11 11:22 install.log
-rw-r--r--. 1 root root 7.4K 1月  11 11:21 install.log.syslog
[[email protected] ~]# stat aa/	【(stat xx)stat後接目錄或檔名】
  File: "aa/"
  Size: 4096      	Blocks: 8          IO Block: 4096   目錄
Device: 803h/2051d	Inode: 919029      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2021-01-14 07:56:51.227165819 +0800
Modify: 2021-01-13 07:59:57.512804253 +0800
Change: 2021-01-14 07:55:07.394163343 +0800
[[email protected] ~]# 

從上至下的解釋:
(File:名稱		Size:大小		Blocks:塊		IO Block:IO塊
Device:裝置		Inode:節點		Links:硬連結	Access:許可權
Uid:使用者id		Gid:組id		Access:訪問時間
Modify:資料修改時間		Change:狀態修改時間)
【仔細注意下面三條的時間,就是我們前面講的Linux下檔案或目錄的三條時間】

~~

~~

2.touch命令

那麼我們既然有可以檢視檔案或目錄詳細資訊的命令,我們已經知道了目錄如何建立,那麼我們也想檢視我們的檔案的詳細內容,那我們的檔案又從何建立呢?touch可以幫助到你:
touch命令主要的作用是建立空檔案或修改檔案時間。

  • 命令名稱:touch
  • 命令全稱:change file timestamps
  • 所在路徑:/bin/touch
  • 執行許可權:所有使用者
  • 功能描述:建立空檔案或修改檔案時間
命令格式
touch [選項] 檔名
選項:
-a:只修改檔案的訪問時間
-c:僅修改檔案的時間引數(3個時間引數都改變),如果檔案不存在,則不建立新檔案
-d:後面可以跟欲修訂的日期,而不用當前的日期,即把檔案的atime和mtime時間改為指定的時間
-m:只修改檔案的資料修改時間
-t:命令後面可以跟欲修訂的時間,而不用目前的時間,時間書寫格式為【YYMMDDhhmm】

那麼我先來舉兩個用touch修改檔案時間的例子(常用修改時間例子):

(修改檔案訪問時間)
[[email protected] ~]# ls -lh
總用量 48K
-rw-r--r--. 1 root root    0 1月  14 07:53 2020-01-01 18:01
-rw-r--r--. 1 root root    0 1月  14 07:52 2020-01-02 09:10:33
drwxr-xr-x. 2 root root 4.0K 1月  13 07:59 aa
-rw-------. 1 root root 1.2K 1月  11 11:22 anaconda-ks.cfg
-rw-r--r--. 1 root root  27K 1月  11 11:22 install.log
-rw-r--r--. 1 root root 7.4K 1月  11 11:21 install.log.syslog
[[email protected] ~]# 
[[email protected] ~]# stat aa/
  File: "aa/"
  Size: 4096      	Blocks: 8          IO Block: 4096   目錄
Device: 803h/2051d	Inode: 919029      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2021-01-14 07:56:51.227165819 +0800
Modify: 2021-01-13 07:59:57.512804253 +0800
Change: 2021-01-14 07:55:07.394163343 +0800
[[email protected] ~]# 
[[email protected] ~]# touch -a -d "2020-01-01 13:11" aa/
[[email protected] ~]# 
[[email protected] ~]# stat aa/
  File: "aa/"
  Size: 4096      	Blocks: 8          IO Block: 4096   目錄
Device: 803h/2051d	Inode: 919029      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-01-01 13:11:00.000000000 +0800
Modify: 2021-01-13 07:59:57.512804253 +0800
Change: 2021-01-14 08:19:13.022154519 +0800
[[email protected] ~]# 

(如上,我目錄下有aa這個目錄,我用stat查看了aa目錄的訪問時間,
發現它的訪問時間是“2021-01-14 07:56:51”--2021年1月14日7點56分51秒訪問過

那麼我們知道它的原始時間後,我們利用“touch -a -d “2020-01-01 13:11 aa/””
的方式對它的訪問時間進行了一個修改;-a是隻修改訪問時間,-d是指後面可跟上一段
要修改的時間,修改完之後再次stat檢視發現時間就變成了我們修改的時間)
(修改資料修改時間)
[[email protected] ~]# ls -lh
總用量 48K
-rw-r--r--. 1 root root    0 1月  14 07:53 2020-01-01 18:01
-rw-r--r--. 1 root root    0 1月  14 07:52 2020-01-02 09:10:33
drwxr-xr-x. 2 root root 4.0K 1月  13 07:59 aa
-rw-------. 1 root root 1.2K 1月  11 11:22 anaconda-ks.cfg
-rw-r--r--. 1 root root  27K 1月  11 11:22 install.log
-rw-r--r--. 1 root root 7.4K 1月  11 11:21 install.log.syslog
[[email protected] ~]# stat aa/
  File: "aa/"
  Size: 4096      	Blocks: 8          IO Block: 4096   目錄
Device: 803h/2051d	Inode: 919029      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-01-01 13:11:00.000000000 +0800
Modify: 2021-01-13 07:59:57.512804253 +0800
Change: 2021-01-14 08:19:13.022154519 +0800
[[email protected] ~]# touch -m -d "1999-01-01 12:01" aa/
[[email protected] ~]# stat aa/
  File: "aa/"
  Size: 4096      	Blocks: 8          IO Block: 4096   目錄
Device: 803h/2051d	Inode: 919029      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-01-01 13:11:00.000000000 +0800
Modify: 1999-01-01 12:01:00.000000000 +0800
Change: 2021-01-14 08:27:35.851153422 +0800
[[email protected] ~]# 

(這個例子我們將-a只修改訪問時間換成了 -m只修改資料修改時間,
後面依舊-d並接上要修改的時間,最後stat再檢視一下就發現已經更改)

【記住,最後一個狀態修改時間是不能修改的,它是隨著你前面的“訪問時間”和
“資料修改時間”變化而變化的;但是它不是你前面修改了什麼時間他就會跟著變成
什麼時間,而是你修改了前面的時間之後,狀態修改時間會自動變成系統的最新的時間
----舉個例子,比如你訪問時間修改成了“1999-11-11 12:11”,狀態修改時間
的話他是不會也變成“1999-11-11 12:11”的,而是你修改成功的時候系統當前什麼
時間,他就是什麼時間】

最後我還說過了,touch是可以建立檔案的,我們來舉一個建立檔案的例子:
(建立檔案)
[[email protected] aa]# ls -lha
總用量 8.0K
drwxr-xr-x. 2 root root 4.0K 1月   1 1999 .
dr-xr-x---. 3 root root 4.0K 1月  14 08:07 ..
[[email protected] aa]# 
[[email protected] aa]# touch snljh
[[email protected] aa]# ls -lha
總用量 8.0K
drwxr-xr-x. 2 root root 4.0K 1月  14 08:37 .
dr-xr-x---. 3 root root 4.0K 1月  14 08:07 ..
-rw-r--r--. 1 root root    0 1月  14 08:37 snljh
[[email protected] aa]# 

(直接touch後面接一個檔名就可以直接創建出一個檔案了)

~~

~~

3.cat命令

那麼我們已經建立好了檔案了,但是總覺得哪裡有點不對鴨,我們想起上一節,我們既可以建立也可以進入目錄,那麼我們這一節建立檔案,那能不能進入檔案呢?能鴨,不過不叫進入檔案,我們是檢視檔案裡面有什麼。
cat命令是用來檢視檔案本身的資料內容

  • 命令名稱:cat
  • 命令全稱:concatenate files and print on the standard output
  • 所在路徑:/bin/cat
  • 執行許可權:所有使用者
  • 功能描述:檢視檔案內容並標準輸出(檢視檔案裡的內容並直接顯示在螢幕上)
命令格式
cat [選項] 檔案
選項:
-A:相當於-vET選項的集合,用於列出所有隱藏符號
-E:列出每行結尾的回車符$
-n:顯示行號
-T:把Tab鍵用^顯示出來
-v:列出特殊字元

我們隨便舉兩個常用例子:

(直接檢視)
[[email protected] aa]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m

[[email protected] aa]# 

(直接cat後面接你要檢視的檔案的路徑,
如上使用的是絕對路徑檢視,
我檢視的是“根目錄下的etc目錄下的名叫issue的檔案的內容”,
要你的檔案裡面有東西他才會顯示,要不然沒東西只顯示空白)
-n進行檢視)
[[email protected] aa]# cat -n /etc/issue
     1	CentOS release 6.6 (Final)
     2	Kernel \r on an \m
     3	
[[email protected] aa]# 

(還是檢視issue這個檔案,不過我加了-n選項,文字就會在前面自動顯示行號,
如上,我有三行資料【最後一行有資料的,大家可以自行-A顯示特殊符號檢視一下】)

~~

~~

4.more命令

我們檢視檔案是有很多種檢視的命令的,cat只是其中一種,現在我們來介紹第二種;
more是分屏檢視檔案

  • 命令名稱:more
  • 命令全稱:file perusal filter for crt viewin
  • 所在路徑:/bin/more
  • 執行許可權:所有使用者
  • 功能描述:分屏檢視檔案(一頁一頁向上向下翻)
命令格式
more 檔名

舉2個例子 :

(檢視內容少的檔案)
[[email protected] aa]# 
[[email protected] aa]# more /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m

[[email protected] aa]# 

(還是剛才那個檔案,和cat一樣的操作,
這時候有人問了,這不是和cat一樣麼?那直接cat不香嘛,cat功能還多;
那麼請看下面的例子)
cat檢視內容多的檔案)
[[email protected] aa]# cat /var/log/anaconda.log 
......
11:22:06,271 INFO    : leaving (1) step writeksconfig
11:22:06,271 INFO    : moving (1) to step setfilecon
11:22:06,271 DEBUG   : setfilecon is a direct step
11:22:06,271 INFO    : setting SELinux contexts for anaconda created files
11:22:11,196 INFO    : leaving (1) step setfilecon
11:22:11,196 INFO    : moving (1) to step copylogs
11:22:11,196 DEBUG   : copylogs is a direct step
11:22:11,196 INFO    : Copying anaconda logs
[[email protected] aa]# cat有一個缺陷,就是如果你的檔案內容過多的話,
cat直接檢視會直接跳到檔案的最後幾行,前面的你想看的話還得自己慢慢翻上去;
如上,log目錄下的anaconda.log檔案內容很多的,大家可以自己試試cat看看,
就可以知道缺陷了,你想看第一條的內容還得自己慢慢往上面翻,還不一定翻得到)
(more檢視長檔案)
[[email protected] aa]# more /var/log/anaconda.log 
08:56:06,299 INFO    : stage2 url is cdrom:///dev/sr0:/mnt/stage2
08:56:06,341 INFO    : Loading SELinux policy
08:56:06,892 INFO    : getting ready to spawn shell now
08:56:07,129 INFO    : Running anaconda script /usr/bin/anaconda
08:56:08,452 INFO    : CentOS Linux is the highest priority installclass, using it
08:56:08,457 INFO    : created new libuser.conf at /tmp/libuser.4kQJyR with instPath="/mnt/sysimage"
08:56:08,458 INFO    : anaconda called with cmdline = ['/usr/bin/anaconda', '--stage2', 'cdrom:///dev/sr0:/mnt/stage2', '--grap
hical', '--selinux']
--More--(8%)
......
[[email protected] aa]#

(可以知道more是翻頁式從第一頁開始遊覽檔案的,就是一頁一頁看的。操作指令如下:

 - 空格鍵:向下翻頁(空格一次就是看下一頁一次)
 - b:向上翻頁(上一頁的意思)
 - 回車鍵:下一行(一行一行的看的意思)
 - /字串(直接/後面加上你要搜尋的字串,他會自動搜尋你想找的東西)
 - q:退出(退出more檢視檔案內容)
以上選項都是直接按鍵盤就會生效了的,大家自己試試吧
)

~~

~~

5.less命令

less也是檢視檔案的命令,和more相似,不過less是分行顯示檔案內容

  • 命令名稱:less
  • 命令全稱:opposite of more
  • 所在路徑:/usr/bin/less
  • 執行許可權:所有使用者
  • 功能描述:分行顯示內容(支援小鍵盤一行一行向下向上翻)

less命令的指令操作基本和more一致,不過less可以支援小鍵盤的上下左右鍵進行檢視檔案內容,可以更加針對每一行的資料仔細審查
less的基本指令操作可以參照more的,直接按鍵盤對應鍵位就可以了。另外less具備more不具備的小鍵盤上下左右鍵進行檢視檔案)–就是你電腦鍵盤右下角不是有如下圖這樣的按鍵嘛,可以直接小鍵盤操作檔案內容;–這裡就不示範了
【那這裡又有人會說了less和more一樣?那麼這兩個命令有共同存在的必要麼?具體的命令對比我會在後面總結在和大家講講】
在這裡插入圖片描述


總結

本節我們講述了一些簡單的檔案操作命令,但是這一檔案操作命令章節並沒有結束,還有一點命令沒有講,但是因為篇幅實在有點多了,所以想留到下一節再繼續講剩下的命令,那麼我們回顧一下這一節所學的命令{

1.stat:檢視檔案或目錄的詳細資訊

2.touch:建立檔案或修改檔案時間(修改時間的話只能改訪問時間和資料修改時間)

3.cat:檢視檔案內容並標準輸出(直接顯示到螢幕)

4.more:分頁檢視檔案(一頁一頁翻)

5.less:分行檢視檔案(一行一行翻)
}
今天我們學習了很多檢視檔案內容的命令,做個對比吧:

如果你是想檢視內容很少的檔案:cat命令

如果你是想檢視內容很多的檔案:less命令(基本可替代more,可以小鍵盤一行一行翻,也可以進行more全部操作)

我是結花,我們下次見。