.Net程序員學習Linux(二)

本次知識點:遞歸命令符,wc命令,文檔編輯器 vi的簡單使用,文本經常使用操做命令,find查詢文件命令,grep匹配文本中對應的關鍵字

 

 

遞歸命令符

遞歸對於程序猿來講不默認,常常用於級聯關係,一層套一層直達最後一層,在linux的命令中,例如 ls rm mv等等均可以遞歸,   只須要在後面加上-R 便可進行遞歸操做linux

 

計算文件行數,字節數的wc命令

wc命令用來打印文件的文本行數、單詞數、字節數等.less

[root@localhost etc]# wc krb5.conf      ----->統計出該文件中的 行數 單詞數 字節數編輯器

獲得的結果是 22  47 449 krb5.conf測試

[root@localhost etc]# wc -l  krb5.conf      ------>加上-l則是數行數,加上-c則是字節數命令行

能夠利用wc來統計一下目錄中有多少個文件遞歸

[root@localhost etc]# ls | wc – l  ------->計算出當前目錄下的文件數
216文檔

-------------------------------利用wc統計------------------------------------字符串

[root@localhost ~]# ls -R  directory2/directory3 | less
directory2/directory3:
de123
er
ew
ewfds
qwes
qyv
tytr
[root@localhost ~]# ls -R  directory2/directory3 | wc -l
8容器

利用wc統計,會把當前的文件目錄也統計進去百度

 

遞歸複製目錄

[root@localhost ~]# cp -R directory2 cydirectory2   ---->把directory2 裏面文件複製到cydirectory2中(我一直覺得連directory2也包含在其中,其實只是裏面的文件而已)

普通的複製會根據當前運行的用戶來建立權限,若是是須要想保持權限的不變,則須要加上 –p ,則擁有者是不會變化的

 

文檔編輯器 vi

vi N多稱之爲編輯器之神,要打開一個文件並編輯它,則只須要駛入 vi file1 則能夠進入到該文件進行編輯

vi有兩種狀態, 命令狀態   與    編輯狀態    ,剛進入的時候是命令狀態.     

由命令狀態進入編輯狀態 則 按 i  看到左下方變成 insert 則進入了編輯狀態,還有 a A  i I o O s S均可以進入編輯狀態,可是每種命令都帶有其特定的操做模式,對於我這種初學者,就記住其中 一種就能夠了,其他的以後再慢慢了解吧

由編輯狀態進入命令狀態 則是按 esc 按鈕,看到左下方的 insert消失了,則是進入了命令行狀態

---------------------選擇又命令模式進入編輯模式的幾種不一樣的方式--------------------------------

a:從光標所在之處的後面插入新的字符,插入時,插入處後面的字符會隨着新增字符日後移動。

A:從光標所在行的最後處開始加入新的字符。

i:從光標所在之處的前面插入新的字符,插入時,插入處後面的字符會隨着新增字符日後移動。

I:從光標所在行的第一個非空字符前面開始加入新的字符。

o:在光標所在行的下面新增一個空行,並進入插入狀態。

O:在光標所在行的上面新增一個空行,並進入插入狀態。

s:刪除光標所在之處的字符,並進入插入狀態。

S:刪除光標所在的行,並進入插入狀態。

--------------------------------在命令模式刪除字符----------------------------------------------------

x:刪除當前光標的字符

dd:刪除當前光標正行

----------------------------------在命令行中恢復--------------------------------------------

u:至關於平時window下的Ctrl +z  撤銷

ctrl+r:至關於 window 的ctry +y   恢復

-------------------------------替換字-----------------------------------------

R:進入替代狀態,替換多個字符,直至按 Esc 鍵退出替換,左下方會出現 replace

--------------------保存,退出-------------------

:w   ---------->若是是舊文件,保存爲當前目錄則直接按回車,,若是是另存爲 則加上 新的文件名

還有各類各樣的快捷方式

:q ----------->退出當前vi模式,若是是改變則保存不了,可使用 q! 強行退出,不保存

:wq --------->先保存再退出

 

--------------------------搜索文本-------------------------

/:進入搜索模式,輸入須要搜索的字符 , 而後搜索成功的就會變色了,點擊n能夠搜索下一個, N就是上移  

?:進入搜索模式,不過是往上搜

f:點擊f後,再按一個字符,則把光標移動到最近當前光標的所輸入的那個字符

 

部分本文操做的命令

使用管道命令符 | ,便可

more / less 命令

可是若是一個文件裏面的嵌套的文件好多,那麼若是運行 ls –R 那麼屏幕就會不斷閃動,打印出文件夾中的信息,咱們人類確定看不完啊,因此能夠把其輸出的放到一個容器中,這個容器爲more 或者less ,more是不能爲往上翻的,只能下翻,可是less則能夠上翻或者下翻,命令:ls –R|less

若是在一開始沒有放到容器中,那麼可使用Ctrl+c中止打印.

使用 less -N則能夠連行數也一併輸出

tee 多重傳送

根目錄下的dev的文件是對應管理全部硬件設備的,如鼠標,打印機等

[root@localhost ~]# cat install.log | tee  /dev/1p0 --------->使用tee命令,則能夠是打印的同時,把文件的內容輸出大打印機設備(假設dev/1p0)對於打印設備

 

pr 格式化輸出

pr命令可處理其餘命令產生的輸出的格式

-<數字>:表示分欄,分紅數字的欄數

-W:每行字符數,缺省是72。

-l:每頁的行數,缺省爲66。

-h <字符串>:用指定的字符串代替文件名稱做爲題頭

[root@localhost ~]# cat install.log | pr -2 -h"aaaa" –l20  ------->分2欄, 標題爲aaaa 每頁20行

 

head和tail輸出頭/尾 指定行數

有時候咱們只關心文本的頭尾的部分,那麼能夠指定打印這些頭與尾則可使用命令head或者tail

[root@localhost ~]# tail -20 install.log    ---->輸出 install.log文件的尾20行

[root@localhost ~]#  head -20 install.log   ---->輸出 install.log文件的頭20行

把內容另存爲到另外一個文件中,

[root@localhost ~]#  head -20 install.log > newfile   ---->把頭20行另存爲newfile的文件中

[root@localhost ~]# tail -20 install.log >> newfile      ----->把尾20行添加到newfile文件的尾部

 

注意:>是重定向輸出到指定文件,若是文件中有內容,則裏面的內容將被覆蓋,>>則是添加到文件的尾端

 

diff比較兩個文件的不一樣

[root@localhost ~]# diff install.log newfile    --->比較這兩個文件的不一樣

 

------------------------------------打印的信息--------------------------------------

1c1
< Installing libgcc-4.4.7-16.el6.x86_64
---
> qqqqqqqqqqqqqqqqnstalling libgcc-4.4.7-16.el6.x86_64

--------------------------------------------------------------------------------------

1c1表示   install.log文件中的第一行 與 newfile的第一行 進行了修改了操做,

a、d和c分別表示新增、刪除和修改

 

cmp逐個字符比較(不限於文本文件)

具體用法百度一下(我這裏就偷懶不測試了....)

 

find查找文件

find命令的組成: find 搜索的初始目錄 搜索的方式(條件)  [執行的操做]

搜索的初始目錄:表示從什麼目錄開始進行搜索,若是有多個目錄能夠用空格分開或者使用通配符

-name 經過名字搜索,可使用通配符進行模式操做 ,要用雙引號括着

-iname 忽略大小寫

-tpye 根據文件類型刪除 f:通常文件  d:目錄文件  c:字符設備文件  l:符號連接

-link<數量> :根據文件連接數進行檢索

-size<數目>kmg  :根據文件的大小來篩選,須要寫上單位

-user <擁有者帳號名稱>根據文件的擁有者進行檢索。

以上這些都是經常使用的檢索方式,固然還有不少,能夠搜一搜,配合邏輯運算符能夠產生更多的檢索條件

邏輯:若是有多個條件則在篩選條件中使用\(     \)    \)轉義字符       其中 

and  與

-o表明or  

! 表明非

執行操做:

–print 在屏幕中輸出

-exec <命令> \;:執行<命令>,若是命令中要使用檢索出的文件名稱的話,用符號「{}」來代替,系統會在發現「{}」的地方,將檢索出來的文件名稱傳遞給該命令。結尾固定爲\;

​[root@localhost ~]# find / -name "*.bak" -exec rm {} \;    --->找出 .bak後綴的文件,並刪除

[root@localhost ~]# find / \( -name "a*" -o -name "*a" \) -print↙  --->包含或者的操做

 

grep尋找文件中包含某關鍵字的文件

grep "<關鍵字>" 目錄    ---->可使用正則 進行配對

 

這周主要是一些文本的處理,例如vi的使用,以及文件的一些操做.

相關文章
相關標籤/搜索