作為一個(gè)日常在Linux環(huán)境下工作的工程師,每天都要大量使用Linux命令行。有時(shí)候我們會(huì)在網(wǎng)上翻查命令行的使用技巧,但是一旦未能及時(shí)進(jìn)行練習(xí),很快就會(huì)把這些小技巧給忘了。所以我決定把這些小東西整理一下,以防止以后再有遺忘的事情發(fā)生。
將輸出內(nèi)容做一個(gè)清晰明了的表格
使用命令行的時(shí)候,經(jīng)??梢钥吹捷敵龅膬?nèi)容一團(tuán)糟:太多字符串?dāng)D在一起,根本沒(méi)法看到底輸出了什么,不信你就試試 mount 命令。
為了看清楚些,我們可以把輸出轉(zhuǎn)化為一張表格,只需要加幾個(gè)字符就行了:
mount | column –t:
在這個(gè)小例子中,我們用空格把輸出結(jié)果隔成了一個(gè)表格,整個(gè)界面瞬間清楚美觀了很多。如果你不太喜歡空格作為分隔符,你也可以換成其他的,比如換成冒號(hào)(:)。
依然非常簡(jiǎn)單:只需要在末尾使用 -s 參數(shù)制定一下相應(yīng)的分割符就可以了:
cat /etc/passwd | column -t -s:
重復(fù)執(zhí)行一個(gè)命令,直到它運(yùn)行成功
在寫這篇文章之前,我特地搜索了一下。在 Google 上,很多人都在問(wèn)如何實(shí)現(xiàn)命令重復(fù)執(zhí)行直至成功這個(gè)操作。搜索結(jié)果里提到了 ping 服務(wù)器,一直到它變得空閑位置,或者檢查是不是向某個(gè)目錄里上傳過(guò)特定的文件,再有就是檢查某個(gè)指定的鏈接是否存在之類的方法。
不過(guò)你還是有其他選擇,比如使用 while true 循環(huán)來(lái)把事情搞定:
在上面這個(gè)示例中,>/dev/null 2>&1 會(huì)讓程序的輸出重定向到 /dev/ null。標(biāo)準(zhǔn)錯(cuò)誤和標(biāo)準(zhǔn)輸出都會(huì)被包含進(jìn)去。
這是我認(rèn)為最酷的Linux命令行技巧之一。
按內(nèi)存資源的使用量對(duì)進(jìn)程進(jìn)行排序
ps aux | sort -rnk 4:
按 CPU 資源的使用量對(duì)進(jìn)程進(jìn)行排序
ps aux | sort -nk 3:
如果想要檢查你的機(jī)器架構(gòu),那就執(zhí)行 getconf LONG_BIT。
可以同時(shí)查看多個(gè)日志文件
大部分人查看日志用什么命令?回答可能是 tail 命令。不過(guò)如果要查看很多日志文件的時(shí)候, tail 就顯得比較麻煩了。這個(gè)時(shí)候就輪到我們的multi-tail 命令登場(chǎng)了!不僅支持文本高亮顯示,還支持內(nèi)容過(guò)濾和更多的其他功能哦~
有時(shí)候你需要安裝一下才能運(yùn)行這條命令,不過(guò)也非常簡(jiǎn)單apt-get install multitail 輕松搞定。
回到你操作過(guò)的上一個(gè)目錄去
返回上一個(gè)目錄的操作非常簡(jiǎn)單,cd – 就可以了。
讓非交互式 Shell 會(huì)話可進(jìn)行交互
想要這樣做,那就把設(shè)置從 ~/.bashrc 改成 ~/.bash_profile 吧。
定時(shí)的監(jiān)視性命令輸出
使用 watch 命令(watch df -h),你就可以查看到任何命令的任何輸出。例如,你可以查看可用空間以及它的使用量增長(zhǎng)情況。
通過(guò)利用 watch 命令來(lái)操作會(huì)變化的數(shù)據(jù),你可以盡情想象自己能拿這個(gè)來(lái)做些什么哦。
在會(huì)話關(guān)掉以后繼續(xù)運(yùn)行程序
正常情況下,你運(yùn)行了一個(gè)后臺(tái)程序,當(dāng)你關(guān)閉shell會(huì)話的時(shí)候這個(gè)程序也會(huì)隨之被殺掉。有的情況下需要讓程序繼續(xù)運(yùn)行應(yīng)該怎么做?
這個(gè)可以用 nohup 命令做到 – 該指令表示不做掛斷操作:
nohup wget site.com/file.zip
這個(gè)命令大部分人都不會(huì)用,這全拜 screen 環(huán)境所賜:
這樣會(huì)在同一個(gè)目錄下生成一個(gè)名稱為 nohup.out 的文件,其中包含了正在運(yùn)行的程序的輸出內(nèi)容:
命令很酷,對(duì)吧?
自動(dòng)對(duì)任何命令回答 Yes 或者 No
如果你想自動(dòng)化需要向用戶說(shuō)的 Yes 的過(guò)程,可以使用 yes 命令來(lái)實(shí)現(xiàn):yes | apt-get update。
也許你想做的是自動(dòng)地說(shuō)“No”。這個(gè)可以使用 yes no | 命令來(lái)實(shí)現(xiàn)。
創(chuàng)建具有指定大小的文件
可以使用 dd 命令來(lái)創(chuàng)建出具有指定大小的文件:dd if=/dev/zero of=out.txt bs=1M count=10。
這樣就會(huì)創(chuàng)建出一個(gè) 10 MB 的文件,填充零作為內(nèi)容:
以根目錄用戶來(lái)運(yùn)行最后一個(gè)命令
有時(shí),你會(huì)忘記在需要 root 權(quán)限的命令之前敲入 sudo。這時(shí)候你沒(méi)必要去重寫命令; 只要輸入 sudo !! 就行了。
對(duì)命令行會(huì)話進(jìn)行記錄
如果想要把自己在 shell 屏幕上敲的內(nèi)容記錄下來(lái),可以使用 script 命令將所有敲寫的內(nèi)容保存到一個(gè)名為 typescriptscript 的文件中去。
等你敲入 exit 命令以后,所有命令就都會(huì)被寫入該文件,以便你事后再回過(guò)頭去查看。
用標(biāo)簽符號(hào)替換空格符
可以使用 tr 命令替換任何字符,這個(gè)用起來(lái)非常方便:cat geeks.txt | tr ‘:[space]:’ ‘ ’ > out.txt.
將文件內(nèi)容轉(zhuǎn)換為大寫或者小寫
可以這樣實(shí)現(xiàn):cat myfile | tr a-z A-Z> output.txt。
強(qiáng)大的 Xargs 命令
xargs 命令是最重要的 Linux 命令行技巧之一。你可以使用這個(gè)命令將命令的輸出作為參數(shù)傳遞給另一個(gè)命令。例如,搜索 png 文件然后對(duì)其進(jìn)行壓縮或者其它操作:
find. -name *.png -type f -print | xargs tar -cv*** images.tar.gz
又或者你的文件中有一個(gè) URL 的列表,而你想要做的是以不同的方式下載或者處理這些 URL,可以這樣做:
cat urls.txt | xargs wget
請(qǐng)你要記得,第一個(gè)命令的輸出會(huì)在 xargs 命令結(jié)尾處傳遞。
那如果命令需要中間過(guò)程的輸出,該怎么辦呢?這個(gè)簡(jiǎn)單!
只需要使用 {} 并結(jié)合 -i 參數(shù)就行了。如下所示,替換在第一個(gè)命令的輸出應(yīng)該去的地方的參數(shù):
ls /etc/*.conf | xargs -i cp {} /home/likegeeks/Desktop/out
這只是 Linux 命令行技巧其中的幾個(gè)而已。你可以使用其他命令來(lái)做一些更 HAPPY 的事情,比如 awk 命令和 sed 命令!
如果你知道一些我在這里沒(méi)有提到的任何其它的極客命令,歡迎評(píng)論。
-
Google
+關(guān)注
關(guān)注
5文章
1754瀏覽量
57386 -
Linux
+關(guān)注
關(guān)注
87文章
11215瀏覽量
208740 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
8979瀏覽量
85100
原文標(biāo)題:最實(shí)用也最容易被遺忘的 Linux 命令行使用技巧
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論