linux cat 命令學習

cat  命令學習筆記:

# 一個參考的例子


part 1:  查看cat 命令的幫助:

$man cat

CAT(1)                               User Commands                               CAT(1)


NAME
       cat - concatenate files and print on the standard output
...


part 2:  cat 命令常用參數的用法舉例:

以下參數基於一個完整的例子:
# filename: test.py
import pymongo

conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])
db = conn.test
for u in db.users.find():
    print u


param 1:

-A, --show-all
              equivalent to -vET
# 一組合命令參數, 相當於 vET

$ cat -A test.py
import pymongo$
$
conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])$
db = conn.test$
for u in db.users.find():$
    print u$


param 2:

-b, --number-nonblank
              number nonempty output lines
# 所有非空行顯示行號

$ cat -b test.py
     1  import pymongo

     2  conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])
     3  db = conn.test
     4  for u in db.users.find():
     5      print u


param 3:

 -e     equivalent to -vE
# 一組合命令參數, 相當於 vE

$ cat -e test.py
import pymongo$
$
conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])$
db = conn.test$
for u in db.users.find():$
    print u$


param 4:

-E, --show-ends
              display $ at end of each line
# 在每行末尾顯示$符號

$ cat -E test.py
import pymongo$
$
conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])$
db = conn.test$
for u in db.users.find():$
    print u$

param 5:

-n, --number
              number all output lines
# 顯示所有行的行號

$ cat -n test2.py
     1  import pymongo
     2
     3          conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])
     4  db = conn.test
     5  for u in db.users.find():
     6          print u

param 6:

 -s, --squeeze-blank
              suppress repeated empty output lines
# 壓縮重複出現的空行,即如果文件中有兩個空行,使用 -s 參數後之後顯示一個空行。 舉例: 在 test.py  中 import pymongo 後再添加一個空行,打印的結果仍然如下

$ cat -s  test.py
import pymongo

conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])
db = conn.test
for u in db.users.find():
    print u


patam 7:

-t     equivalent to -vT
# 一組合命令參數, 相當於 vET

param 8:

-T, --show-tabs
              display TAB characters as ^I
# 將文檔中使用 table 鍵的地方都用 ^I 做標記, 使用了多個table, 就有多個 ^I    (其實,個人覺得這個很有用,尤其在 table 和 space 混合使用出現問題的時候,方便查看table鍵的使用) 舉例:在 "conn = xxxxx" , 和 ”print u “所在行首分別插入兩個和一個table, 結果如下


$ cat -t  test2.py
import pymongo

^I^Iconn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])
db = conn.test
for u in db.users.find():
^Iprint u


param 9:

 -u     (ignored)
# 不知道這個東東是什麼意思,忽略所有的參數原樣輸出? 還是壓根就忽略這個參數?真的不知道 # todo

$ cat -u test.py
import pymongo

conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])$
db = conn.test$
for u in db.users.find():
    print u


param 10:

-v, --show-nonprinting
              use ^ and M- notation, except for LFD and TAB


# 在ue 中編輯生成的文件, 會有^M,  使用 cat -v, 可以將這些符號顯示出來。 其實他們就是一些換行符號。 在vi裏^M由Ctrl +v +m組合生成。 舉例: 在UltraEditor 編輯一個文件ue_test, 移到 ubuntu , 輸出效果如下:

$ cat -v ue_test
hi,UE:^M
        this is just for test ^M.^M
        you will be transfered to jia-svn.^M
        ^M
-- jiaxiaolei^M


part 3:  cat 命令操作舉例

instance 1:

cat -n filename1  >  filename2     把 filename1 的檔案內容加上行號後輸入 filename2 這個文件裏 
舉例:
$ cat -n test.py  > test_2.py
$ cat test_2.py
     1  import pymongo
     2
     3  conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])
     4  db = conn.test
     5  for u in db.users.find():
     6      print u

instance 2:
cat -b filename1 fileanme2  >>  filename3    把 filename1 和 filename2 的檔案內容加上行號(空白行不加)之後將內容附加到 filename3 裏。 

舉例: 


$ cat -b test.py  test_2.py  >> test_3.py
$ cat test_3.py
     1  import pymongo
     2  conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])
     3  db = conn.test
     4  for u in db.users.find():
     5      print u
     6       1  import pymongo
     7       2
     8       3  conn = pymongo.Connection(host=["10.64.77.246:27017","10.64.77.205:27017","10.64.77.206:27017"])
     9       4  db = conn.test
    10       5  for u in db.users.find():
    11       6      print u

instance 3:

cat /dev/null > /etc/test.txt   清空/etc/test.txt檔案內容 
清空文件的內容, /dev/null 爲系統提供的一個空的文件(原理上是把一個空的文件輸出重定向到一個非空文件。如果自己新建一個空文件 a.txt ,在console 模式下執行 $cat a.txt > filename, 也可以將filename 置空) 

$ cat /dev/null  > test_3.py
$ cat test_3.py
$

part 4: cat 的主要功能:go

1. 一次顯示整個文件。$ cat   filename ~,y6;e
2. 從鍵盤創建一個文件。$ cat  >  filename  0#!7
#只能創建新文件,不能編輯已有文件. :z)
3. 將幾個文件合併爲一個文件。 $cat   file1   file2  > file"t?=

part 5: cat 命令和vim命令的主要 區別:
vim 是一個強大的文件編輯工具。核心在”編輯”。既然是編輯, 顯示文件內容自然是必須的,所以 vim filename 也可以查看文件內容;
cat 客觀來說,是一個“顯示”命令,把文件內容串接然後顯示在屏幕中

具體來說,就是只要是一文件(linux 中一切皆是文件),不管其內容爲何, cat 都可以把它顯示在 屏幕上。 而vim 卻沒有這麼“單純”,它會用自己的一套標準去判斷。比如:

$ sudo vim /dev/disk/by-id/ata-VBOX_HARDDISK_VBf25c3a20-b91d6dcf
這樣的情況, vim 是無法查看的, 提示   “"/dev/disk/by-id/ata-VBOX_HARDDISK_VBf25c3a20-b91d6dcf" is not a file ”

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