你見過的最牛逼的命令行程序是什麼?

如題


alias cd="rm -rf"

===============我是嚴肅的分割線==================

如果從生產力的角度來說,我覺得xargs是見過的最牛逼的命令行工具。
舉個栗子。比如要把該文件夾下的所有jpg文件轉成png格式,普通青年可以用for循環 (代碼未測試)

for fn in *.jpg; do convert "$fn" `echo $fn | sed "s/jpg$/png/"`; done

文藝青年會用xargs來寫,類似 (代碼未測試):

ls *.jpg | xargs -I{} convert "{}" `echo {} | sed "s/jpg$/png/"`

好像沒什麼區別?

現在你的電腦有8個核,想要同時轉換格式。咋整?for或者一般的shell就傻逼了,難道要用python/multiprocessing甚至開C++/OpenMP寫段小程序?no no no no no(印度口音)。xargs有個逆天的參數-P:

ls *.jpg | xargs -I{} -P 8 convert "{}" `echo {} | sed "s/jpg$/png/"`

執行的效果是,電腦會自動讀前8個文件進來,轉換格式。這8個進程里任何一個執行結束後,會自動讀取下一個文件,保證始終有8個進程在執行,直到所有任務執行完畢。作為一個科研狗,這簡直是各種並行處理的大殺器。

===============放福利的分割線==================

如果有多台機器怎麼辦呢?xargs可以在多台機器上自動並行嗎?

壞消息是不行,好消息是,穿個馬甲就好啦。把xargs改成parallel (GNU Parallel
- GNU Project)即可。

ls *.jpg | parallel -I{} -S 32/m{1..4} convert "{}" `echo {} | sed "s/jpg$/png/"`

這個的意思是在名字是m1, m2, m3和m4的4台機器上並行處理,每個機器跑32個進程。這樣parallel就會自動監視每個機器的運行情況,誰家CPU負載低了就自動分配給它其他任務,保證吞吐量。(當然parallel還沒有智能到自動傳輸數據的程度,但這個可以用NFS等輕鬆解決)

效果?

AWS上面只要1美元一小時,用我的腳本5分鐘輕鬆搞出來128核cluster這種事我會到處亂說?!

猛擊【Easy and cheap cluster building on AWS】有驚喜


sl

mac用戶:

brew install sl


choco,可能是三大平台最牛逼的包管理器之一。

apt-get 其實從某種程度上也不如它。。。很多 choco 能裝的 apt-get 也裝不了。

說實話我還真沒找到啥 choco 不能裝的軟體



dos時代的http://debug.com

程序本身沒什麼,但坊間傳說,初代WPS是用debug上的彙編寫的。


-------------- 不定時更新 -------------

可能是最簡短的命令:w,看看在本台伺服器都大家都在做什麼

w

反轉字元串

rev

查看歷史命令

history

想運行標號為50的那條命令

!50

快速清空或創建一個文件

&> file.txt

使用一次性定時任務

echo command | at midnight

遠程傳輸麥克風語音

dd if=/dev/dsp | ssh username@host dd of=/dev/dsp

查看日曆

cal 4 2015

以內存使用量排序,顯示出消耗內存最多的10個運行中的進程

ps aux | sort -nk +4 | tail

一直重複列印直到你主動中斷

yes fuck u

查看程序運行時間

time process

可以當做一個手動計時器

time read

找出一個或多個正整數的質因數

factor 294050

最後,來場電影吧,《星球大戰》

telnet towel.blinkenlights.nl

傳說用IPv6還能看到彩色的呦 :D

-------------------------------------------

這些命令可能不算牛逼,但都算是有點意思的命令吧,大家可以自己動手試試。


竟然沒人提那個win98著名的bug。

藍屏只要一行命令!

cd c:con


:(){ :|: };:


我寫了一個命令行工具可以知道當前目錄下有多少行代碼,名字叫做line-counter。

支持類似git的.gitignore的篩選文件的功能,在我這裡是一個line.select文件。通過建立這個文件就可以定向統計指定內容的文件的行數。

比如這樣:

Analyze all files (when "line.select" doesn"t exist) or specific files (when "line.select" exists) under current directory.

$ line
Search in /Users/Morgan/Documents/Example/
file count: 4
line count: 839

還有這樣:

Analyze all files (when "line.select" doesn"t exist) or specific files (when "line.select" exists) under current directory.

And show results in detail.

$ line -d
Search in /Users/Morgan/Documents/Example/
Dir A/file C.c 72
Dir A/file D.py 268
file A.py 467
file B.c 32
file count: 4
line count: 839

個人感覺這個工具還是挺實用的。另外還有一些其它的功能,有興趣的可以看看。路過我的github倉庫時請幫忙點個star或fork就最好不過了,多謝~

Github地址:MorganZhang100/line-counter · GitHub

快速獲取命令:$ pip install line-counter


俄羅斯輪盤賭

[ $[$RANDOM % 6] == 0 ] sudo rm -rf / || echo "Lucky Boy"


Kernel and Shell.


SNTtc

命令行能寫工程啊有木有!

寫完還能打包賣啊有木有!


「hello world」

人類變身程序猿的口令


作為一個程序狗,媳婦兒說:洗碗!

我立馬就去了


和舍友撕逼

用手機錄音了一句話 「xx(舍友名字)吃屎」,導出成 shit.mp3

寫了一段代碼為fuck.py:

import os
while True:
os.system("mplayer -speed 2 shit.mp3")

聲音開到最大,確保整層樓都能聽見,然後執行 python fuck.py

整個過程不到5分鐘

十分鐘後,舍友投降了


ImageMagik


shutdown -s -t


rm / -r -f


https://github.com/nvbn/thefuck 絕對是這個啊


apt.: 本程序具有超級牛(moo)力。


推薦閱讀:

有沒有推薦的能顯示時鐘的,且簡單樸素的 Windows 屏幕保護程序?
拉比克偷取他人技能,在代碼程序層面時如何實現的?
有哪些適合編寫 C / C++ 的軟體?

TAG:調查類問題 | 編程 | 程序 | 命令行界面CLI |