幾個Linux命令及指令碼使用中的奇淫巧技

耕耘實錄發表於2018-10-16

例項1.建立一個別名,刪除原始檔案,同時在使用者的home目錄下backup中儲存副本。

#/bin/bash
cp $@ ~/backup && rm -rf $@

例項2.Fork炸彈。

:(){:|:&};:

例項3.生成一個11位的隨機密碼,包括大小寫字母、數字及特殊(/與+)符號。

openssl rand -base64 200|cut -b 1-11|head -n 1

例項4.不切換當前工作目錄,使用cd命令並顯示切換後目標目錄的內容。

(cd /bin;ls)

本例子中,使用()定義了一個子shell,對當前的shell並無影響,所有改變僅限於子shell中,上述操作在某些場景中特別有用。

例項5.為防止當前工作終端退出造成正在執行的任務被中斷,我們可以在螢幕上隨機列印一些數字字母。下面命令用來裝X有時候也挺有用。

while true ; do display=`echo $RANDMOM|md5sum` ; echo $display $display ; done

例項6.使用一條命令隨機建立一個指定格式的檔案或目錄。

mktemp gyslXXX
mktemp -d gyslXXX

此命令一般不常見,gysl為指定的字首,之後的大寫X為佔位符,這些大寫的X不能位於名稱最前面,並且至少保證存在3個X佔位符,這些大寫X在建立新檔案和新目錄是會被隨機字母所替代。如果直接執行mktemp命令,那麼會在本機的/tmp目錄下建立臨時檔案或目錄。執行該命令建立的檔案預設許可權為:600,目錄許可權為700,並不受umask所影響,這一點需要特別注意。
例項7.刪除文字中的空白行。

sed -i `/^$/d` a.txt

實現這個功能的命令很多,可能這是最簡單一個命令了。

例項8.通過正規表示式的匹配,將匹配內容使用&替代,按照指定格式輸出。

echo "My name is Ivan."|sed `s/w+/[&]/g`
echo "My name is Ivan. My phone number is 010-87654321"|sed `s/[a-zA-Z0-9]+/{&}`

上面例子分別匹配出了目標字串中的單詞(包括數字和字母),並把匹配內容分別使用[]和{}包起來。
例項9.通過sed命令直接編輯文字時,在編輯之前先將原始檔進行備份。

sed -i.1010.bak `s/ChatDevOps/gysl/` test.txt

執行完該命令後,原始檔裡面的每一行第一個匹配的ChatDevOps替換為gysl,並將原始檔備份為test.txt.1010.bak。


相關文章