Linux 文件與目錄管理/tree命令

一、Linux 文件基本屬性

      Linux系統是一種典型的多用戶系統,不同的用戶處於不同的地位,擁有不同的權限。爲了保護系統的安全性,Linux系統對不同的用戶訪問同一文件(包括目錄文件)的權限做了不同的規定。

      在Linux中我們可以使用 ll 或者 ls –l 命令來顯示一個文件的屬性以及文件所屬的用戶和組。

 

    

第一列: 文件類型(共10個字符) + 權限   -->  man find 搜索type可看
            -:普通文件
            d:目錄
            c:字符設備 --> /dev/tty     例如 USB接口、貓等一些串行端口設備
            b:塊設備   --> /dev下查找  例如光驅,硬盤等屬於塊設備
            .:SELINUX相關 
            l:鏈接文件 --> 軟連接
   後面的9個字符每3個爲一組[rwx],分別代表文件所有者、文件所有者所在用戶組、其它用戶對文件擁有的權限。
   [r]代表可讀(read)、[w]代表可寫(write)、[x]代表可執行(execute)。若沒有其中的任何一個權限則用“-”表示。
   執行的權限有兩個字符可選,最常見的一個是“x”代表可執行。另一個是“s”代表套接口文件。

第二列:硬鏈接個數 默認從1開始  
    如果是目錄,則默認是2(目錄不做硬鏈接)爲這個目錄下的目錄文件數目(這個數目=隱藏目錄數目+普通目錄數目)。
   (如果這只是一個普通文件,那“2”就代表這個文件有兩個別名,這個文件被人創建了一個硬鏈接文件),總而言之它就是一個計數

第三列:所有者,也就是這個文件屬於哪個用戶。默認所有者是文件的建立用戶。
第四列:所屬組,默認所屬組是文件建立用戶的有效組,一般情況下就是建立用戶的所在組。
第五列:文件大小(默認字節數),如果想看K或者M等,前面加一個選項-h
第六-八列:文件修改時間,文件狀態修改時間或文件數據修改時間都會更改這個時間,注意這個時間不是文件的創建時間。
第九列:文件名或目錄名。

更改文件屬性

1、chgrp:更改文件屬組

2、chown:更改文件屬主,也可以同時更改文件屬組

3、chmod:更改文件9個屬性

 

二、Linux 文件與目錄管理

       Linux的目錄結構爲樹狀結構,最頂級的目錄爲根目錄 /

絕對路徑:

      由根目錄 / 寫起,如: /usr/share/doc 這個目錄。

相對路徑:

      不由 / 寫起,相對當前的路徑,如由 /usr/share/doc 要到 /usr/share/man 下時,可寫成:cd ../man 這就是相對路徑寫法!

 

處理目錄的常用命令:可以使用 man [命令] 來查看其使用文檔,如 :man cp

1、ls: 列出目錄   Linux的目錄結構及ls命令介紹     

2、cd:切換目錄:

      cd是Change Directory的縮寫,這是用來變換工作目錄的命令。注意:使用用cd .. 的時,中間必須有空格

  cd [相對路徑或絕對路徑]

# mkdir abc      使用 mkdir 命令創建 abc 目錄
# cd /root/abc   使用絕對路徑切換到 abc 目錄
# cd ./abc       使用相對路徑切換到 abc 目錄
# cd ~           表示回到自己的家目錄,亦即是 /root 這個目錄
# cd ..          表示去到目前的上一級目錄,亦即是 /root 的上一級目錄的意思

3、pwd:顯示目前的目錄 

      pwd是Print Working Directory的縮寫,其功能是顯示當前所在工作目錄的全路徑。主要用在當不確定當前所在位置時,通過pwd來查看當前目錄的絕對路徑。

pwd [選項]

參數:

-L:--logical,顯示當前的路徑,有連接文件時,直接顯示連接文件的路徑,(不加參數時默認此方式),參考示例1。

-p:--physical,顯示當前的路徑,有連接文件時,不使用連接路徑,直接顯示連接文件所指向的文件,參考示例2。 當包含多層連接文件時,顯示連接文件最終指向的文件。

--help:顯示幫助信息。

--version:顯示版本信息。

示例1:

[root@centos7 ~]# pwd
/root
[root@centos7 ~]# pwd -L
/root

示例2:

[root@centos7 ~]# cd /var/mail  <=注意,/var/mail是一個連結檔
[root@centos7 mail]# pwd        <=默認,使用連接文件,直接顯示連接文件全路徑。
/var/mail                        
[root@centos7 mail]# pwd -P     <=不以連結檔的數據顯示,而是顯示正確的完整路徑(連接文件最終指向的文件)
/var/spool/mail                  
[root@centos7 mail]# ll /var/mail
lrwxrwxrwx. 1 root root 10 12月  1 20:29 /var/mail -> spool/mail
[root@centos7 mail]#

4、mkdir:創建一個新的目錄

     通過 mkdir 命令可以創建指定名稱的目錄,要求創建目錄的用戶在當前目錄中具有寫權限,並且指定的目錄名不能是當前目錄中已有的目錄(不能同名,區分大小寫)。

mkdir [選項] 目錄名或路徑名

參數

-m: --mode=模式,設定權限<模式> (類似 chmod),用於手動配置所創建目錄的權限,而不再使用默認權限。

-p: --parents 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄;

-v: --verbose , 每次創建新目錄都顯示信息

--help: 顯示此幫助信息並退出

--version: 輸出版本信息並退出

 

實例1:創建一個目錄並顯示創建信息

[root@centos7 ~]# ls /root
abc  anaconda-ks.cfg
[root@centos7 ~]# mkdir -v test1 
mkdir: 已創建目錄 "test1"

實例2:一次創建多個目錄

mkdir: 已創建目錄 "test1"
[root@centos7 ~]# mkdir test2/test22/abc
mkdir: 無法創建目錄"test2/test22/abc": 沒有那個文件或目錄
[root@centos7 ~]# mkdir -p test2/test22/abc

實例3:使用 -m 選項自定義目錄權限。

       使用了 -m 選項,通過設定 711 權限值來給予新的目錄 drwx--x--x 的權限

[root@centos7 ~]# mkdir -pm 711 /root/test3
[root@centos7 ~]# ll /root
總用量 4
drwxr-xr-x  2 root root    6 12月 10 11:21 abc
-rw-------. 1 root root 1440 12月  1 20:34 anaconda-ks.cfg
drwxr-xr-x  2 root root    6 12月 10 14:53 test1
drwxr-xr-x  3 root root   20 12月 10 14:54 test2
drwx--x--x  2 root root    6 12月 10 14:57 test3
[root@centos7 ~]# tree /root
/root
├── abc
├── anaconda-ks.cfg
├── test1
├── test2
│   └── test22
│       └── abc
└── test3

6 directories, 1 file

5、tree命令安裝: 參考文章linux tree命令 樹結構顯示目錄文件

     通過tree命令可以以樹形結構列出指定目錄下的所有內容,包括所有文件、子目錄及子目錄裏的目錄和文件。

     不過某些Linux上(Centos 6)採用最小化安裝Linux系統的方式,那麼tree命令可能沒有安裝,此時我們應該用yum命令來安裝tree命令。

[root@centos7 ~]# rpm -qa tree               #<==查詢tree命令是否安裝。如果沒有顯示就執行下面的命令
[root@centos7 ~]# yum -y install tree        #<==執行yum命令安裝tree
[root@centos7 ~]# rpm -qa tree
 tree.x86_64 0:1.6.0-10.e17

命令格式

tree [option] [directory]
tree [選項] [目錄]

說明:

  1)注意tree命令以及後面的選項和目錄,每個元素之間都至少要有一個空格

  2)tree命令後若不接選項和目錄就會默認顯示當前所在路徑目錄的目錄結構

tree命令的參數選項及說明,圖片來源於 【跟老男孩學Linux運維:核心系統命令】

-I(大寫i):命令允許你使用正則匹配來排除掉你不想看到的文件夾

 

實例1:不帶任何參數執行tree命令  顯示當前目錄的結構

[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
├── test2
│   └── test22
│       └── abc
└── test3

6 directories, 1 file

實例2:以樹形結構顯示目錄下的所有內容(-a的功能)

[root@centos7 ~]# tree -a /root
/root
├── abc
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
├── .tcshrc
├── test1
├── test2
│   └── test22
│       └── abc
└── test3

6 directories, 7 files

實例3:只列出根目錄下第一層目錄的結構(-L功能)

[root@centos7 ~]# tree -L 1 /root
/root
├── abc
├── anaconda-ks.cfg
├── test1
├── test2
└── test3

4 directories, 1 file

實例4:只顯示所有的目錄,但不顯示文件(-d功能)

[root@centos7 ~]# tree -ad /root
/root
├── abc
├── test1
├── test2
│   └── test22
│       └── abc
└── test3

6 directories

實例5:用tree命令來區分目錄和文件的方法(-F功能)

[root@centos7 ~]# tree -F /root  #<==使用-F參數會在目錄後面添加“/”,方便區分目錄
/root
├── abc/
├── anaconda-ks.cfg
├── test1/
├── test2/
│   └── test22/
│       └── abc/
└── test3/

6 directories, 1 file
[root@centos7 ~]# tree -F /root/|grep /$   #<==過濾以斜線結尾的所有內容 
/root/
├── abc/
├── test1/
├── test2/
│   └── test22/
│       └── abc/
└── test3/

實例5:忽略某個文件夾的內容(-I功能)

-I命令允許你使用正則匹配來排除掉你不想看到的文件夾,例如:

[root@centos7 ~]# tree -I "abc" /root
/root
├── anaconda-ks.cfg
├── test1
├── test2
│   └── test22
└── test3

4 directories, 1 file
[root@centos7 ~]# tree -I "abc|test*" /root   <==也可以使用|同時排除掉多個文件夾:
/root
└── anaconda-ks.cfg

0 directories, 1 file

最後一個使用到正則匹配,這樣以test_開頭的文件夾都不會被顯示出來。

6、rmdir:刪除一個空的目錄

      rmdir是常用的命令,該命令的功能是刪除空目錄,一個目錄被刪除之前必須是空的,rmdir 不能刪除非空目錄。

      注意:rm - r dir命令可代替rmdir,但是有很大危險性。刪除某目錄時也必須具有對父目錄的寫權限。

rmdir [參數] 目錄

參數

-p 遞歸刪除目錄dirname,當子目錄刪除後其父目錄爲空時,也一同被刪除。如果整個路徑被刪除或者由於某種原因保留部分路徑,則系統在標準輸出上顯示相應的信息。

-v --verbose,顯示指令執行過程

實例1:刪除空目錄

[root@centos7 ~]# rmdir /root/test3
[root@centos7 ~]# tree 
.
├── abc
├── anaconda-ks.cfg
├── test1
└── test2
    └── test22
        └── abc

5 directories, 1 file

實例2:遞歸刪除空目錄,並顯示刪除過程

      rmdir -p 當子目錄被刪除後使它也成爲空目錄的話,則順便一併刪除。

[root@centos7 test2]# cd ~
[root@centos7 ~]# rmdir -pv /root/test2/test22/abc
rmdir: 正在刪除目錄 "/root/test2/test22/abc"
rmdir: 正在刪除目錄 "/root/test2/test22"
rmdir: 正在刪除目錄 "/root/test2"
rmdir: 正在刪除目錄 "/root"
rmdir: 刪除目錄 "/root" 失敗: 設備或資源忙
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
└── test1

2 directories, 1 file

可進入那個目錄刪除 

[root@centos7 test2]# rmdir -pv test22/abc
rmdir: 正在刪除目錄 "test22/abc"
rmdir: 正在刪除目錄 "test22"
[root@centos7 test2]# cd ~
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
└── test2

3 directories, 1 file

7、cp: 複製文件或目錄

     cp命令用來將一個或多個源文件或者目錄複製到指定的目的文件或目錄。它可以將單個源文件複製成一個指定文件名的具體的文件或一個已經存在的目錄下。cp命令還支持同時複製多個文件,當一次複製多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。

cp [選項] [參數] 

選項

-a:此參數的效果和同時指定"-dpR"參數相同;

-d:當複製符號連接時,把目標文件或目錄也建立爲符號連接,並指向與源文件或目錄連接的原始文件或目錄;

-f:強行復制文件或目錄,不論目標文件或目錄是否已存在;

-i:覆蓋既有文件之前先詢問用戶;

-l:對源文件建立硬連接,而非複製文件;

-p(常用):保留源文件或目錄的屬性;

-R/r(常用):遞歸處理,將指定目錄下的所有文件與子目錄一併處理;

-s:對源文件建立符號連接,而非複製文件;

-u:使用這項參數後只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件並不存在時,才複製文件;

-S:在備份文件時,用指定的後綴“SUFFIX”代替文件的默認後綴;

-b:覆蓋已存在的文件目標前將目標文件備份;

-v:詳細顯示命令執行的操作。

參數:source  directory

源文件:指定源文件列表。默認情況下,cp命令不能複製目錄,如果要複製目錄,則必須使用-R選項;

目標文件:指定目標文件。當“源文件”爲多個文件時,要求“目標文件”爲指定的目錄。

此命令中所有參數既可以是絕對路徑名,也可以是相對路徑名。通常會用到點.或點點..的形式。

實例1:把上一個路徑下的一個文件複製到一個目標文件中

[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
└── test2
    └── test22

4 directories, 1 file
[root@centos7 ~]# cd test2
[root@centos7 test2]# cp ../anaconda-ks.cfg ./test22/
[root@centos7 test2]# tree .
.
└── test22
    └── anaconda-ks.cfg

1 directory, 1 file

實例2:把源路徑下的一個文件複製到一個目標文件中,並重命名爲file1.cfg

[root@centos7 test2]# cd ~
[root@centos7 ~]# cp anaconda-ks.cfg ./test2/test22/file1.cfg
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
└── test2
    └── test22
        ├── anaconda-ks.cfg
        └── file1.cfg

4 directories, 3 files
[root@centos7 ~]# ll
總用量 4
drwxr-xr-x  2 root root    6 12月 10 11:21 abc
-rw-------. 1 root root 1440 12月  1 20:34 anaconda-ks.cfg
drwxr-xr-x  2 root root    6 12月 10 14:53 test1
drwxr-xr-x  3 root root   20 12月 10 16:04 test2
[root@centos7 ~]# ll /root/test2/test22/
總用量 8
-rw------- 1 root root 1440 12月 10 16:05 anaconda-ks.cfg
-rw------- 1 root root 1440 12月 10 16:06 file1.cfg

文件的屬性信息默認是改變了

實例3:將源路徑下的所有文件及其子目錄複製到目標文件中,並保留文件屬性信息

[root@centos7 ~]# cp -rp /root/test2/test22/ ./test1
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
│   └── test22
│       ├── anaconda-ks.cfg
│       └── file1.cfg
└── test2
    └── test22
        ├── anaconda-ks.cfg
        └── file1.cfg

5 directories, 5 files
[root@centos7 ~]# ll ./test1/test22/
總用量 8
-rw------- 1 root root 1440 12月 10 16:05 anaconda-ks.cfg
-rw------- 1 root root 1440 12月 10 16:06 file1.cfg

8、rm: 刪除文件或目錄

     rm命令remove的縮寫,作用:1)刪除目錄,2)刪除文件。  (可以遞歸的刪除指定目錄的所有文件及子目錄)

     注意:rm是一個危險的命令,使用的時候要特別當心,尤其對於初學者來說。

rm [選項] [參數]      (參數爲目錄或文件)

選項

-f: force 的意思,忽略不存在的文件,不會出現警告信息;不提示詢問,強制刪除文件或目錄;

-i:刪除已有文件或目錄之前先詢問用戶;

-R/r:遞歸刪除,將指定目錄下的所有文件與子目錄一併刪除;

-v:顯示指令的詳細執行過程。

實例1:刪除一個文件

[root@centos7 ~]# rm -v ./test1/test22/anaconda-ks.cfg 
rm:是否刪除普通文件 "./test1/test22/anaconda-ks.cfg"?y
已刪除"./test1/test22/anaconda-ks.cfg"
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── test1
│   └── test22
│       └── file1.cfg
└── test2
    └── test22
        ├── anaconda-ks.cfg
        └── file1.cfg

5 directories, 4 files

實例2:遞歸刪除該目錄下的子目錄及文件,包括刪除該目錄,不提示詢問

[root@centos7 ~]# rm -frv ./test1
已刪除"./test1/test22/file1.cfg"
已刪除目錄:"./test1/test22"
已刪除目錄:"./test1"
[root@centos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
└── test2
    └── test22
        ├── anaconda-ks.cfg
        └── file1.cfg

3 directories, 3 files

9、mv: 移動文件與目錄,或修改文件與目錄的名稱

     mv命令,move的縮寫,移動文件與目錄。其實就相當於剪切操作,而前面說的cp命令,就是複製粘貼。

     mv命令中根據第二個參數的不同(文件或者目錄),mv命令將目標文件重命名或移至新的目錄中。當第二個參數類型是文件時,是重命名。當第二個參數是已經存在的目錄名時,源文件或目錄參數可以有多個,mv命令將各參數制定的源文件均移至目標目錄中。在跨文件系統移動文件時,mv先拷貝,再將原有文件刪除,而鏈至該文件的鏈接也將丟失。

rm [選項]  source directory

選項

-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;

-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!

-u :若目標文件已經存在,且 source 比較新,纔會升級 (update)

實例1:移除一個文件

[root@centos7 ~]# mv ./test2/test22/file1.cfg ./abc                         
[root@centos7 ~]# tree
.
├── abc
│   └── file1.cfg
├── anaconda-ks.cfg
└── test2
    └── test22
        └── anaconda-ks.cfg

3 directories, 3 files

實例2:遞歸移除目錄及文件,並詢問

[root@centos7 ~]# mv -i ./test2/test22 ./abc
[root@centos7 ~]# tree
.
├── abc
│   ├── file1.cfg
│   └── test22
│       └── anaconda-ks.cfg
├── anaconda-ks.cfg
└── test2

3 directories, 3 files

實例3:重命名文件

      移動操作跟重命名有什麼關係,其實回想cp命令也不難理解了,在移動過程中,改變名稱,不改變位置,這樣不就相當於重命名了。

[root@centos7 ~]# mv ./abc/file1.cfg ./abc/file2.cfg
[root@centos7 ~]# tree
.
├── abc
│   ├── file2.cfg
│   └── test22
│       └── anaconda-ks.cfg
├── anaconda-ks.cfg
└── test2

3 directories, 3 files

10、stat:顯示文件或文件系統的詳細信息

stat命令主要用於顯示文件或文件系統的詳細信息。

stat [-option] 文件

-f  不顯示文件本身的信息,顯示文件所在文件系統的信息

-Z 打印SElinux安全上下文信息

-L  顯示符號鏈接

-c 自定義輸出格式,結尾有換行

-t  簡潔模式,只顯示摘要信息

        Access time(atime):表示我們最後一次訪問(僅僅是訪問,沒有改動)文件的時間。讀一次這個文件的內容,這個時間就會更新,比如對這個文件運用 grep、sed、more、cat 、less、tail、head等命令,ls、stat命令都不會修改文件的訪問時間。

        Modify time(mtime):表示我們最後一次修改文件的時間。比如:vim後保存文件。ls -l列出的時間就是這個時間。

        Change time(ctime):表示我們最後一次對文件屬性改變的時間,包括權限,大小,屬性等等。如使用chmod,chown,mv,ln,就會改變文件的Change time。

根據上述解釋,我們可以得出以下結論:

        a)當我們僅僅只是讀取文件時,access time 改變,而modify,change time 不會改變;

        b)當修改文件時,access,modify,change time 都會跟着改變;

        c)當修改文件屬性時,change time 改變,而access,modify time 不變。

      另個,除了可以通過stat來查看文件的mtime,ctime,atime等屬性,也可以通過ls命令來查看(ls默認情況下顯示的是mtime),具體如下:

        ls -lu filename 列出文件的 atime (最後存取時間)

        ls -l  filename 列出文件的 mtime (最後修改時間)

        ls -lc filename 列出文件的 ctime (最後更改時間)

    

11、touch命令

       touch命令用於修改文件或者目錄的時間屬性,包括存取時間和更改時間。若文件不存在,系統會建立一個新的文件。

touch  [-options] 文件

參數選項

1)無選項:若文件不存在,則創建新的空文件,access time,modify time和change time均爲當前時間;若文件存在,則將三個時間戳均修改爲當前時間

[root@centos7 ~]# stat abc/file2.cfg 
  文件:"abc/file2.cfg"
  大小:1440            塊:8          IO 塊:4096   普通文件
設備:803h/2051d        Inode:4656        硬鏈接:1
權限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
最近訪問:2019-12-12 14:04:09.964749730 +0800
最近更改:2019-12-12 14:04:09.964749730 +0800
最近改動:2019-12-12 14:04:09.964749730 +0800
創建時間:-
[root@centos7 ~]#

2)-a:只修改文件的access time

[root@centos7 ~]# touch -a abc/file2.cfg 
[root@centos7 ~]# stat abc/file2.cfg 
  文件:"abc/file2.cfg"
  大小:1440            塊:8          IO 塊:4096   普通文件
設備:803h/2051d        Inode:4656        硬鏈接:1
權限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
最近訪問:2019-12-12 14:21:34.365104225 +0800
最近更改:2019-12-12 14:04:09.964749730 +0800
最近改動:2019-12-12 14:21:34.365104225 +0800
創建時間:-
[root@centos7 ~]# 

     注意:access time修改後,change time也被修改(因爲狀態發生了改變)。

3)-m:只修改文件的modify time

[root@centos7 ~]# stat abc/file2.cfg     
  文件:"abc/file2.cfg"
  大小:1440            塊:8          IO 塊:4096   普通文件
設備:803h/2051d        Inode:4656        硬鏈接:1
權限:(0600/-rw-------)  Uid:(    0/    root)   Gid:(    0/    root)
最近訪問:2019-12-12 14:21:34.365104225 +0800
最近更改:2019-12-12 14:22:34.593080610 +0800
最近改動:2019-12-12 14:22:34.593080610 +0800
創建時間:-

    注意:modify time修改後,change time也被修改(因爲狀態發生了改變)。

4)文件不存在是創建文件

[root@centos7 ~]# tree ./abc
./abc
├── file2.cfg
└── test22
    └── anaconda-ks.cfg

1 directory, 2 files
[root@centos7 ~]# touch ./abc/test.txt
[root@centos7 ~]# tree ./abc          
./abc
├── file2.cfg
├── test22
│   └── anaconda-ks.cfg
└── test.txt

1 directory, 3 files
[root@centos7 ~]# stat ./abc/test.txt 
  文件:"./abc/test.txt"
  大小:0               塊:0          IO 塊:4096   普通空文件
設備:803h/2051d        Inode:33575013    硬鏈接:1
權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近訪問:2019-12-12 14:25:33.163809448 +0800
最近更改:2019-12-12 14:25:33.163809448 +0800
最近改動:2019-12-12 14:25:33.163809448 +0800
創建時間:-

5)-c:不創建不存在的文件(當touch後操作多個文件時,不存在的文件將不會被創建)

[root@centos7 ~]# touch -c ./abc/aaa.txt
[root@centos7 ~]# tree ./abc
./abc
├── file2.cfg
├── test22
│   └── anaconda-ks.cfg
└── test.txt

1 directory, 3 files

12、cat命令

      cat命令用於一次顯示整個文件內容等

     命令格式:cat [-options] 文件

    參數:-n:--number 對輸出的所有行編號,即在每行前顯示所在行號

給上面的test.txt編輯一點內容,查看

  

13、more命令

    more命令類似與cat命令,卻比cat命令強大,它以全屏幕的方式按頁顯示文本文件的內容,支持vi中的關鍵字定位操作。

1)快捷鍵

space,  z 向下翻頁

b,ctrl+b       向上翻頁

Enter       向下滾動 1 行

=        顯示當前行號

v      用vi編輯器打開當前內容

:f               顯示當前文檔文件名與當前行號

d,ctrl+D       向下翻 K 行,默認k=11

q,Q              退出more

ctrl+L              類似於清屏

h                      顯示快捷鍵幫助

2)用法:

more [選項] 文件..

選項

-d      顯示幫助,而不是響鈴

-f              統計邏輯行數而不是屏幕行數

-l              抑制換頁(form feed)後的暫停

-p            不滾屏,清屏並顯示文本

-c      不滾屏,顯示文本並清理行尾

-u      抑制下劃線

-s      將多個空行壓縮爲一行

-NUM     指定每屏顯示的行數爲 NUM

+NUM     從文件第 NUM 行開始顯示

+/STRING 從匹配搜索字符串 STRING 的文件位置開始顯示

-V     輸出版本信息並退出

14、less 命令

     less 工具也是對文件或其它輸出進行分頁顯示的工具,應該說是linux正統查看文件內容的工具,功能極其強大。

less [-選項] 文件

-b 《緩衝區大小》 設置緩衝區的大小

-e 當文件顯示結束後,自動離開

-f 強迫打開特殊文件,例如外圍設備代號、目錄和二進制文件

-g 只標誌最後搜索的關鍵詞

-i 忽略搜索時的大小寫

-m 顯示類似more命令的百分比

-N 顯示每行的行號

-o 《文件名》 將less 輸出的內容在指定文件中保存起來

-Q 不使用警告音

-s 顯示連續空行爲一行

-S 行過長時間將超出部分捨棄

-x 《數字》 將“tab”鍵顯示爲規定的數字空格

/字符串:向下搜索“字符串”的功能

?字符串:向上搜索“字符串”的功能

n:重複前一個搜索(與 / 或 ? 有關)

N:反向重複前一個搜索(與 / 或 ? 有關)

d 向後翻半頁

h 顯示幫助界面

q,Q 退出less 命令

u 向前滾動半頁

y 向前滾動一行

空格鍵 滾動一行

[pagedown]: 向下翻動一頁    space,z   向下翻頁

[pageup]: 向上翻動一頁        b,ctrl+b    向上翻頁

 

g 跳到文件頭    【常用】

G 跳到文件尾部  【常用】

15、head命令

       head命令用於查看文檔的開始指定數量的字符塊,默認顯示文檔的前 10 行,如果給定的文件不止一個,則在顯示的每個文件前面加一個文件名標題。

head [選項] [文件]

-c, --bytes=[-]K k,顯示文檔開始的前k個字節,-k,不顯示文檔結尾的最後 k 個字節

-n, --lines=[-]K k,顯示文檔開始的前k行,-k,不顯示文檔結尾的最後 k 行

-q, --quiet, --silent    不顯示包含給定文件名的文件頭

-v, --verbose      總是顯示包含給定文件名的文件頭

--help        顯示此幫助信息並退出

--version      顯示版本信息並退出

16、tail命令

       tail命令與head命令用法相似,tail命令用於查看文檔的尾端指定數量的字符塊,默認顯示文檔的最後 10 行,如果給定的文件不止一個,則在顯示的每個文件前面加一個文件名標題。

tail [選項] [文件]

-c, --bytes=K              k,顯示文檔結尾的前 k 字節,+k,不顯示文檔開始的前 k-1 字節

-f, --follow[={name|descriptor}]     動態監視文檔最新追加的內容

-n, --lines=K              k,顯示文檔結尾的 k 行,+k,不顯示文檔開始的前 k-1 行

-q, --quiet, --silent              當有多個文件參數時,不輸出各個文件名

-s, --sleep-interval=N              與“-f”選項連用,指定監視文件變化時間隔的秒數

--help                 顯示此幫助信息並退出

--version                 顯示版本信息並退出

   上面只列舉了一部分命令的參數,更多命令的 [選項] [參數],通過 man 命令 查看

   

   站在前輩的肩膀上,每天進步一點點

ends~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章