善用一些好用的 Linux指令以及VIM指令, 對於經常編輯與處理檔案的瑣碎工作有非常大的幫助, 並沒有非常深入的研究這些內容, 主要是紀錄一些常用的指令語法, 若有錯誤還請指正

#########
### Linux 指令
#########

[搜尋相關]

grep 尋找檔案中的字詞, 會回傳符合字詞的整行內容

Syntax: grep search_key_word /home/directory1/filename

Example: 

1. 如果搜尋的關鍵字只有一個字, 可以不加雙引號, 有特殊字元或是空格的話, 需要使用雙引號

% grep vendor_id /proc/cpuinfo

% grep "model name" /proc/cpuinfo

2. 搜尋多個關鍵字 

% grep "Total\|Free" /proc/meminfo

3. 搭配 "|" 使用進行更進一步的搜尋或是過濾的動作

% grep keyword1 /home/path/filename | grep keyword2

% ls /home/path/filename | grep keyword

4. 搜尋時不分大小寫:

% grep -i search_key /home/path/filename

5. 使用 "-c" 可以計算個數

 grep -c search_key /home/path/filename 

 其他應用

grep search_key /home/path/filename -3

% grep search_key /home/path/filename -a3


 

find 搜尋檔案或是目錄, 如果目錄底下有許多子目錄, 也會一併搜尋

Syntax: find /path/directory -name keyword

Example:

1. 搜尋單一檔案

% find /proc/ -name cpuinfo

2. 搜尋目錄

find /var/www/ -name html -type d


 

awk 擷取檔案中的字詞, 通常擷取有規律的檔案中的某個字, 像是要擷取出每一行的第3個字和第5個字

Syntax: awk '{print $number1 $number2 }'  

            awk '{printf $number}' 

# printf 和 print 差異在於是否要換行, print 會在每個擷取的文字後加入換行, printf 則是會連接在一起

Example: 

1. 要擷取的文字可以是單一個或是多個, 印出的文字也可以是另外加上想要的文字

% more /proc/cpuinfo | awk '{print $1}'

% more /proc/meminfo | awk '{print "Size: " $2}'

% grep mem /proc/meminfo | awk '{print $1}'

% ... | awk '{SUM+=$5}END{print SUM}'

  

wc 計算文字個數

wc -l 每一行只算一次, 等同於計算行數, 可用於計算關鍵字的個數

% grep keyword /path/filename | wc -l

  

sort 排序文字

sort -u 排序文字時, 重複的文字只會被保留一次

% grep keyword /path/filename | wc -l | sort -u


  

alias 設定別名

% alias h history     # h 等同於 history

unalias 取消別名設定

% unalis h

ls 列出檔案、目錄名稱

% ls /proc/*info 

vim/vi 開啟文字編輯器編輯檔案

view 以唯讀方式瀏覽檔案 

gvim 以視窗模式開啟文字編輯器

more 瀏覽檔案, 每次會翻閱一頁, 按空白鍵換頁 (檔案非常大的時候, vim 會非常花時間, 用 more 或是 less 都可以快速瀏覽檔案)

% more filename

grep "model name" /proc/cpuinfo | more

less

% less filename

tail 瀏覽檔案的最後一頁

% tail filename

cat 印出檔案全部內容, 可將多個檔案內容印出導到另一個檔案

% cat file1 file2 > total_file

pwd 顯示目前的工作路徑 (working direcory path)

date 印出日期

echo 印出文字內容, 或是環境變數

% echo TEMP

% echo $DISPLAY

setenv 設定環境變數

% setenv DISPLAY temp:0.0

history 顯示執行過、使用過的指令 

jobs 顯示目前正在背景執行的 process name, process status

ps 顯示目前正在執行的 process 狀態

% ps

kill 終止執行中的 process

% kill -9 %PROCESS_ID

bg 將執行中的程式轉換到背景執行

fg 將背景執行中的程式轉換到前景執行

chmod更改檔案或是目錄的權限

% chmod 755 filename

diff 比較兩個檔案內容, 將差異內容以文字呈現

% diff filename1 filename2

 

vimdiff 比較兩個檔案內容, 以vim的方式開啟檔案, 可以瀏覽兩個檔案的差異

 

% vimdiff filename1 filename2

 

ln 建立連結、建立捷徑

% ln -s original_path link_name  # 建立符號連結 

mkdir 建立資料夾

% mkdir directory_name

rmdir 刪除資料夾

% rmdir directory_name      # 資料夾內容若不是空的, 會無法移除

rm 刪除單一或是多個檔案、資料夾

% rm filename filename2     # 刪除檔案時會需要使用者確認

% rm filename -f  # 強制刪除檔案, 刪除時不需要使用者確認

% rm directoryname -r  # 遞迴刪除檔案, 可用於刪除資料夾

touch更新檔案的時間, 若檔案不存在則會新增檔案

% touch filename

which 尋找指令的執行位置

% which vim 

mv 移動檔案或是資料夾, 或是更改名稱 

% mv original_filename new_filename   # 更名

% mv filename ./path/filename             # 移動

sed 取代檔案中符合條件的文字, 也可以刪除檔案內符合的文字

% sed 's/word1/word2/g' -i filename 

sed 's/word1/ \n word2\n/g' -i filename       # 插入換行符號

sed '/word1/ d' -i filename 

tar 打包多個檔案, 沒有壓縮功能, 或是將 tar 檔解開

% tar -cvf new_file_name.tar files* 

tar -xvf file_name.tar

 

gzip 將檔案、資料夾壓縮/解壓縮, 

% gzip -d filename.gzip

% gzip filename

zmore 瀏覽 gzip 檔案

% zmore filename.gzip

zgrep 搜尋 gzip 檔案

% zgrep keyword filename.gzip

顯示 Linux machine 的資訊

% cat /proc/meminfo

% cat /proc/cpuinfo

顯示 machine 狀態, 像是 memory 與 CPU 使用狀況, 

% top

開啟圖檔

% eog PICTURE_NAME 

開啟PDF檔

% evince PDF_NAME 

acroread -geometry 640x480 PDF_NAME

 

 

zcat tmp.a.gz | sed -n '1p'

zcat tmp.a.gz | sed -n '1,5p'

sed -n '1,3p' FILENAME // 查看檔案內容 1~3 行

less FILENAME.gz | sed -n '1,5p' //查看 gz 檔案 1~5 行


 

#########
###  VIM 指令
#########

表示指令模式,要先輸入:再輸入指令

/ 表示搜尋模式, 要先輸入 / 在輸入要搜尋的關鍵字

沒有冒號的指令表示直接在鍵盤輸入指令

 

以下快捷鍵可以進入編輯模式, 並且有不同的功能

i 進入編輯模式後, 指標會停在原始指標位字

a 指標向右移動一個字元後, 進入編輯模式

s 刪除指標所在的字元後, 進入編輯模式

r 取代指標所在的字元

x 刪除指標所在的字元

 

ESC 可離開編輯模式, 返回瀏覽模式

 

[檔案相關]

顯示檔案名稱

:f

儲存檔案

:w

關閉檔案

:q

強制儲存/強制關閉

:w!

:q!

儲存後關閉

:wq

在同一個 VIM 視窗開啟其他檔案, 

:sp filename

vim_sp    

在一個VIM視窗內, 開啟多個檔案時, 可同時儲存或關閉

:wqa

:qa

在一個VIM視窗內, 開啟多個檔案時, 可以將指標切換到不同檔案

: ctrl+w + ctrl+w    #輸入兩次 ctrl+w, 指標會切換到下一個檔案

: ctrl+w + 上下鍵     # 搭配 上下方向件, 指標會往指定方向切換

[搜尋相關]

搜尋符合的字詞

/keyword

/keyword.*    # .*代表任意字詞

往檔案起始位置搜尋字詞

?keyword

移動到下一個符合搜尋的字詞

n   # vim 瀏覽模式下, 輸入 n

移動到前一個符合搜尋的字詞

 N (shift+n)  # vim 瀏覽模式下, 輸入 N

搜尋文字時, 將符合的字詞 highlight 

:set hlsearch

搜尋文字時, 不要將符合的字詞highlight, 取消 highlight

:nohlsearch

:noh

[編輯相關]

複製整行

Y  (shift + y) # 複製指標所在的整行

y +方向鍵 # 可搭配鍵盤上下鍵, 同時複製指標所在的行和上一行(or 下一行)

貼上複製的內容

P or p

替換指標所在的單一文字 chane word 

: cw

刪除指標所在的整行

dd  #在瀏覽模式下, 輸入dd

d + 方向鍵  # 搭配鍵盤上下鍵, 可刪除指標所在行以及上下行

只刪除指定的行數, 或是一整個段落

: 10 d          # 刪除第10行

:10, 50 d     # 只刪除第10行到第50行

同時取代多個文字

Syntax:line1, line2 s/word1/word2/g

Example:

1. 取代檔案中所有符合的關鍵字

: %s/word1/word2/g

2. 只取代第5行到第20行, 符合的文字

: 5,20 s/word1/word2/g 

3. 每行字首插入文字

: % s/^/word1/g 

4. 每行字尾插入文字

: % s/$/word1/g

5. 行號可用其他方式表示, 像是 "." 代表指標所在的行號, $ 代表最後一行

:.,$ s/word1/word2/g

在文字編輯器中開啟並編輯檔案

:fg filename

[選取/標記相關 (VISUAL BLOCK)]

在vim文字編輯器中, 透過ctrl+v可以選取一個字詞或是許多字詞, 可以複製所選取的字詞或是針對字詞進行編輯

 

[其他]

顯示行號

: set nu

取消行號

:set nonu

當一行文字內容太多時, vim 會分段顯示

:set wrap

取消分段顯示, 太長的內容會看不到

:set nowrap

移動到某一行

: line_number     # 也可以在瀏覽模式下直接輸入行號

將指標移動到下一個字詞, 以空白鍵當作分割

w          # 在瀏覽模式下, 輸入w 

將指標移動到前一個字詞, 以空白鍵當作分割 

b          # 在瀏覽模式下, 輸入b 

移動到前一個或一個括弧所在的位置

 % (shift + 5)   #將指標放在其中一個括弧, 輸入 shift+5 切換到另一個配對的括弧, 常用於 trace code

開啟指標所在的檔案

gf   (鍵盤直接敲gf, 不需要切換成指令模式: go to file)

回到前一個檔案 (用gf開啟檔案後, 回到前一個檔案)

:bd

標記行號, 如此一來就不用敲行號, 可用代號取代

m a    # vim 瀏覽模式下, 在第十行敲依序輸入 m a, 把這行標記為 a

m b    # vim 瀏覽模式下, 在第二十行依序輸入 m  b, 把這行標記為 b

: 'a, 'b s/word1/word2/g                 #    <=等同於=>  : 10, 20 s/word1/word2/g

: 'a, 'b co .  # 將a行到b行的內容複製到指標所在的位置

拼字檢查 

: set spell


 

DOS 指令

dir 顯示路徑底下的檔名、資料夾名稱, 相似於於 linux ls 指令

type 印出檔案內容, 相似於 linux cat 指令 


 

列出來的是我自己比較常用的指令, 如果有問題或是不曉得相關指令的話, 還請留言發問~

, , , ,

Chibli 發表在 痞客邦 PIXNET 留言(0) 人氣()