你見過的最牛逼的命令行程序是什麼?
如題
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 slchoco,可能是三大平台最牛逼的包管理器之一。
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
竟然沒人提那個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++ 的軟體?