偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux下的實(shí)用bash命令分享

系統(tǒng) Linux
20年過去了,我到現(xiàn)在還是能經(jīng)常在bash中發(fā)現(xiàn)一些新的工具和功能 ,我不知道稱呼Bash為一個(gè)工具是不是比一個(gè)代碼更為恰當(dāng)。在這篇文章中我將介紹Bash的一些不常用(但是還是非常有用)的特性。

在我剛開始使用Linux不久,我試圖學(xué)習(xí)一些bash命令,于是我敲下了如下的命令:

$ man bash

我立即發(fā)現(xiàn)bash用戶手冊(cè)簡直就是一個(gè)長篇史詩。一頁又一頁的命令、功能說明、小技巧、小說明以及非常多的環(huán)境變量。20年過去了,我到現(xiàn)在還是能經(jīng)常在bash中發(fā)現(xiàn)一些新的工具和功能 ,我不知道稱呼Bash為一個(gè)工具是不是比一個(gè)代碼更為恰當(dāng)。在這篇文章中我將介紹Bash的一些不常用(但是還是非常有用)的特性。

一、擴(kuò)展字段匹配

首先我們來看一個(gè)叫做擴(kuò)展字段匹配的功能。這個(gè)選項(xiàng)允許你執(zhí)行比標(biāo)準(zhǔn)Bash所提供的更復(fù)雜的字段匹配。例如,你可以定位除了后綴為.tmp之外的所有文件。擴(kuò)展字段匹配功能可

以通過shopt命令啟用,或者內(nèi)置的shell選項(xiàng):

$ shopt -s extblob

備注:你還可以運(yùn)行shopt命令來查看其它選項(xiàng)、特性和它提供的一些秘密功能。

一旦啟用,我們可以用一個(gè)簡單的語法列出某個(gè)目錄中除去后綴為.tmp的所有文件:

$ ls !(*.tmp)

你還可以使用多個(gè)參數(shù):

$ ls !(*.tmp|*.log|*.bak)

你可以選擇使用其它幾個(gè)extglob的參數(shù),比如:

?(pattern-list) Matches zero or one occurrence of the given patterns
*(pattern-list) Matches zero or more occurrences of the given patterns
+(pattern-list) Matches one or more occurrences of the given patterns
@(pattern-list) Matches exactly one of the given patterns
!(pattern-list) Matches anything except one of the given patterns

二、cdspell shell選項(xiàng)

Cdspell是另一個(gè)很有用并且少為人知的shell命令。Cdspell命令可以更正在cd命令中出現(xiàn)的小的拼寫錯(cuò)誤。你可以通過shopt命令行來啟用cdspell選項(xiàng)。

$ shopt -s cdspell

舉個(gè)例子,現(xiàn)在我們?cè)囍斎胍粋€(gè)簡單的關(guān)于更改目錄的錯(cuò)誤命令:

$ cd /ect
/etc

很快你能發(fā)現(xiàn)這個(gè)小錯(cuò)誤被自動(dòng)更正過來了,并且bash已經(jīng)讓你成功更改到了正確的目錄下。

$ pwd
/etc

Cdspell選項(xiàng)可以自動(dòng)更正字母順序拼寫錯(cuò)誤的單詞,漏了字母的單詞,還可以去掉單詞中多余的字母。

三、更好地管理Bash命令歷史記錄

Bash中最有用的功能之一就是可以自動(dòng)記憶你曾經(jīng)使用過的命令。你可以用history命令來列出一系列之前執(zhí)行過的命令。然后你可以在bash shell中用嘆號(hào)標(biāo)注來找回并且執(zhí)行之前的命令。例如,你可以從歷史記錄中通過數(shù)字列出某條命令:

$ !110

這樣可以運(yùn)行歷史記錄中的第110條命令。或者你也可以通過名稱來指定某條命令:

$ !wget

這樣執(zhí)行最近的一條wget命令。

以下這種用法很少人知道:

$ !:0

這可以返回之前執(zhí)行過的命令行中的命令字段,例如:

$ wget http://www.google.com
$ !:0
$ wget

如果不需要命令,只需要返回命令之后的參數(shù),你可以用這個(gè)命令:

$ mkdir /tmp/newdirectory
$ cd !*
cd /tmp/newdirectory

然后,你的歷史記錄有可能因?yàn)橹貜?fù)使用而變得混亂,而且你會(huì)希望只返回一些比如ls或者ps命令這樣的結(jié)果。Bash有一個(gè)叫做$HISTIGNORE的環(huán)境變量,它可以只記憶那些你想要的命令,而不是所有命令。讓我們看看我的$HISTIGNORE設(shè)置:

$ HISTIGNORE="&:history:ls:ls * ps:ps -A:[bf]g:exit"

這個(gè)設(shè)置可以避免記錄重復(fù)記錄(&號(hào)),然后所有l(wèi)s,ls*ps和ps-A,還有bg,fg和內(nèi)置的exit命令都將被記錄在歷史列表中。另一個(gè)有用的小技巧就是加一個(gè)[ \t]*參數(shù),可以避免所有以空格開始的命令被記錄在歷史列表中。最后,我們只要輸出它就可以了:

$ export HISTIGNORE

四、交互式歷史命令搜索

你以前知道這件事情嗎,就是你可以互動(dòng)式地搜索你的Bash歷史命令,從而更好地整理好它?你可以輸入Ctrl-r來啟用這個(gè)搜索功能(這個(gè)可以對(duì)Emacs用戶來說比較熟悉,就像Emacs一樣,你可以用Ctrl-a和Ctrl-e到達(dá)命令行的開始或者結(jié)尾,象其它快捷鍵一樣)。這會(huì)啟動(dòng)以下命令:

(reverse-i-search)`':

然后你可以輸入一個(gè)命令或者命令的一部分來搜索你的Bash歷史命令,系統(tǒng)會(huì)列出匹配的命令。如果找到你需要的命令你可以通過敲擊回車鍵來運(yùn)行它或者敲ESC鍵來編輯匹配的命令行。

五、非別名命令

多數(shù)人都知道如何使用別名命令,它允許你創(chuàng)建自定義版本的命令,比如給rm命令加一個(gè)-r參數(shù),或者給mkdir加一個(gè)-p參數(shù):

$ alias rm='rm -r'
$ alias mkdir='mkdir -p'

你也可以不加標(biāo)記的運(yùn)行一個(gè)別名命令來獲得一個(gè)當(dāng)前可用的別名命令列表。

但是你可能不知道非別名命令。這可以讓你在無需別名的情況下運(yùn)行一個(gè)命令:

$ unalias rm /tmp/file

你還可以用\參數(shù)來獲得相同的結(jié)果:

$ \rm /tmp/file

這將執(zhí)行rm命令,而不需要象在別名命令中一樣手動(dòng)去加-r參數(shù)。

下面介紹另外五個(gè)同樣十分實(shí)用的Bash命令:

更改Bash導(dǎo)航

大多數(shù)人都知道Bash的導(dǎo)航命令。用Emacs作編輯器的人對(duì)它們更是相當(dāng)熟悉。它們包括:

Ctrl + a - 返回到當(dāng)前命令的開始
Ctrl + e - 返回到當(dāng)前命令的末尾
Ctrl + w - 刪除光標(biāo)左邊的第一個(gè)條目(變量或者命令)
Ctrl + u - 剪切光標(biāo)前面的所有內(nèi)容
Ctrl + y - 剪切光標(biāo)后面的所有內(nèi)容
Ctrl + y - 粘貼你用Ctrl +u或者Ctrl + y剪切的內(nèi)容
Ctrl + p - 滾動(dòng)顯示以前的命令
Ctrl + n - 下一個(gè)命令
Ctrl + l - 清屏

你可能不知道Bash不僅能夠使用Emacs編輯模式,而且還能夠使用vi模式(為那些更喜歡用vi命令的人準(zhǔn)備)。你可以用下面的命令切換到vi編輯模式:

$ set -o vi

你還可以把這個(gè)命令添加到你的.bashrc文件中,以便永久地切換到vi模式:

$ set -o vi >> ~/.bashrc

現(xiàn)在你就可以用vi模式使用命令行了。比如,你可以用vi命令模式進(jìn)行導(dǎo)航。按Esc鍵進(jìn)入命令模式,然后你就可以使用以下命令:

l - 向前移動(dòng)一個(gè)字符
h - 向后移動(dòng)一個(gè)字符
0(零) - 把光標(biāo)移動(dòng)到該行最前面
$ - 把光標(biāo)移動(dòng)到行末
w - 往前移一個(gè)字
b - 往后移一個(gè)字

然后你可以按Esc鍵退出命令模式,或者像vi一樣按A或I鍵進(jìn)入插入模式,對(duì)命令行進(jìn)行編輯。按enter鍵會(huì)執(zhí)行當(dāng)前命令。

如果你決定不用vi模式,你可以鍵入以下命令返回emacs模式:

$ set -o emacs

你還可以用命令:

$ bind –P

來顯示你的所有命令以及它們的按鍵設(shè)置。你也可以用該bind命令對(duì)各種函數(shù)設(shè)置自己的按鍵組合。

cd –命令

你可以使用:

$ cd –

返回你原來所在的目錄,你可以重復(fù)使用該命令返回上一級(jí)目錄。

設(shè)置命令的輸出路徑

有時(shí)候你想告訴人們你的命令行發(fā)生了什么事情,但是又不想讓他們擁有訪問權(quán)。有一種快捷、簡便的方法可以解決這個(gè)問題:使用腳本和nc命令在網(wǎng)絡(luò)上顯示你的命令行發(fā)生了哪些變化,只需輸入:

$ script -f >(nc -l 8000)

這個(gè)命令會(huì)把所有在命令行中鍵入的內(nèi)容輸送到網(wǎng)絡(luò)上,所有使用監(jiān)聽端口8000的人都能夠看到你用nc命令鍵入的內(nèi)容。

$ nc host 8000

文件首次重定向

我喜歡那些讓我少打字的技巧。通常你想要用多種方式處理同一個(gè)文件。使用重定向,我們可以首先指定文件的名字,以及結(jié)束時(shí)執(zhí)行的命令。比如:

$ </var/log/messages grep dhclient
$ </var/log/messages grep kernel 
$ </var/log/messages grep yum

這里我們指定了我們想要預(yù)先搜索的文件,然后指定了grep命令和我們想要查找的文本。現(xiàn)在如果我們想要從歷史中檢索該命令,我們只需要編輯要再次搜索的文本就可以了。

三個(gè)有用的查找(find)命令

最后,我要分享三個(gè)我經(jīng)常使用的、非常有用的查找命令。Find命令是一個(gè)非常強(qiáng)大的小工具,尤其是與-exec選項(xiàng)搭配的時(shí)候,它們?cè)试S你在查找的結(jié)果中執(zhí)行命令。我建議你閱讀一下find的說明,以便更深入的使用該命令。

第一個(gè)命令:查找并列出當(dāng)前目錄中過去一天修改的所有文件。

$ find ./ -type f -mtime -1 -exec ls -al {} \;

你顯然可以修改該命令,以便查找其他地方、不同時(shí)間(把-1改成不同的時(shí)間)的文件。

第二個(gè)命令:查找文件,然后執(zhí)行一個(gè)基于Perl的尋找-替換功能。

$ find . -name '*.txt' -type f -exec perl -pi -e 's/goldfish/tiger/g' {} \;

在這種情況下,我們查找所有擴(kuò)展名為.txt的文件,并在這些文件中查找單詞“goldfish”,把這個(gè)單詞替換成“tiger”。

最后一個(gè)查找命令:我經(jīng)常用它從我的路徑中遞歸刪除.svn(和其他的)目錄。

find . -name ".svn" -exec rm -rf {} \;

【編輯推薦】

  1. 不看后悔的Linux生產(chǎn)服務(wù)器Shell腳本分享
  2. 天外飛仙級(jí)別的Linux Shell命令
  3. 天外飛仙級(jí)別的Linux Shell命令(第二彈)
責(zé)任編輯:yangsai 來源: TechTarget中國
相關(guān)推薦

2009-10-19 10:13:42

LinuxBash命令提示行

2021-11-29 10:40:41

Linux運(yùn)維命令

2018-08-06 08:51:32

Linux命令cut

2010-06-23 17:37:14

Linux Bash

2010-06-23 17:34:03

Linux Bash

2010-06-23 10:03:18

Linux Bash命

2015-10-26 15:01:29

實(shí)例命令Linux

2009-12-25 09:47:05

LinuxShell編程bash

2015-10-29 13:10:08

passwd命令Linux

2010-06-23 17:29:07

Linux Bash

2010-06-23 16:31:10

Linux Bash

2010-06-23 17:16:33

Linux Bash

2017-05-25 10:32:40

命令linux系統(tǒng)

2021-05-25 09:01:21

Linux命令Bash histor

2011-01-18 13:53:42

Linux Shell命令

2015-09-23 09:22:01

系統(tǒng)硬件命令

2018-08-22 09:40:27

2010-06-23 11:24:23

Linux Bash命

2010-06-23 14:45:02

Linux Bash

2010-06-23 14:37:57

Linux Bash命
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)