Linux---使用文字檔案
使用Vi和Vim編譯文字
開始使用vi vi /tmp/test
新增文字 當完成文字輸入,按ESC退出編輯當輸入一個:進入ex模式,需要輸入兩次ESC;a新增命令,A在命令結束處新增,i插入命令(游標左邊),I在命令開始前,o當前行之下開新行,O當前行上開新行。
在文字中移動
刪除、複製和更改文字 d<?>刪除一些文字,c<?>更改一些文字,y<?>複製一些文字。dw刪除(d)當前游標位置之後的一個單詞(w)。db刪除當前游標位置之前的一個單詞。dd刪除整個當前行。c$更改從當前字元開始到當前行末尾的字元,並進入輸入模式。c0更改從前一個字元到當前行開頭的字元,並進入輸入模式。cl刪除當前字母,並進入輸入模式。cc刪除當前行,並進入輸入模式。yy將當前行復制到緩衝區。y)將游標右邊的當前句子複製到緩衝區。y}將游標右邊的當前段落複製到緩衝區。3dd從當前行開始刪除三行。3dw刪除接下來的三個單詞。5cl更改接下來的5個字母。12j向下移動12行。5cw刪除接下來的5個單詞。4y)複製接下來的4個句子。
貼上文字 P將文字放置到左邊,或上一行。p右邊。或下一行。
重複命令 句點(.),eg:將游標移動名稱joe的開頭,然後輸入cw和Jim,從而將Joe改為Jim,隨後在檔案中搜索Joe的下一次出現,如果找到,將游標置於該名稱的開頭,並單擊一個句點。此時Joe改為Jim。
退出vi, ZZ將當前更改儲存到檔案,並退出vi。:w儲存當前檔案,但不退出vi。:wq工作過程與ZZ命令相同。:q退出當前檔案,但只有在沒有未儲存的更改內容時該命令起作用。:q!退出當前檔案,但不儲存對檔案所做的更改。Esc返回命令模式。u單擊u撤銷前一次所做的更改。Ctrl+R撤銷先前的撤銷命令。:!command,執行shell命令。Ctrl+G顯示該檔名。
在檔案中跳過 ctrl+f向前翻頁,Ctrl+b向後翻頁,Ctrl+d 一次向前翻半頁。Ctrl+u向後翻半頁。G轉到檔案的最後一行。1G轉到第一行。35G轉到任意行號。
搜尋文字 若想要搜尋檔案中某一文字的下一次或者上一次,可以使用反斜槓(/)或者問號(?),/hello向前搜尋單詞,?goog向後搜尋,/The.*foot向前搜尋包含單詞The並在此之後又包含單詞foot的行。?[pP]rint,向後搜尋print或Print。
使用ex模式 :g/Local 搜尋單詞Local,並列印檔案中每次出現該單詞的所在行。:s/Local/Remote將當前行中首次出現的單詞Local替換為Remote。 :g/Local/s//Remote將檔案每一行中首次出現的單詞Local替換為Remote。:/Local/s/Remote/g將檔案中所有出現的單詞Local替換為Remote。:g/Local/s//Remote/gp將檔案中所以出現的單詞Local替換為Remote,然後列印每一行。
查詢檔案
使用Local命令根據名稱查詢檔案 相對於find命令,locate命令查詢檔案的速度更快,因它只搜尋的是一個數據庫而不是整個檔案系統,locate命令無法查詢自上一次資料庫建立以來新新增到系統中的任何檔案。而且並不是所有的檔案都儲存在資料庫,通過選擇掛載型別、檔案型別、檔案系統型別以及掛載點就不會 存入資料庫。locate -i不論大小寫都會發現。find使用-name選項查詢檔名。
find命令,搜尋檔案系統。作為普通使用者使用find命令無法找到root使用者讀取的檔案,而且將會產生錯誤命令,在命令列末尾加入以下程式碼 2>/dev/null,將標準錯誤定向到/dev/null。find -ls列印一個與每一個檔案相關的長清單。
根據檔名查詢檔案 -name -iname,eg:find /etc -name passwd;find /etc -iname ‘*passwd*'
根據大小查詢檔案 eg:find /usr/share/ -size +10M find /mostlybig -size -1M find /bigdata -size +500M -size -5G -exex du -sh {} \;
根據使用者查詢檔案 搜尋特定的所有者(-user)或組(group),通過使用not和-or,可以優化對於特定使用者和組相關聯檔案的搜尋。 eg:find /home -user chris -ls find /home -user chris -or user joe -ls find /home -not -user root -ls
根據許可權查詢檔案 是一種找到系統檔案中安全問題或者發現訪問問題的極好方法。當在chmod命令中使用數字或者字母更改檔案許可權之後,可以在find命令中使用-perm選項,從而根據數字或者字母找到檔案。eg:find /bin -perm 755 -ls
根據日期和時間查詢檔案 搜尋一定天數或分鐘數內容或者元資料。 time(-atime、-ctime、-mtime)和min(-amin、-cmin、-mmin),eg:find /etc/ -mmin -10(十分鐘內被更改的檔案),find /bin -ctime -3(三天內是否),find /var -atime +300(300多天)
在查詢檔案時使用not和or find /var -user joe -not -group joe -ls(搜尋被使用者joe所擁有卻沒有被分配給組joe的檔案)。
查詢檔案和執行命令 find命令中的其中一個最強大的功能是能夠找到任何檔案上執行命令。通過-exec選項可以在每一個找到的檔案上執行命令。使用-ok選項則會在每個匹配的檔案上停留,並詢問是否想要在檔案上執行命令。eg:find [options] -exec command {} \;(\和;都是比加的,一組{}表示find查找出的檔名);find /usr -size +5M -exec du{} \; |sort -nr (du列出檔案的大小) find /var -user joe -ok mv {} /tmp/joe/ \;
使用grep命令在檔案中搜索 grep搜尋單個檔案或者遞迴搜尋整個目錄結構。-i區分帶小寫,-v查詢不包含所指定文字字串的行,-r遞迴搜尋。為便於在每行中突出顯示文字root,可以新增--color選項(eg:grep -ri --color root/etc/sysconfig)
要在命令的輸出中搜索某一文字,可將該輸出傳送到grep命令,eg:ip addr show |grep inet(使用ip命令輸出了包括字串inet的IP地址)