1. 程式人生 > >Linux文件內容查閱

Linux文件內容查閱

ace word tac 管線 ner test 完整 占用 key

直接查閱一個文件的內容:cat/tac/nl命令

cat (concatenate)

# cat [-AbEnTv]

選項與參數:

-A :相當於 -vET 的整合選項。可列出一些特殊字符而不是空白而已;

-b :列出行號。僅針對非空白行做行號顯示,空白行不標行號;

-E :將結尾的斷行字節 $ 顯示出來。

-n :列印出行號。連同空白行也會有行號,與 -b的選項不同;

-T :將 [tab] 按鍵以 ^I 顯示出來。

-v :列出一些看不出來的特殊字符

範例一:查閱 /etc/issue 這個文件的內容

# cat /etc/issue

CentOS release 5.3 (Final)

Kernel \r on an \m

範例二:承上題,假設還要加印行號呢

# cat -n /etc/issue

1 CentOS release 5.3 (Final)

2 Kernel \r on an \m

3

假設不想要編排空白行的行號,能夠使用『cat -b /etc/issue』。自己測試看看

範例三:將 /etc/xinetd.conf 的內容完整的顯示出來(包括特殊字節)

# cat -A/etc/xinetd.conf

tac (反向列示)

# tac /etc/issue

Kernel \r on an \m

CentOS release 5.3 (Final)

nl (加入行號列印)

# nl [-bnw] 文件

選項與參數:

-b :指定行號指定的方式,主要有兩種:

-b a :表示不論是否為空行,也相同列出行號(類似 cat -n)。

-b t :假設有空行,空的那一行不要列出行號(默認值);

-n :列出行號表示的方法,主要有三種:

-n ln :行號在螢幕的最左方顯示。

-n rn :行號在自己欄位的最右方顯示,且不加 0 ;

-n rz :行號在自己欄位的最右方顯示。且加 0 ;

-w :行號欄位的占用的位數。

範例一:用 nl 列出 /etc/issue 的內容

# nl /etc/issue

1 CentOS release 5.3 (Final)

2 Kernel \r on an \m

註意看,這個文件事實上有三行,第三行為空白(沒有不論什麽字節),由於他是空白行。所以 nl 不會加上行號。假設確定要加上行號。能夠這樣做:

# nl -b a /etc/issue

1 CentOS release 5.3 (Final)

2 Kernel \r on an \m

3

那麽假設要讓行號前面自己主動補上 0 呢?可這樣

# nl -b a -n rz/etc/issue

000001 CentOS release 5.3 (Final)

000002 Kernel \r on an \m

000003

自己主動在自己欄位的地方補上 0 了,默認欄位是六位數。假設想要改成 3 位數?

[[email protected] ~]# nl -b a -n rz -w 3 /etc/issue

001 CentOS release 5.3 (Final)

002 Kernel \r on an \m

003

變成僅有 3 位數了。

可翻頁查閱:moreless

# more/etc/man.config

#

# Generated automatically from man.conf.inby the

# configure script.

#

# man.conf from man-1.6d

....(中間省略)....

--More--(28%) <== 重點在這一行!

你的光標也會在這裏等待你的命令

空白鍵 (space):代表向下翻一頁;

Enter :代表向下翻『一行』;

/字串 :代表在這個顯示的內容其中,向下搜尋『字串』這個keyword;

:f :立馬顯示出檔名以及眼下顯示的行數;

q :代表立馬離開 more。不再顯示該文件內容。

b [ctrl]-b:代表往回翻頁,只是這動作僅僅對文件實用,對管線無用。

less (一頁一頁翻動)

空白鍵 :向下翻動一頁。

[pagedown]:向下翻動一頁;

[pageup] :向上翻動一頁;

/字串 :向下搜尋『字串』的功能;

?

字串 :向上搜尋『字串』的功能;

n :反復前一個搜尋 ( / ?

有關!

)

N :反向的反復前一個搜尋 ( / ? 有關!)

q :離開 less這個程序。

數據提取

head (取出前面幾行)

# head [-n number] 文件

選項與參數:

-n :後面接數字,代表顯示幾行的意思

# head /etc/man.config

默認的情況中。顯示前面十行,若要顯示前 20 行,就得要這樣:

# head -n 20 /etc/man.config

範例:假設後面100行的數據都不列印。僅僅列印/etc/man.config的前面幾行,該怎樣是好?

# head -n -100/etc/man.config

-n 選項後面的參數假設接的是負數,比如上面範例的-n -100時。代表列前的全部行數。 但不包含後面100行。

舉例來說。/etc/man.config共同擁有141行,則上述的命令『head -n -100 /etc/man.config』 就會列出前面41行,後面100行不會列印出來了。

tail (取出後面幾行)

# tail [-n number] 文件

選項與參數:

-n :後面接數字,代表顯示幾行的意思

-f :表示持續偵測後面所接的檔名,要等到按下[ctrl]-c才會結束tail的偵測

# tail/etc/man.config

默認的情況中。顯示最後的十行,若要顯示最後的 20 行,就得要這樣:

# tail -n 20/etc/man.config

範例一:假設不知道/etc/man.config有幾行。卻僅僅想列出100行以後的數據時?

# tail -n +100/etc/man.config

範例二:持續偵測/var/log/messages的內容

# tail -f/var/log/messages

<==要等到輸入[crtl]-c之後才會離開tail這個命令。

非純文字文件: od

# od [-t TYPE] 文件

選項或參數:

-t :後面能夠接各種『類型(TYPE)』的輸出,比如:

a :利用默認的字節來輸出。

c :使用 ASCII 字節來輸出

d[size] :利用十進位(decimal)來輸出數據,每一個整數占用 size bytes ;

f[size] :利用浮點數值(floating)來輸出數據,每一個數占用 size bytes ;

o[size] :利用八進位(octal)來輸出數據。每一個整數占用 size bytes ;

x[size] :利用十六進位(hexadecimal)來輸出數據,每一個整數占用 size bytes ;

範例一:請將/usr/bin/passwd的內容使用ASCII方式來展現!

# od -t c/usr/bin/passwd

0000000 177 E L F 001 001 001 \0 \0 \0 \0 \0 \0 \0 \0 \0

0000020 002 \0 003 \0 001 \0 \0 \0 260 225 004 \b 4 \0 \0 \0

0000040 020 E \0 \0 \0 \0 \0 \0 4 \0 \0 \a \0 ( \0

0000060 035 \0 034 \0 006 \0 \0 \0 4 \0 \0 \0 4200 004 \b

0000100 4 200 004 \b 340 \0 \0 \0 340 \0 \0 \0 005 \0 \0 \0

.....(後面省略)....

最左邊第一欄是以 8 進位來表示bytes數。以上面範例來說。第二欄0000020代表開頭是

第 16 個 byes (2x8) 的內容之意。

範例二:請將/etc/issue這個文件的內容以8進位列出儲存值與ASCII的對比表

# od -t oCc/etc/issue

0000000 103 145 156 164 117 123 040 162 145154 145 141 163 145 040 065

C e n t O S r e l e a s e 5

0000020 056 062 040 050 106 151 156 141 154051 012 113 145 162 156 145

. 2 ( F i n a l ) \n K e r n e

0000040 154 040 134 162 040 157 156 040 141156 040 134 155 012 012

l \ r o n a n \ m \n \n

0000057

如上所看到的,能夠發現每一個字節能夠相應到的數值為何。比如e相應的記錄數值為145。轉成十進位:1x8^2+4x8+5=101。

改動文件時間或建置新檔: touch

linux底下事實上是有三個基本的變動時間

modification time (mtime):
當該文件的『內容數據』變更時,就會升級這個時間。內容數據指的是文件的內容,而不是文件的屬性或權限喔!

status time (ctime):
當該文件的『狀態 (status)』改變時,就會升級這個時間,舉例來說,像是權限與屬性被更改了,都會升級這個時間啊。

access time (atime):
當『該文件的內容被取用』時,就會升級這個讀取時間 (access)。

舉例來說,我們使用 cat 去讀取 /etc/man.config 。就會升級該文件的 atime 了。

# ls -l/etc/man.config

-rw-r--r-- 1 root root 4617 Jan 6 2007/etc/man.config

# ls -l --time=atime/etc/man.config

-rw-r--r-- 1 root root 4617 Sep 25 17:54/etc/man.config

# ls -l --time=ctime/etc/man.config

-rw-r--r-- 1 root root 4617 Sep 4 18:03 /etc/man.config

在默認的情況下,ls 顯示出來的是該文件的 mtime ,也就是這個文件的內容上次被更動的時間。

# touch [-acdmt] 文件

選項與參數:

-a :僅修訂 accesstime。

-c :僅改動文件的時間,若該文件不存在則不創建新文件;

-d :後面能夠接欲修訂的日期而不用眼下的日期,也能夠使用 --date="日期或時間"

-m :僅改動 mtime ;

-t :後面能夠接欲修訂的時間而不用眼下的時間,格式為[YYMMDDhhmm]

範例一:新建一個空的文件並觀察時間

# cd /tmp

# touch testtouch

# ls -l testtouch

-rw-r--r-- 1 root root 0 Sep 25 21:09testtouch

註意到,這個文件的大小是 0 。在默認的狀態下,假設 touch 後面有接文件,則該文件的三個時間 (atime/ctime/mtime) 都會升級為眼下的時間。若該文件不存在,則會主動的創建一個新的空的文件。

範例二:將 ~/.bashrc 復制成為 bashrc,如果復制全然的屬性,檢查其日期

# cp -a ~/.bashrcbashrc

# ll bashrc; ll--time=atime bashrc; ll --time=ctime bashrc

-rw-r--r-- 1 root root 176 Jan 6 2007bashrc <==這是 mtime

-rw-r--r-- 1 root root 176 Sep 25 21:11bashrc <==這是 atime

-rw-r--r-- 1 root root 176 Sep 25 21:12bashrc <==這是 ctime

範例三:改動案例二的 bashrc 文件,將日期調整為兩天前

# touch -d "2days ago" bashrc

# ll bashrc; ll--time=atime bashrc; ll --time=ctime bashrc

-rw-r--r-- 1 root root 176 Sep 23 21:23bashrc

-rw-r--r-- 1 root root 176 Sep 23 21:23bashrc

-rw-r--r-- 1 root root 176 Sep 25 21:23bashrc

範例四:將上個範例的 bashrc 日期改為 2015/09/15 2:02

# touch -t 1509150202bashrc

# ll bashrc; ll--time=atime bashrc; ll --time=ctime bashrc

-rw-r--r-- 1 root root 176 Sep 15 2015 bashrc

-rw-r--r-- 1 root root 176 Sep 15 2015 bashrc

-rw-r--r-- 1 root root 176 Sep 25 21:25bashrc

註意看看,日期在 atime 與 mtime 都改變了。可是 ctime 則是記錄眼下的時間。

不管怎樣, touch 這個命令最常被使用的情況是:

創建一個空的文件;

將某個文件日期修訂為眼下 (mtime 與 atime)


轉載請註明出處:http://blog.csdn.net/lsh_2013/article/details/46336631

Linux文件內容查閱