成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux下的實用bash命令分享

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

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

$ man bash

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

一、擴展字段匹配

首先我們來看一個叫做擴展字段匹配的功能。這個選項允許你執行比標準Bash所提供的更復雜的字段匹配。例如,你可以定位除了后綴為.tmp之外的所有文件。擴展字段匹配功能可

以通過shopt命令啟用,或者內置的shell選項:

$ shopt -s extblob

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

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

$ ls !(*.tmp)

你還可以使用多個參數:

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

你可以選擇使用其它幾個extglob的參數,比如:

?(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選項

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

$ shopt -s cdspell

舉個例子,現在我們試著輸入一個簡單的關于更改目錄的錯誤命令:

$ cd /ect
/etc

很快你能發現這個小錯誤被自動更正過來了,并且bash已經讓你成功更改到了正確的目錄下。

$ pwd
/etc

Cdspell選項可以自動更正字母順序拼寫錯誤的單詞,漏了字母的單詞,還可以去掉單詞中多余的字母。

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

Bash中最有用的功能之一就是可以自動記憶你曾經使用過的命令。你可以用history命令來列出一系列之前執行過的命令。然后你可以在bash shell中用嘆號標注來找回并且執行之前的命令。例如,你可以從歷史記錄中通過數字列出某條命令:

$ !110

這樣可以運行歷史記錄中的第110條命令?;蛘吣阋部梢酝ㄟ^名稱來指定某條命令:

$ !wget

這樣執行最近的一條wget命令。

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

$ !:0

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

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

如果不需要命令,只需要返回命令之后的參數,你可以用這個命令:

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

然后,你的歷史記錄有可能因為重復使用而變得混亂,而且你會希望只返回一些比如ls或者ps命令這樣的結果。Bash有一個叫做$HISTIGNORE的環境變量,它可以只記憶那些你想要的命令,而不是所有命令。讓我們看看我的$HISTIGNORE設置:

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

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

$ export HISTIGNORE

四、交互式歷史命令搜索

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

(reverse-i-search)`':

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

五、非別名命令

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

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

你也可以不加標記的運行一個別名命令來獲得一個當前可用的別名命令列表。

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

$ unalias rm /tmp/file

你還可以用\參數來獲得相同的結果:

$ \rm /tmp/file

這將執行rm命令,而不需要象在別名命令中一樣手動去加-r參數。

下面介紹另外五個同樣十分實用的Bash命令:

更改Bash導航

大多數人都知道Bash的導航命令。用Emacs作編輯器的人對它們更是相當熟悉。它們包括:

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

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

$ set -o vi

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

$ set -o vi >> ~/.bashrc

現在你就可以用vi模式使用命令行了。比如,你可以用vi命令模式進行導航。按Esc鍵進入命令模式,然后你就可以使用以下命令:

l - 向前移動一個字符
h - 向后移動一個字符
0(零) - 把光標移動到該行最前面
$ - 把光標移動到行末
w - 往前移一個字
b - 往后移一個字

然后你可以按Esc鍵退出命令模式,或者像vi一樣按A或I鍵進入插入模式,對命令行進行編輯。按enter鍵會執行當前命令。

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

$ set -o emacs

你還可以用命令:

$ bind –P

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

cd –命令

你可以使用:

$ cd –

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

設置命令的輸出路徑

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

$ script -f >(nc -l 8000)

這個命令會把所有在命令行中鍵入的內容輸送到網絡上,所有使用監聽端口8000的人都能夠看到你用nc命令鍵入的內容。

$ nc host 8000

文件首次重定向

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

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

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

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

最后,我要分享三個我經常使用的、非常有用的查找命令。Find命令是一個非常強大的小工具,尤其是與-exec選項搭配的時候,它們允許你在查找的結果中執行命令。我建議你閱讀一下find的說明,以便更深入的使用該命令。

第一個命令:查找并列出當前目錄中過去一天修改的所有文件。

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

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

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

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

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

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

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

【編輯推薦】

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

2009-10-19 10:13:42

LinuxBash命令提示行

2021-11-29 10:40:41

Linux運維命令

2018-08-06 08:51:32

Linux命令cut

2010-06-23 17:34:03

Linux Bash

2010-06-23 10:03:18

Linux Bash命

2010-06-23 17:37:14

Linux Bash

2015-10-26 15:01:29

實例命令Linux

2009-12-25 09:47:05

LinuxShell編程bash

2015-10-29 13:10:08

passwd命令Linux

2011-01-18 13:53:42

Linux Shell命令

2017-05-25 10:32:40

命令linux系統

2010-06-23 17:16:33

Linux Bash

2021-05-25 09:01:21

Linux命令Bash histor

2010-06-23 16:31:10

Linux Bash

2010-06-23 17:29:07

Linux Bash

2015-09-23 09:22:01

系統硬件命令

2018-08-22 09:40:27

2011-08-10 14:51:46

LinuxLVM分區

2017-12-27 09:40:32

Linuxfind命令

2017-12-27 10:20:01

Linux ls命令實用范例
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人人做人人澡人人爽欧美 | 日韩成人免费视频 | 欧美日韩一 | 欧美精品99 | 黑人精品| 精品国产乱码一区二区三区a | 一级aaaa毛片 | 黑色丝袜三级在线播放 | 日韩美女一区二区三区在线观看 | 免费二区| 婷婷色国产偷v国产偷v小说 | 成人小视频在线观看 | 99精品视频在线观看免费播放 | 在线观看av免费 | 久久国产精品视频 | 亚洲精品一区在线 | 成人av一区二区在线观看 | 免费在线视频一区二区 | 久久精品国产一区二区电影 | www久久久 | 97色在线观看免费视频 | 成人一级视频在线观看 | 精品九九 | 中文字幕精品视频在线观看 | av激情在线 | a毛片| 国产精品人人做人人爽 | 日韩三级一区 | 精品久久国产老人久久综合 | 国产激情91久久精品导航 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 成人在线免费观看av | 91大神在线资源观看无广告 | 亚洲一区二区中文字幕 | 国产精品视频入口 | 亚洲 中文 欧美 日韩 在线观看 | 成人影院一区二区三区 | 午夜久久久 | 人人擦人人干 | 中文在线播放 | 国产精品一区二区在线观看 |