一大波有用的 bash 別名和函數(shù)
來源:易賢網(wǎng) 閱讀:1288 次 日期:2015-04-02 14:12:49
溫馨提示:易賢網(wǎng)小編為您整理了“一大波有用的 bash 別名和函數(shù)”,方便廣大網(wǎng)友查閱!

作為一個(gè)命令行探索者,你或許發(fā)現(xiàn)你自己一遍又一遍重復(fù)同樣的命令。如果你總是用ssh進(jìn)入到同一臺(tái)電腦,如果你總是將一連串命令連接起來,如果你總是用同樣的參數(shù)運(yùn)行一個(gè)程序,你也許希望在這種不斷的重復(fù)中為你的生命節(jié)約下幾秒鐘。

解決方案是使用一個(gè)別名(alias)。正如你可能知道的,別名用一種讓你的shell記住一個(gè)特定的命令并且給它一個(gè)新的名字的方式。不管怎么樣,別名有一些限制,它只是shell命令的快捷方式,不能傳遞或者控制其中的參數(shù)。所以作為補(bǔ)充,bash 也允許你創(chuàng)建你自己的函數(shù),這可能更長(zhǎng)一些和復(fù)雜一點(diǎn),它允許任意數(shù)量的參數(shù)。

當(dāng)然,當(dāng)你有美食時(shí),比如某種湯,你要分享它給大家。我這里有一個(gè)列表,列出了一些最有用bash別名和函數(shù)的。注意“最有用的”只是個(gè)說法,別名的是否有用要看你是否每天都需要在 shell 里面用它。

在你開始你的別名體驗(yàn)之旅前,這里有一個(gè)便于使用的小技巧:如果你的別名和原本的命令名字相同,你可以用如下技巧來訪問原本的命令(LCTT 譯注:你也可以直接原本命令的完整路徑來訪問它。)

command

例如,如果有一個(gè)替換了ls命令的別名 ls。如果你想使用原本的ls命令而不是別名,通過調(diào)用它:

ls

名單

提升生產(chǎn)力

這些別名真的很簡(jiǎn)單并且真的很短,但他們大多數(shù)是為了給你的生命節(jié)省幾秒鐘,最終也許為你這一輩子節(jié)省出來幾年,也許呢。

alias ls="ls --color=auto"

簡(jiǎn)單但非常重要。使ls命令帶著彩色輸出。

alias ll="ls --color -al"

以彩色的列表方式列出目錄里面的全部文件。

alias grep='grep --color=auto'

類似,只是在grep里輸出帶上顏色。

mcd() { mkdir -p "$1"; cd "$1";}

我的最愛之一。創(chuàng)建一個(gè)目錄并進(jìn)入該目錄里: mcd [目錄名]。

cls() { cd "$1"; ls;}

類似上一個(gè)函數(shù),進(jìn)入一個(gè)目錄并列出它的的內(nèi)容:cls[目錄名]。

backup() { cp "$1"{,.bak};}

簡(jiǎn)單的給文件創(chuàng)建一個(gè)備份: backup [文件] 將會(huì)在同一個(gè)目錄下創(chuàng)建 [文件].bak。

md5check() { md5sum "$1" | grep "$2";}

因?yàn)槲矣憛捦ㄟ^手工比較文件的md5校驗(yàn)值,這個(gè)函數(shù)會(huì)計(jì)算它并進(jìn)行比較:md5check[文件][校驗(yàn)值]。

名單1

alias makescript="fc -rnl | head -1 >"

很容易用你上一個(gè)運(yùn)行的命令創(chuàng)建一個(gè)腳本:makescript [腳本名字.sh]

alias genpasswd="strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d 'n'; echo"

只是瞬間產(chǎn)生一個(gè)強(qiáng)壯的密碼。

名單2

alias c="clear"

清除你終端屏幕不能更簡(jiǎn)單了吧?

alias histg="history | grep"

快速搜索你的命令輸入歷史:histg [關(guān)鍵字]

alias ..='cd ..'

回到上層目錄還需要輸入 cd 嗎?

alias ...='cd ../..'

自然,去到上兩層目錄。

extract() {

if [ -f $1 ] ; then

case $1 in

*.tar.bz2) tar xjf $1 ;;

*.tar.gz) tar xzf $1 ;;

*.bz2) bunzip2 $1 ;;

*.rar) unrar e $1 ;;

*.gz) gunzip $1 ;;

*.tar) tar xf $1 ;;

*.tbz2) tar xjf $1 ;;

*.tgz) tar xzf $1 ;;

*.zip) unzip $1 ;;

*.Z) uncompress $1 ;;

*.7z) 7z x $1 ;;

*) echo "'$1' cannot be extracted via extract()" ;;

esac

else

echo "'$1' is not a valid file"

fi

}

很長(zhǎng),但是也是最有用的。解壓任何的文檔類型:extract: [壓縮文件]

系統(tǒng)信息

想盡快地知道關(guān)于你的系統(tǒng)一切信息?

alias cmount="mount | column -t"

按列格式化輸出mount信息。

名單3

alias tree="ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^/]*//--/g' -e 's/^/ /' -e 's/-/|/'"

以樹形結(jié)構(gòu)遞歸地顯示目錄結(jié)構(gòu)。

sbs() { du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf "%.1f%s", $1>=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"): $1>=2**10? ($1/2**10, "K"): ($1, "")}e';}

安裝文件在磁盤存儲(chǔ)的大小排序,顯示當(dāng)前目錄的文件列表。

alias intercept="sudo strace -ff -e trace=write -e write=1,2 -p"

接管某個(gè)進(jìn)程的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤。注意你需要安裝了 strace。

alias meminfo='free -m -l -t'

查看你還有剩下多少內(nèi)存。

名單4

alias ps? = "ps aux | grep"

可以很容易地找到某個(gè)進(jìn)程的PID:ps? [名字]。

alias volume="amixer get Master | sed '1,4 d' | cut -d [ -f 2 | cut -d ] -f 1"

顯示當(dāng)前音量設(shè)置。

名單5

網(wǎng)絡(luò)

對(duì)于所有用在互聯(lián)網(wǎng)和本地網(wǎng)絡(luò)的命令,也有一些神奇的別名給它們。

alias websiteget="wget --random-wait -r -p -e robots=off -U mozilla"

下載整個(gè)網(wǎng)站:websiteget [URL]。

alias listen="lsof -P -i -n"

顯示出哪個(gè)應(yīng)用程序連接到網(wǎng)絡(luò)。

名單6

alias port='netstat -tulanp'

顯示出活動(dòng)的端口。

gmail() { curl -u "$1" --silent "" | sed -e 's/</fullcount.*/n/' | sed -e 's/.*fullcount>//'}

大概的顯示你的谷歌郵件里未讀郵件的數(shù)量:gmail [用戶名]

alias ipinfo="curl ifconfig.me && curl ifconfig.me/host"

獲得你的公網(wǎng)IP地址和主機(jī)名。

getlocation() { lynx -dump address|egrep 'city|state|country'|awk '{print $3,$4,$5,$6,$7,$8}'|sed 'sip address flag \'|sed 'sMy\';}

返回你的當(dāng)前IP地址的地理位置。

也許無用

所以呢,如果一些別名并不是全都具有使用價(jià)值?它們可能仍然有趣。

kernelgraph() { lsmod | perl -e 'print "digraph "lsmod" {";<>;while(<>){@_=split/s+/; print ""$_[0]" -> "$_"n" for split/,/,$_[3]}print "}"' | dot -Tpng | display -;}

繪制內(nèi)核模塊依賴曲線圖。需要可以查看圖片。

alias busy="cat /dev/urandom | hexdump -C | grep 'ca fe'"

在那些非技術(shù)人員的眼里你看起來是總是那么忙和神秘。

名單7

最后,這些別名和函數(shù)的很大一部分來自于我個(gè)人的.bashrc。而那些令人點(diǎn)贊的網(wǎng)站 alias.sh和commandlinefu.com我早已在我的帖子best online tools for Linux 里面介紹過。你可以去看看,如果你愿意,也可以分享下你的。也歡迎你在這里評(píng)論,分享一下你的智慧。

做為獎(jiǎng)勵(lì),這里有我提到的全部別名和函數(shù)的純文本版本,隨時(shí)可以復(fù)制粘貼到你的.bashrc。(如果你已經(jīng)一行一行的復(fù)制到這里了,哈哈,你發(fā)現(xiàn)你又浪費(fèi)了生命的幾秒鐘~)

#Productivity

alias ls="ls --color=auto"

alias ll="ls --color -al"

alias grep='grep --color=auto'

mcd() { mkdir -p "$1"; cd "$1";}

cls() { cd "$1"; ls;}

backup() { cp "$1"{,.bak};}

md5check() { md5sum "$1" | grep "$2";}

alias makescript="fc -rnl | head -1 >"

alias genpasswd="strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d 'n'; echo"

alias c="clear"

alias histg="history | grep"

alias ..='cd ..'

alias ...='cd ../..'

extract() {

if [ -f $1 ] ; then

case $1 in

*.tar.bz2) tar xjf $1 ;;

*.tar.gz) tar xzf $1 ;;

*.bz2) bunzip2 $1 ;;

*.rar) unrar e $1 ;;

*.gz) gunzip $1 ;;

*.tar) tar xf $1 ;;

*.tbz2) tar xjf $1 ;;

*.tgz) tar xzf $1 ;;

*.zip) unzip $1 ;;

*.Z) uncompress $1 ;;

*.7z) 7z x $1 ;;

*) echo "'$1' cannot be extracted via extract()" ;;

esac

else

echo "'$1' is not a valid file"

fi

}

#System info

alias cmount="mount | column -t"

alias tree="ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^/]*//--/g' -e 's/^/ /' -e 's/-/|/'"

sbs(){ du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf "%.1f%s", $1>=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"): $1>=2**10? ($1/2**10, "K"): ($1, "")}e';}

alias intercept="sudo strace -ff -e trace=write -e write=1,2 -p"

alias meminfo='free -m -l -t'

alias ps?="ps aux | grep"

alias volume="amixer get Master | sed '1,4 d' | cut -d [ -f 2 | cut -d ] -f 1"

#Network

alias websiteget="wget --random-wait -r -p -e robots=off -U mozilla"

alias listen="lsof -P -i -n"

alias port='netstat -tulanp'

gmail() { curl -u "$1" --silent "" | sed -e 's/</fullcount.*/n/' | sed -e 's/.*fullcount>//'}

alias ipinfo="curl ifconfig.me && curl ifconfig.me/host"

getlocation() { lynx -dump address|egrep 'city|state|country'|awk '{print $3,$4,$5,$6,$7,$8}'|sed 'sip address flag \'|sed 'sMy\';}

#Funny

kernelgraph() { lsmod | perl -e 'print "digraph "lsmod" {";<>;while(<>){@_=split/s+/; print ""$_[0]" -> "$_"n" for split/,/,$_[3]}print "}"' | dot -Tpng | display -;}

alias busy="cat /dev/urandom | hexdump -C | grep "ca fe""

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看技術(shù)文章
易賢網(wǎng)手機(jī)網(wǎng)站地址:一大波有用的 bash 別名和函數(shù)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)