Linux命令行和Shell高效率使用方法
Ctrl+R快速搜索history
Ctrl+P顯示上一條命令
快速執行一條history命令:!!/!-number
=========================================
快速進入某些目錄
鍵入cd~可直接進入用戶的home目錄;
鍵入cd-可進入上一個目錄。
export CDPATH=.:~:/etc:/usr/local
mkdir -p /***/***/***/
alias cd3="cd ../../../"
==========================================
一次運行多個命令
在一個命令行中還可以置入多個命令,用分號將各個命令隔開
$last;exit
$make && make install
==========================================
命令行下快捷鍵
Ctrl+a:把光標移到行首。
Ctrl+e:把光標移到行尾。
Ctrl+l:清除終端。該快捷操作與在命令行鍵入clear作用相同。
Ctrl+d:從Shell提示中註銷並關閉,使用該快捷鍵就不必鍵入exit
Ctrl+u:刪除光標至行首的所有字符,使用這一快捷操作可以清除從光標處到行首的字符
Ctrl+K:刪除從光標到行末所有字符。
Ctrl+t:新建屏幕。
Alt+1到9:選擇屏幕。
Ctrl + F :向前移動一個字符。
Ctrl + B :向後移動一個字符
Alt + F : 向前移動一個單詞。
Alt + B : 向後移動一個單詞。
==========================================
在文件裏查找
grep -rlI '\<main' .
find -type f -name *.java -exec grep -l '\<main' {} \;
------------------------------------------------------------
快速的建立一個文件
cat >> filename ,輸入一些內容然後按Ctrl-d結束輸入。
----------------------------------------------------------------
將文本文件中DOS換行符號轉化爲UNIX的換行符號
tr -s "\r" "\n" <inputfile
tr -s "\r" "\n" <inputfile >outputfile
當然你使用vim編輯文件時,vim也提供文件轉換功能
整個文件大小寫轉換
tr a-z A-Z < **.txt
tr A-Z a-z < **.txt
========================================
Shell 腳本
$0爲程序名稱,$1爲第一個參數,$2爲第二個參數,依次類推,直到$9爲第九個參數。
特殊變量$#測試執行腳本時包含的命令行參數個數。
變量$*將命令行中提供的所有參數作爲一個單詞處理,它將多個參數看成 一個參數。
變量$@將命令行中提供的所有參數作爲同一個字符串中的多個單詞處理。
shift命令能夠改變命令行參數的相對位置。默 認將每個參數變量左移一個位置
使用-t指定一個計時器,計時數滿還未輸入,read返回一個非0的退出狀態。
使用-n指定輸入的字符個數,輸入達到預定數目時,就自動結束輸入
使用-s使輸入不顯示在終端(例如輸入密碼)
shell 調試 set -xv
=====================================
dstat & sar
iostat, vmstat, ifstat 三合一的工具,用來查看系統性能。
官方網站:http://dag.wieers.com/rpm/packages/dstat/
你可以這樣使用:
alias dstat='dstat -cdlmnpsy'
=====================================
vim 命令:
查找一個字符:fx
重複上次find: ;
重複執行上次:.
w 下一個單詞開始字符
e 下一個單詞結束字符
b 上一個單詞開始字符
H M L 目前屏幕的第一行,中間行,最後一行
gg G 文件的第一行和最後一行
=============================
拷貝到指定寄存器:yt{標識符}
Ctrl + r{register}調出寄存器的值
分割窗口:split vsplit
超級自動補全:ctrl-N
轉到一個變量定義的位置: gd(文件) gD(全局)
快速查詢命令 :K 2K
匹配花括號:%
選取標誌符的內容:va{ vit vi{
修改標示符的內容:ci{標識符}
刪除標誌符的內容:di"
刪除指定行前的內容::10,20g/^$/d
刪除
ctrl + d 刪除光標所在位置上的字符相當於VIM裏x或者dl
ctrl + h 刪除光標所在位置前的字符相當於VIM裏hx或者dh
ctrl + k 刪除光標後面所有字符相當於VIM裏d shift+$
ctrl + u 刪除光標前面所有字符相當於VIM裏d shift+^
ctrl + w 刪除光標前一個單詞相當於VIM裏db
ctrl + y 恢復ctrl+u上次執行時刪除的字符
ctrl + ? 撤消前一次輸入
alt + r 撤消前一次動作
alt + d 刪除光標所在位置的後單詞
移動
ctrl + a 將光標移動到命令行開頭相當於VIM裏shift+^
ctrl + e 將光標移動到命令行結尾處相當於VIM裏shift+$
ctrl + f 光標向後移動一個字符相當於VIM裏l
ctrl + b 光標向前移動一個字符相當於VIM裏h
ctrl + 方向鍵左鍵 光標移動到前一個單詞開頭
ctrl + 方向鍵右鍵 光標移動到後一個單詞結尾
ctrl + x 在上次光標所在字符和當前光標所在字符之間跳轉
alt + f 跳到光標所在位置單詞尾部
替換
ctrl + t 將光標當前字符與前面一個字符替換
alt + t 交換兩個光標當前所處位置單詞和光標前一個單詞
alt + u 把光標當前位置單詞變爲大寫
alt + l 把光標當前位置單詞變爲小寫
alt + c 把光標當前位置單詞頭一個字母變爲大寫
^oldstr^newstr 替換前一次命令中字符串
歷史命令編輯
ctrl + p 返回上一次輸入命令字符
ctrl + r 輸入單詞搜索歷史命令
alt + p 輸入字符查找與字符相接近的歷史命令
alt + > 返回上一次執行命令
其它
ctrl + s 鎖住終端
ctrl + q 解鎖終端
ctrl + l 清屏相當於命令clear
ctrl + c 另起一行
ctrl + i 類似TAB健補全功能
ctrl + o 重複執行命令
alt + 數字鍵 操作的次數
minuit@suse:~>str1 str2 str3 #輸入三個單詞發現第一單詞需要大寫好按c+a跳到開頭按a+c
minuit@suse:~> Str1 str2 str3 #好現在單詞就變成了現在這個樣子,又發現第二個單詞要全大寫(這樣的命令真是玩死人:( )好吧如果你當前光標在第二個單詞,那直接a+u把這個單詞改變,如果不在的話那按住c+a接着c+f跳到第二個單詞那再a+u就OK了結果像下面所示。
minuit@suse:~> Str1 STR2 str3 #我想換過來怎麼辦我的位置已經在最後一個單詞這個好辦按住a+2+b哈哈跳到了第二個單詞再來一下a+l這下第二個單詞全小寫了
minuit@suse:~> welcome to chinaunix! #不就是變個大小寫嗎? 按住c+a接着a+3+c看看效果
minuit@suse:~> Welcome To Chinaunix! #GOOD很簡單
我們再來試試替換
minuit@suse:~> Welcome To Chinaunix! #還是這三單詞c+a跳到開頭再接着跳到第二個單詞那(因爲a+t只能跟前一個單詞做替換所以不能在第一個單詞按a+t)按住a+t
minuit@suse:~> To Welcome Chinaunix! #現在成這樣子的瞭如果我用再按a+2+t那又變了一個樣
minuit@suse:~> Chinaunix! Welcome To #好了來一點比較常用的
minuit@suse:~>ls /tmp/ #看看下面有些什麼
file1 file2 file3 ..... ..
minuit@suse:~>^ls^cd #現在再又想進入目錄很簡單的健入替換命令就行了在命令很長時用這個替換可以省掉很多按a+b或a+f的時間
cd /tmp/
minuit@suse:/tmp> #進入了tmp目錄了
跳轉的命令就不試了大家自己體會試也看不見^_^
------------------------------------------------------------------------------
Ctrl + a 可以快速切換到命令行開始處
Ctrl + e 切換到命令行末尾
Ctrl + r 在歷史命令中查找
Ctrl + u 刪除光標所在位置之前的所有字符
Ctrl + k 刪除光標所在位置之後的所有字符
ctrl + w 刪除光標之前的一個單詞
Ctrl + d 結束當前輸入、退出shell
ctrl + s 可用來停留在當前屏 ctrl + q 恢復刷屏
ctrl + l 清屏
CTRL 鍵相關的快捷鍵:
Ctrl + a - Jump to the start of the line
Ctrl + b - Move back a char
Ctrl + c - Terminate the command //用的最多了吧?
Ctrl + d - Delete from under the cursor
Ctrl + e - Jump to the end of the line
Ctrl + f - Move forward a char
Ctrl + k - Delete to EOL
Ctrl + l - Clear the screen //清屏,類似 clear 命令
Ctrl + r - Search the history backwards //查找歷史命令
Ctrl + R - Search the history backwards with multi occurrence
Ctrl + u - Delete backward from cursor // 密碼輸入錯誤的時候比較有用
Ctrl + xx - Move between EOL and current cursor position
Ctrl + x @ - Show possible hostname completions
Ctrl + z - Suspend/ Stop the command
補充:
Ctrl + h - 刪除當前字符
Ctrl + w - 刪除最後輸入的單詞
ALT 鍵相關的快捷鍵:
平時很少用。有些和遠程登陸工具衝突。
Alt + < - Move to the first line in the history
Alt + > - Move to the last line in the history
Alt + ? - Show current completion list
Alt + * - Insert all possible completions
Alt + / - Attempt to complete filename
Alt + . - Yank last argument to previous command
Alt + b - Move backward
Alt + c - Capitalize the word
Alt + d - Delete word
Alt + f - Move forward
Alt + l - Make word lowercase
Alt + n - Search the history forwards non-incremental
Alt + p - Search the history backwards non-incremental
Alt + r - Recall command
Alt + t - Move words around
Alt + u - Make word uppercase
Alt + back-space - Delete backward from cursor
// SecureCRT 如果沒有配置好,這個就很管用了。
其他特定的鍵綁定:
輸入 bind -P 可以查看所有的鍵盤綁定。這一系列我覺得更爲實用。
Here "2T" means Press TAB twice
$ 2T - All available commands(common) //命令行補全,我認爲是 Bash 最好用的一點
$ (string)2T - All available commands starting with (string)
$ /2T - Entire directory structure including Hidden one
$ ./2T - Only Sub Dirs inside including Hidden one
$ *2T - Only Sub Dirs inside without Hidden one
$ ~2T - All Present Users on system from "/etc/passwd" //第一次見到,很好用
$ $2T - All Sys variables //寫Shell腳本的時候很實用
$ @2T - Entries from "/etc/hosts" //第一次見到
$ =2T - Output like ls or dir //好像還不如 ls 快捷
補充:
Esc + T - 交換光標前面的兩個單詞
表2-1 瀏覽命令行的擊鍵
擊鍵 |
全名 |
含義 |
Ctrl+F |
字符向前 |
向前移動一個字符 |
Ctrl+B |
字符向後 |
向後移動一個字符 |
Alt+F |
單詞向前 |
向前移動一個單詞 |
Alt+B |
單詞向後 |
向後移動一個單詞 |
Ctrl+A |
行頭 |
到當前行的開始 |
Ctrl+E |
行尾 |
到行的末尾 |
Ctrl+L |
清屏 |
清除屏幕,並在屏幕頂端留下一行 |
表2-2中的擊鍵可以用來編輯命令行。
表2-2 編輯命令行的擊鍵
擊鍵 |
全名 |
含義 |
Ctrl+D |
刪除當前內容 |
刪除當前字符 |
Backspace或Rubout |
刪除以前內容 |
刪除前一個字符 |
Ctrl+T |
調換字符 |
交換當前字符和前一個字符的位置 |
Alt+T |
調換單詞 |
交換當前單詞和前一個單詞的位置 |
Alt+U |
大寫單詞 |
將當前單詞變爲大寫 |
Alt+L |
小寫單詞 |
將當前單詞變爲小寫 |
Alt+C |
首字母大寫 |
將當前單詞的首字母變爲大寫 |
Ctrl+V |
插入特殊字符 |
添加特殊字符。例如,按Ctrl+V+Tab可添加一個Tab字符 |
使用表2-3中的擊鍵可在命令行上剪切和粘貼文本。
表2-3 在命令行上剪切和粘貼文本的擊鍵
擊鍵 |
全名 |
含義 |
Ctrl+K |
剪切行尾 |
剪切文本到該行末尾 |
Ctrl+U |
剪切行頭 |
剪切文到該行開頭 |
Ctrl+W |
剪切前個單詞 |
剪切光標前的一個單詞 |
Alt+D |
剪切下個單詞 |
剪切光標後的一個單詞 |
Ctrl+Y |
粘貼最近的文本 |
粘貼最近剪切的文本 |
Alt+Y |
粘貼早期的文本 |
輪迴到先前剪切的文本並粘貼它 |
Ctrl+C |
刪除整行 |
刪除一整行 |
表2-4 用於文本補全的組合鍵
組合鍵 |
用於 |
Alt+~ |
用用戶名補全文本 |
Alt+$ |
用變量補全文本 |
Alt+@ |
用主機名補全文本 |
Alt+! |
用命令名(以別名、保留字、shell函數、shell內置命令和文件名的順序依次檢查)補全文本。換句話說,用以前運行過的命令補全這個按鍵序列 |
Ctrl+X+/ |
列出可能的補全用戶名文本 |
Ctrl+X+$ |
列出可能的補全環境變量 |
Ctrl+X+@ |
列出可能的補全主機名 |
Ctrl+X+! |
列出可能的補全命令名 |
表2-5 使用命令歷史的擊鍵
鍵 |
功 能 名 |
描 述 |
方向鍵 |
步進 |
按上和下箭頭可步進瀏覽歷史列表中的每個命令行,直到所需的位置(Ctrl+P和Ctrl+N分別有同樣的功能) |
Ctrl+R |
反向漸進搜索 |
按下這些鍵後,輸入一個搜索字符串進行反向搜索。輸入此字符串後,匹配的命令行即會出現,可以運行或編輯它 |
Ctrl+S |
前向漸進搜索 |
與前一個功能相似,只不過是前向搜索 |
反向搜索 |
按下這些鍵後,輸入一個字符串進行反向搜索。輸入一個字符串並且按Enter鍵可看到包含該字符串的最近已用命令 |
|
Alt+N |
前向搜索 |
與前一個功能類似,只不過是前向搜索 |
Alt+< |
歷史列表的開頭 |
到歷史列表的第一項 |
Alt+> |
歷史列表的末尾 |
到歷史列表的最後一項 |