1. 程式人生 > >Linux命令-檔案管理篇-cat

Linux命令-檔案管理篇-cat

1.cat 說明

cat 是一個文字檔案檢視和連線工具。檢視一個檔案的內容,用cat比較簡單,就是cat 後面直接接檔名。

2.使用許可權

所有使用者
<!-- more -->

3.cat 語法

  • 語法格式

cat [-AbeEnstTuv] [--help] [--version] fileName
  • 引數說明
-n 或 --number:由 1 開始對所有輸出的行數編號。
-b 或 --number-nonblank:和 -n 相似,只不過對於空白行不編號。
-s 或 --squeeze-blank:當遇到有連續兩行以上的空白行,就代換為一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符號,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行結束處顯示 $。
-T 或 --show-tabs: 將 TAB 字元顯示為 ^I。
-A, --show-all:等價於 -vET。
-e:等價於"-vE"選項;
-t:等價於"-vT"選項;

4.cat 例項

  • 檢視/etc/bashrc的內容

[[email protected] ~]# cat /etc/bashrc    
  • 檢視/etc/目錄下的bashrc內容,並且對非空白行進行編號,行號從1開始

[[email protected] ~]# cat -b /etc/bashrc  
...
    70        SHELL=/bin/bash
    71        # Only display echos from profile.d scripts if we are no login shell
    72        # and interactive - otherwise just process them to set envvars
    73        for i in /etc/profile.d/*.sh; do
    74            if [ -r "$i" ]; then
    75                if [ "$PS1" ]; then
    76                    . "$i"
    77                else
    78                    . "$i" &gt;/dev/null
    79                fi
    80            fi
    81        done

    82        unset i
    83        unset -f pathmunge
    84    fi
    85    # vim:ts=4:sw=4
  • 對/etc目錄中的profile的所有的行(包括空白行)進行編號輸出顯示

[[email protected] ~]# cat -n /etc/bashrc
...
    65    
    66        # By default, we want umask to get set. This sets it for non-login shell.
    67        # Current threshold for system reserved uid/gids is 200
    68        # You could check uidgid reservation validity in
    69        # /usr/share/doc/setup-*/uidgid file
    70        if [ $UID -gt 199 ] &amp;&amp; [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    71           umask 002
    72        else
    73           umask 022
    74        fi
    75    
    76        SHELL=/bin/bash
    77        # Only display echos from profile.d scripts if we are no login shell
    78        # and interactive - otherwise just process them to set envvars
    79        for i in /etc/profile.d/*.sh; do
    80            if [ -r "$i" ]; then
    81                if [ "$PS1" ]; then
    82                    . "$i"
    83                else
    84                    . "$i" &gt;/dev/null
    85                fi
    86            fi
    87        done
    88    
    89        unset i
    90        unset -f pathmunge
    91    fi
    92    # vim:ts=4:sw=4
  • 檢視/etc/下的bashrc內容,並且在每行的結尾處附加$符號

[[email protected] ~]# cat  -E /etc/bashrc
...
        esac$
    }$
$
    # By default, we want umask to get set. This sets it for non-login shell.$
    # Current threshold for system reserved uid/gids is 200$
    # You could check uidgid reservation validity in$
    # /usr/share/doc/setup-*/uidgid file$
    if [ $UID -gt 199 ] &amp;&amp; [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then$
       umask 002$
    else$
       umask 022$
    fi$
$
    SHELL=/bin/bash$
    # Only display echos from profile.d scripts if we are no login shell$
    # and interactive - otherwise just process them to set envvars$
    for i in /etc/profile.d/*.sh; do$
        if [ -r "$i" ]; then$
            if [ "$PS1" ]; then$
                . "$i"$
            else$
                . "$i" &gt;/dev/null$
            fi$
        fi$
    done$
$
    unset i$
    unset -f pathmunge$
fi$
# vim:ts=4:sw=4$
  • cat 加引數-n 和nl工具差不多,檔案內容輸出的同時,都會在每行前面加上行號

[[email protected] ~]# cat -n /etc/bashrc
[[email protected] ~]# nl  /etc/bashrc
  • cat 可以同時顯示多個檔案的內容,比如我們可以在一個cat命令上同時顯示兩個檔案的內容;

[[email protected] ~]# cat /etc/fstab /etc/bashrc
  • cat 對於內容極大的檔案來說,可以通過管道|傳送到more 工具,然後一頁一頁的檢視;

[[email protected] ~]# cat /etc/fstab /etc/bashrc | more

5.cat 建立、連線檔案功能

  • cat 有建立檔案的功能,建立檔案後,要以EOF或STOP結束;

[[email protected] ~]# cat &gt;  ng-sec.txt  &lt;&lt; EOF  
[[email protected] ~]# cat &gt;ng-sec.txt &lt;&lt;EOF
&gt; hello
&gt; this is cat test
&gt; EOF
#說明:建立ng-sec.txt檔案

[[email protected] ~]# cat ng-sec.txt 
hello
this is cat test
  • 為剛剛建立的ng-sec.txt追加內容

[[email protected] ~]# cat &gt;&gt;ng-sec.txt &lt;&lt;EOF
&gt; This is new contents for test2
&gt; EOF
[[email protected] ~]# cat ng-sec.txt
hello
this is cat test
This is new contents for test2
# 說明:&gt;&gt;可以追加資訊到文件,可以看到已經追加了一行資訊
  • 通過cat 連線多個檔案的內容並且輸出到一個新檔案中
假設我們有ng-sec01.txt、ng-sec02.txt,需要將他們檔案內容合併後輸出到ng-sec03.txt

注意:其原理是把兩個檔案的內容連線起來,然後建立ng-sec.txt檔案,並且把幾個檔案的內容同時寫入ng-sec03.txt中。特別注意的是,如果您輸入到一個已經存在的ng-sec03.txt檔案,會把該檔案內容清空。


[[email protected] ~]# cat sir01.txt sir02.txt sir03.txt &gt; sir04.txt
[[email protected] ~]# cat ng-sec01.txt ng-sec02.txt &gt; ng-sec03.txt
[[email protected] ~]# cat ng-sec03.txt 
i am ng-sec01.txt
i am ng-sec02.txt
參考連結
runoob.com
aq1sw2的部落格

來源:https://segmentfault.com/a/1190000017766866