許多 Linux 發行版使用 BASH Shell,BSD 使用的是 tcsh,Bourne Shell 僅用于腳本。過濾器(Filter)非常有用并且可用于管道(pipe):
-
`grep`?? ?模式匹配
-
`sed`?? ? 查找并替換字符串或字符
-
`cut`?? ? 從一個標記開始打印所指定列數據
-
`sort`?? ?按字母或數字排序
-
`uniq`?? ?刪除一個文件中重復行
舉個例子,一次使用所有命令:
#?ifconfig?|?sed?'s/??/?/g'?|?cut?-d"?"?-f1?|?uniq?|?grep?-E?"[a-z0-9]+"?|?sort?-r
#?ifconfig?|?sed?'/.*inet?addr:/!d;s///;s/?.*//'|sort?-t.?-k1,1n?-k2,2n?-k3,3n?-k4,4n
sed 的模式字符串中的第一個字符是一個 tab。要在命令控制臺中輸入 tab,可以使用 ctrl-v ctrl-tab。
## bash
Bash、sh 的重定向和管道:
#?cmd?1>?file?????????????????????????#?重定向標準輸出到?file。
#?cmd?2>?file?????????????????????????#?重定向標準錯誤輸出到?file。
#?cmd?1>>?file????????????????????????#?重定向標準輸出并追加到?file。
#?cmd?&>?file?????????????????????????#?重定向標準輸出和標準錯誤輸出到?file。
#?cmd?>file?2>&1??????????????????????#?重定向標準錯誤輸出到標準輸出然后重定向到?file。
#?cmd1?|?cmd2?????????????????????????#?cmd1?的輸出通過管道連接到?cmd2?的輸入
#?cmd1?2>&1?|?cmd2????????????????????#?cmd1?的輸出和錯誤輸出通過管道連接到?cmd2?的輸入
修改你的配置文件 ~/.bashrc (也可以是 ~/.bash_profile)。下列條目非常有用,使用". .bashrc"重新加載。
#?in?.bashrc
bind?'"\e[A"':history-search-backward?#?使用上下鍵查找
bind?'"\e[B"':history-search-forward??#?歷史命令。無價之寶!
set?-o?emacs??????????????????????????#?Set?emacs?mode?in?bash?(看下面)
set?bell-style?visible????????????????#?Do?not?beep,?inverse?colors
????#?設置一個漂亮的提示符像?[user@host]/path/todir>
PS1="\[\033[1;30m\][\[\033[1;34m\]\u\[\033[1;30m\]"
PS1="$PS1@\[\033[0;33m\]\h\[\033[1;30m\]]\[\033[0;37m\]"
PS1="$PS1\w\[\033[1;30m\]>\[\033[0m\]"
#?要檢查當前可用別名(alias),只需簡單輸入命令?aliasalias??ls='ls?-aF'????????????????????
#?添加指示符(*/=>@|?其中之一)alias??ll='ls?-aFls'??????????????????
#?清單alias??la='ls?-all'
alias?..='cd?..'
alias?...='cd?../..'
export?HISTFILESIZE=5000??????????????#?巨大的歷史記錄
export?CLICOLOR=1?????????????????????#?使用顏色(如果可用)
export?LSCOLORS=ExGxFxdxCxDxDxBxBxExEx
## tcsh
Tcsh、csh 的重定向和管道(> 和 >> 同 sh 中一樣):
#?cmd?>&?file?????????????????????????#?重定向標準輸出和標準錯誤輸出到?file。
#?cmd?>>&?file????????????????????????#?追加標準輸出和標準錯誤輸出到?file。
#?cmd1?|?cmd2?????????????????????????#?cmd1?的輸出通過管道連接到?cmd2?的輸入
#?cmd1?|&?cmd2????????????????????????#?cmd1?的輸出和錯誤輸出通過管道連接到?cmd2?的輸入
Csh/tcsh 的設置在?`~/.cshrc`?中,使用"source .cshrc"來重新加載。例子:
#?in?.cshrc
alias??ls??????'ls?-aF'
alias??ll??????'ls?-aFls'
alias??la??????'ls?-all'
alias??..??????'cd?..'
alias??...?????'cd?../..'
set???prompt????=?"%B%n%b@%B%m%b%/>?"?#?像?user@host/path/todir>set???history???=??5000
set???savehist??=?(?6000?merge?)
set???autolist????????????????????????#?控制命令補全和變量補全
set???visiblebell?????????????????????#?使用閃動屏幕的方式來取代蜂鳴器鳴叫
#?Bindkey?和顏色bindkey?-e?????Select?Emacs?bindings??#?將命令行編輯器切換到emacs模式bindkey?-k?up?history-search-backward?#?使用上下鍵來搜索bindkey?-k?down?history-search-forward
setenv?CLICOLOR?1?????????????????????#?使用顏色(可能的話)setenv?LSCOLORS?ExGxFxdxCxDxDxBxBxExEx
該 emacs 模式將使用 emacs 快捷鍵來修改命令提示行。這是非常有用的(不單為 Emacs 用戶)。最常用的命令如下:
-
C-a ? ? ? 移動光標到行頭
-
C-e ? ? ? 移動光標到行尾
-
M-b ? ? ? 移動光標到前一個單詞
-
M-f ? ? ? 移動光標到后一個單詞
-
M-d ? ? ? 剪切下一個單詞
-
C-w ? ? ? 剪切最后一個單詞
-
C-u ? ? ? 剪切光標前所有字符
-
C-k ? ? ? 剪切光標后所有字符
-
C-y ? ? ? 粘帖最后剪切的字符(簡易的粘帖)
-
C-_ ? ? ? 重做
_注意:_?C- = 按住 control 鍵,M- = 按住 meta (它通常為 alt 或者 escape)鍵。