UNIX Shells

2018-11-24 15:30 更新

許多 Linux 發(fā)行版使用 BASH Shell,BSD 使用的是 tcsh,Bourne Shell 僅用于腳本。過(guò)濾器(Filter)非常有用并且可用于管道(pipe):

  • grep    模式匹配

  • sed     查找并替換字符串或字符

  • cut     從一個(gè)標(biāo)記開(kāi)始打印所指定列數(shù)據(jù)

  • sort    按字母或數(shù)字排序

  • uniq    刪除一個(gè)文件中重復(fù)行

舉個(gè)例子,一次使用所有命令:

# 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 的模式字符串中的第一個(gè)字符是一個(gè) tab。要在命令控制臺(tái)中輸入 tab,可以使用 ctrl-v ctrl-tab。

bash

Bash、sh 的重定向和管道:

# cmd 1> file                         # 重定向標(biāo)準(zhǔn)輸出到 file。
# cmd 2> file                         # 重定向標(biāo)準(zhǔn)錯(cuò)誤輸出到 file。
# cmd 1>> file                        # 重定向標(biāo)準(zhǔn)輸出并追加到 file。
# cmd &> file                         # 重定向標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出到 file。
# cmd >file 2>&1                      # 重定向標(biāo)準(zhǔn)錯(cuò)誤輸出到標(biāo)準(zhǔn)輸出然后重定向到 file。
# cmd1 | cmd2                         # cmd1 的輸出通過(guò)管道連接到 cmd2 的輸入
# cmd1 2>&1 | cmd2                    # cmd1 的輸出和錯(cuò)誤輸出通過(guò)管道連接到 cmd2 的輸入

修改你的配置文件 ~/.bashrc (也可以是 ~/.bash_profile)。下列條目非常有用,使用". .bashrc"重新加載。

# in .bashrc
bind '"\e[A"':history-search-backward # 使用上下鍵查找
bind '"\e[B"':history-search-forward  # 歷史命令。無(wú)價(jià)之寶!
set -o emacs                          # Set emacs mode in bash (看下面)
set bell-style visible                # Do not beep, inverse colors
    # 設(shè)置一個(gè)漂亮的提示符像 [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\]"

# 要檢查當(dāng)前可用別名(alias),只需簡(jiǎn)單輸入命令 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                         # 重定向標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出到 file。
# cmd >>& file                        # 追加標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出到 file。
# cmd1 | cmd2                         # cmd1 的輸出通過(guò)管道連接到 cmd2 的輸入
# cmd1 |& cmd2                        # cmd1 的輸出和錯(cuò)誤輸出通過(guò)管道連接到 cmd2 的輸入

Csh/tcsh 的設(shè)置在 ~/.cshrc 中,使用"source .cshrc"來(lái)重新加載。例子:

# 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                        # 控制命令補(bǔ)全和變量補(bǔ)全
set   visiblebell                     # 使用閃動(dòng)屏幕的方式來(lái)取代蜂鳴器鳴叫

# Bindkey 和顏色bindkey -e     Select Emacs bindings  # 將命令行編輯器切換到emacs模式bindkey -k up history-search-backward # 使用上下鍵來(lái)搜索bindkey -k down history-search-forward
setenv CLICOLOR 1                     # 使用顏色(可能的話)setenv LSCOLORS ExGxFxdxCxDxDxBxBxExEx

該 emacs 模式將使用 emacs 快捷鍵來(lái)修改命令提示行。這是非常有用的(不單為 Emacs 用戶)。最常用的命令如下:

  • C-a       移動(dòng)光標(biāo)到行頭

  • C-e       移動(dòng)光標(biāo)到行尾

  • M-b       移動(dòng)光標(biāo)到前一個(gè)單詞

  • M-f       移動(dòng)光標(biāo)到后一個(gè)單詞

  • M-d       剪切下一個(gè)單詞

  • C-w       剪切最后一個(gè)單詞

  • C-u       剪切光標(biāo)前所有字符

  • C-k       剪切光標(biāo)后所有字符

  • C-y       粘帖最后剪切的字符(簡(jiǎn)易的粘帖)

  • C-_       重做

注意: C- = 按住 control 鍵,M- = 按住 meta (它通常為 alt 或者 escape)鍵。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)