有哪些命令行的軟體堪稱神器?


ag:比grep、ack更快的遞歸搜索文件內容。

tig:字元模式下交互查看git項目,可以替代git命令。

mycli:mysql客戶端,支持語法高亮和命令補全,效果類似ipython,可以替代mysql命令。

jq: json文件處理以及格式化顯示,支持高亮,可以替換python -m json.tool。

shellcheck:shell腳本靜態檢查工具,能夠識別語法錯誤以及不規範的寫法。

yapf:Google開發的python代碼格式規範化工具,支持pep8以及Google代碼風格。

mosh:基於UDP的終端連接,可以替代ssh,連接更穩定,即使IP變了,也能自動重連。

fzf:命令行下模糊搜索工具,能夠互動式智能搜索並選取文件或者內容,配合終端ctrl-r歷史命令搜索簡直完美。

PathPicker(fpp):在命令行輸出中自動識別目錄和文件,支持互動式,配合git非常有用。

運行以下命令:


git diff HEAD~8 --stat | fpp

htop: 提供更美觀、更方便的進程監控工具,替代top命令。

axel:多線程下載工具,下載文件時可以替代curl、wget。


axel -n 20 http://centos.ustc.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso

sz/rz:互動式文件傳輸,在多重跳板機下傳輸文件非常好用,不用一級一級傳輸。

cloc:代碼統計工具,能夠統計代碼的空行數、注釋行、編程語言。

ccache:高速C/C++編譯緩存工具,反覆編譯內核非常有用。使用起來也非常方便:

gcc foo.c

改成:

ccache gcc foo.c

tmux:終端復用工具,替代screen、nohup。

neovim: 替代vim。

script/scriptreplay: 終端會話錄製。

script -t 2&>time.txt session.typescript # 錄製開始
# your commands
exit # 錄製結束

回放:

scriptreplay -t time.txt session.typescript

you-get: 非常強大的媒體下載工具,支持youtube、google+、優酷、芒果TV、騰訊視頻、秒拍等視頻下載。

還有mac專有的pbcopy/pbpaste:

把命令行輸出拷貝到系統粘貼板:

cat test.sh| pbcopy

把系統粘貼板內容拷到終端:

pbpaste

mac下的say命令支持多種語言(英語、普通話、粵語)文本朗讀,支持各種銷魂恐怖的語氣。跑這個命令感受下,小心被嚇著了:

for i in `say -v "?" | cut -d " " -f 1`; do echo $i say -v "$i" "Hello World";done

更具體的列表可參考:int32bit/dotfiles 。


必須是thefuck啊。https://github.com/nvbn/thefuck

用途是每次命令行打錯了以後,打一句fuck就會自動更正命令。比如apt-get打成了aptget。fuck以後自動變成apt-get。但還是沒加sudo。再fuck,成功!

又比如git branch打成了git brnch。fuck!更正成git branch。

又比如python打成了puthon。fuck!一秒變python。

而且關鍵是每次打命令和內心os完全一致,有種人機合一的快感。fuck!


i7z cpu軟體神器,hardinfo 整體主機硬體情況 類似魯大師AIDA64

screenfetch查看主機概要信息

nethogs 按進程實時統計網路帶寬

五星推薦 nload 監控主機網路流量

findmnt 樹形結構列出所有已經載入的文件系統

神器 iotop實時檢測監視磁碟io信息使用狀態

bmon 實時監視指定網卡流量

ncdu 磁碟使用分析器

cloc 代碼統計工具 類似wc

nmap 強大掃描器(有windows版本

anbox Linux下完全運行安卓系統雖然是沙盒

arpwatch arp活動監視器

pidstat進程和內核統計信息

atop htop強大的資源管理器

glances 系統主機 目前運行狀態信息 包括開機時間

bwm-ng 實時網速查看

pyDash 是一個輕量且基於 web 的 Linux 性能監測工具,它是用 Python 和 Django

在 Linux 上使用 Meld 比較文件夾(圖像化)

極速蝸牛:apt-fast

ngxtop:在命令行實時監控 Nginx 的神器

Bash Getopts - 讓你的腳本支持命令行參數

Linux 命令行下嗅探 HTTP 流量的工具:httpry

mps-Youtube命令行youtube播放器

fping hping ping的升級版

vmstat iostat dastat

cfdisk 磁碟分區工具

yes 死機神器

mc 文件管理器

ip 新工具 ifconfig會被這個所淘汰!比如 ip route list 查看當前主機路由表。

w3m elink 終端瀏覽器 簡直是神器!(終端瀏覽器有很多)

ipcs 進程間通信設施狀態

pgreg 和pidof 查找基於名稱來查找進程

pkill 按進程的名稱殺死進程!(這個工具我很驚訝!)

dd (有語法,我常用的是將iso寫入光碟U盤)

col 過濾其他指令控制字元

iptraf (網卡監聽工具)神器!

jion 合併指定文件中相同欄位

sl 火車彩蛋 oneko貓捉老鼠 espeak星球大戰!(無卵用!這類彩蛋有很多!)

swaks 郵件偽造

cv簡直就是linux神器(顯示複製拷貝進度條!)

hydra九頭龍 暴力破解

cpustat 是 Linux 下一個強大的系統性能測量程序 (新工具)

arbtt,一個開源的自動記錄軟體,

GUI工具Psensor,它允許你在Linux中監控硬體溫度

lshw命令是一個綜合性硬體查詢工具

ctrl+a 終端開始,ctrl+e(終端結尾)(方便)

last lastlog(運維神器和我們普通用戶沒關係)

iftop網路流量 nc(catnet)瑞士軍刀

aptitude apt源管理工具

x86info是一個為了展示基於x86架構的CPU信息

cpuid命令的功能就相當於一個專用的CPU信息工具

brctl網橋工具

mtr網路診斷工具

tee 指定的文件保存制定文件列表中

spilt指定文件分割成若干小文件(多半用於分割日誌)

chroot(卧槽我現在還不會用這個命令!)

Nessus的漏洞掃描

route-n(查看ip與路由) cat/proc/net/arp(查看arp)cat /proc/net/netlink(查看哎呀忘了)

msfconsole後門工具(逃不過殺軟,除非加殼。安卓木馬要生成簽名!)

crunch字典生成工具(生成tb字典,使用小心大字典打開生成會讓電腦死機!)

PentestBox.exe windows10下滲透工具

smb分析工具

ptunnel tcp

hashcat多線程密碼破解

ttyload 在終端中用彩色顯示 Linux 的平均負載

resize -s 調節中端

samdump2破解xp vista系統賬戶工具(我天朝pe秒了他)

Zypper是SUSE Linux中用於安裝,升級,卸載,管理倉庫、進行各種包查詢的命令行介面 ( SUSE Linux)僅能用於!

boxex 是 linux 下的一款命令行工具,可以用字元組成盒子把你的文字包圍在裡面。 (挺有意思的!)

開源的世界軟體,有很多未知,目前能想到這是就只有這些了。安裝和用法自行百度。我會補充!,錯誤私信告知。我就不一一截圖麻煩!看到下面的按贊按鈕了嗎?你不點一下嗎!


  • tldr: 如果你經常不想詳讀man文檔,那麼你應該試試這個小工具。

$ man tar

$ tldr tar

  • cloc: 用來統計代碼行數,統計結果比較分類比較詳細,支持大部分編程語言。

  • figlet: 將輸入字元轉換成藝術字體。

  • mackup: 應用偏好設置備份和同步工具。支持多種雲盤,支持大部分應用程序的配置文件(也可以自定義)。

昨天剛下了一個感覺很實用的工具:PM2

用以在後台運行和管理進程

先放張剛截的圖:

可以看到我的 pm2 list 中有 aria2c,npm,gulp 和 hexo。

這樣就節省了好多個窗口,管理起來也十分方便。

比如:

# 開始
pm2 start &
# 停止
pm2 stop &

如果需要監聽的話,在 start 命令後面加個 --watch 即可。


上面只是 pm2 最基礎的用法,它的命令和功能很多,具體可以看官網的文檔: Document · PM2。


再舉個栗子吧~

後台運行擔心看不到 log?pm2 也已經幫你考慮了:

pm2 monit

這樣就能看到全局的 log 啦。


看了這麼多,沒人提到httpie。看圖吧。command line HTTP client

https://httpie.org/static/img/httpie2.png?v=72661be530fde9d07e03be9df60312da


作為 首席 markdown 程序員,最喜歡 Graphviz 還有 Pandoc 了


Graphviz 可以將文本轉成圖表,如

home-&>products-&>widgets

Pandoc 可以將 markdown 轉成各式各樣的格式:PDF、DOCX、EPUB、MOBI

我在 GitHub 寫的七本開源電子書都是用 Pandoc 轉的,模板見:phodal/ebook-boilerplate


nmon,性能監控,CPU,內存,磁碟IO,網路IO
awk,表處理,很強大的二維表處理功能,可以對格式化文本輸出進行處理
tcpdump,網路抓包,分析網路問題的利器,也是理解網路協議的幫手。
strace,列印出進程調用了哪些系統調用。
objdump,列印目標碼和反彙編結果
xargs,讀取輸入流並將讀取的文本作為指定命令行工具的命令行參數。
jq,命令行的json查詢和格式化工具,適合查看rest介面的輸出
curl,命令行請求HTTP服務,可以用腳本做很多事,比如測試rest服務
fzf,互動式文本搜索
nano,簡單好用的文本編輯器,對於輕度使用者,不用記快捷鍵。
nohup,在後台運行程序,程序不會隨著shell關閉而退出。
nc,可以很方便模擬網路伺服器或客戶端。
ssh,可以通過腳本自動連接到其他主機,在上面執行操作。


說說我平時常用又好用的吧:

aria2c :度盤下載全靠它

iptraf-ng :網路流量分析

bwm-ng :實時網速查看

glances :綜合信息查看

smartctl :監視硬碟健康

htop :互動式進程管理

......


ag, ggreer/the_silver_searcher, 高速文本搜索.

nmap,Nmap: the Network Mapper, 網路工具.

dig, dns 工具.

the f*ck. nvbn/thefuck, 智能糾正工具.

rsnapshot, rsnapshot | rsnapshot, 備份工具.

imagemagick套件,Convert, Edit, Or Compose Bitmap Images @ ImageMagick, 圖像操作工具.

htop, htop - an interactive process viewer for Unix, 進程管理器


say, mac 特有. 文本朗讀.


以上為個人覺得極為好用的幾個應用.


來幾個綜合性的目錄:

aharris88/awesome-cli-apps

jlevy/the-art-of-command-line


musicbox(良心推薦)

網易雲音樂命令行版本,使用Python 3.5,vimer式快捷鍵操作,比用網易雲音樂Linux客戶端舒服的多。

高品質網易雲音樂命令行版本,簡潔優雅,絲般順滑,基於Python編寫。

項目地址:darknessomi/musicbox


分享些好玩的小東西吧。。。不一定是神器。。但是都挺常用(的吧)。

很多都是在 http://asciinema.org 上面發現的,另外 asciinema 自己就是一個 terminal 錄屏軟體,非常適合分享,我給別人寫教程的時候都是直接用 acsiinema 錄屏然後分享。

cowsay. 可以把 stdin 的東西放到一頭奶牛的對話框里。如圖

lolcat. 彩虹版 cat。。。

這倆其實經常一起用,做 presentation 的時候我就特別喜歡一起用。而且 cowsay 也可以自己定義 ascii 的圖像。比如

nyancat. 屏保。上課、寫作業待機的時候可以用。。

mapscii. 命令行地圖。。。好像沒什麼卵用。。

tty-solitaire. 紙牌。。ssh 的時候都可以打把牌。。!


談談我自己覺得挺不錯的幾個工具。

有人提到了mac下面的open,其實linux桌面有一個類似的xdg-open;但是不幸的是open這個命令被另一個幾乎不會被用到的程序給用到了。所以我比較喜歡的是在linux下

alias open=xdg-open

mac下的pbcopy/pbpaste可以在Linux下模擬。

alias pbcopy="xsel --clipboard --input"
alias pbpaste="xsel --clipboard --output"

mac下面的homebrew在Linux也有移植版Linuxbrew;要注意的是不是所有的mac下的程序都能裝,且安裝目錄默認是~/.linuxbrew下。

rg(ripgrep,BurntSushi/ripgrep)全面替換ag(ggreer/the_silver_searcher)了,性能比較參見README.md 。配合find, locate, sed, awk, ps之類能解決很多問題。

rsync在處理大目錄文件的時候經常會比cp/mv/rm更有用。

用zsh,且極力不推薦fish(兼容性問題)。配套兩個插件zsh-history-substring-search和zsh-syntax-highlighting;再加上各種autocomplete (另外, python程序還有個argcomplete)。不需要TheFuck這類嘩眾取寵的工具。

zsh對目錄切換的支持很好。通過下面的配置還可以使用 `cd -`, `cd -3`這類。還可以配合一下robbyrussell/oh-my-zsh的z這個插件。其他可以參考各種github上的各種dotfiles。

setopt pushd_ignore_dups
setopt pushdminus
setopt auto_pushd
alias ...="cd ../.."

關於pager,less比more有用得多。因為經常用"| less"我給取了個alias(僅zsh)。

alias -g L=" | less"

另外,less是有lesspipe的,意味著你可以直接"less file.tar.gz"或"less file.jar"查看壓縮包內部文件結構;man的pager設置成less還可以有ANSI的顏色, 而不至於黑白manual了。

export PAGER="less"
export LESS="-R -i -g -c -W"
export LESSOPEN="|/usr/bin/lesspipe %s"
export LESSCLOSE="/usr/bin/lesspipe %s %s"
# color man
export LESS_TERMCAP_mb=$"E[01;31m"
export LESS_TERMCAP_md=$"E[01;31m"
export LESS_TERMCAP_me=$"E[0m"
export LESS_TERMCAP_se=$"E[0m"
export LESS_TERMCAP_so=$"E[01;44;33m"
export LESS_TERMCAP_ue=$"E[0m"
export LESS_TERMCAP_us=$"E[01;32m"下

tldr只是新手友好的權宜之計,最終還是要man。

cloc遠比wc之類強大,個人比較常用的方式是

git ls-files| xargs cloc -v=1 --skip-archive="(zip|tar(.(gz|Z|bz2|xz|7z))?)"

更新: Rust提供了比cloc更好的loc(cgag/loc),號稱可以快100倍(平均性能沒有這麼快,但是足夠棄用cloc了;下面是我對我自己的某一個目錄的測試結果,部分結果已省略,且cloc和loc的統計不完全一樣)。

time cloc --skip-archive="(zip|tar(.(gz|Z|bz2|xz|7z))?)" .
----------------------------------------------------------------------------------------
SUM: 149514 2461056 3111573 16006094
----------------------------------------------------------------------------------------
real 1779.77s
user 697.37s
sys 785.16s

######
time loc .
--------------------------------------------------------------------------------
Total 174876 24769963 2713367 3258688 18797908
--------------------------------------------------------------------------------
real 9.18s
user 30.99s
sys 14.04s

httpie個人認為作為普通用戶並不實用,可以被curl/wget/axel/aria2和chrome下的postman這類擴展取代。另外,wget可以方便爬某個uri的子文件。我比較喜歡用axel (或aria2)下載。

alias dl="axel -a -n 8 -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6" -H "Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300""
alias adl="aria2c -s16 -x16" #aria2

Rust還提供了snatch(derniercri/snatch), 不過暫時沒有發現比axel/aria2c好的地方。

you-get和youtube-dl可以下載視頻,前者可以下載各種網站的視頻;後者對youtube視頻下載支持非常好(也能下載其他網站視頻)。可以配合chrome下Video Downloader professional使用。

前面有人提到了shellcheck等一些linter,我覺得比較好的是配合編輯器來用,比如vim的syntastic。

經常用dot(graphviz)可以考慮vimdot;latexmk非常適合寫LaTeX的人用。

tig和fpp個人感覺用處不大——如果用emacs的話,那magit完全可以覆蓋他倆。ranger,vifm和mc也遠沒有emacs的文件管理方便。cgdb以及基於vim的gdb最好不要用,試試emacs或主流IDE的debugger吧。

cmus用來聽音樂,比mpd方便簡潔,比moc/mpg123支持多很多。

另外一些重量級工具ffmpeg,mplayer,imagemagick, pandoc, tmux大多數都被提到過了。


ffmpeg
這玩意可以實現:視頻拆幀,合併幀為視頻,視頻轉gif,視頻轉碼,分離音視頻......


htop

這個是我迄今為止見過最好的進程管理軟體了,使用簡單,信息豐富,排序方便,只有你想不到的,沒有它做不到的,還有顏色啊親。

前段時間用tsfresh提feature的時候就靠htop調整進程數了。

簡直神器。


C/C++寫的一個百度網盤工具,可以在linux終端中使用。 這是通過分析網盤網站得到的直接介面,不需要創建應用。

支持多線程下載和下載時斷點續傳。
支持快速上傳和多線程分片上傳。
支持線程限速。具體查看"pcs set"和"pcs context"命令的說明。
支持AES-CBC-128, AES-CBC-192, AES-CBC-256加密。
https://github.com/GangZhuo/BaiduPCS


--------------------2017-05-05 更新---------------------

之前用到houtianze/bypy,Python實現的,在我這裡效果不如PCS,可以作為備用。

下載工作鏈:VPS 上soimort/you-get 視頻---&>pcs upload ---&> (本地)pcs download(sync)

現在linux 下用的多線程下載工具有eribertomota/axel,aria2,都可以試試。


添一個http-server indexzero/http-server

很多時候需要區域網共享文件,有些大文件也沒法用微信/qq傳,或者是從伺服器上需要下載文件到本地scp會很慢,如果用python -m SimpleHTTPServer 會發現伺服器性能很差,且不支持並發下載。這時就可以用http-server。

執行 http-server . 就可以把本地目錄文件共享出來。


Starting up http-server, serving .
Available on:
http://127.0.0.1:8080
http://192.168.xx.xx:8080
Hit CTRL-C to stop the server

然後打開 http://192.168.xx.xx:8080 (該ip為網卡ip)網頁即可下載。


you-get soimort/you-get

用來下載各種視頻優酷,b站,騰訊都支持

PS:這軟體會間歇抽風,同一個網站,有時候能下載,有時不能。


tpp

tpp就是命令行下的ppt,可以用於演示文稿,哈哈。

該神器的功效:想想你在學校,或者單位,進行一場彙報,等到你上台講的時候,你的女神坐在下面。

別人都是用的ppt或keynote,而你頂著數日沒洗的頭髮,拖著因為昨夜草草打完一個飛機後還略顯疲憊的身體,緩步走上台去。

女神不解的看著你黑色的屏幕,你偷瞄一眼後,心裡得意至極,但還故意透露出不屑的眼神,你在你的電腦上,迅速敲除幾行命令,很快全場都驚訝了:哇!他太酷了,竟然用命令行來做ppt!

這時的你,強忍著內心的喜悅,又裝了一個101分的b。

-------

lynx

lynx是一款linux下的web瀏覽器。可用於瀏覽純文本網站。

該神器功效:在公司里,別人瀏覽網站,都是用瀏覽器。

而作為資深屌絲極客的你,在中午午休,有妹子從你的工位前來來往往的時候。在和一眾同事,產品經理討論某個問題需要上網查找資料的時候。在某個女神向你請教it問題的時候。你沒有隨波逐流的打開瀏覽器,而是飄逸的掏出終端命令行,嫻熟的輸入了lynx命令,專註的通過lynx瀏覽器查詢網頁內容的時候。

這時候的你,所透露出來的內在氣質,一定會讓女神折服,女神或許對你說:哇,你認真盯著屏幕鑽研的樣子好迷人啊!能否告訴我有哪些命令行的軟體堪稱神器?我以後也要和你一起用命令行。


busybox


推薦閱讀:

Windows系統的註冊表有哪些缺陷?
Linode 里為什麼 Ubuntu 最火呢?
ubuntu 網路連接後有沒有自動執行的腳本?
Linux 怎麼讀?
我們國家的超算現在什麼水平?還是用Linux系統?

TAG:macOS | 軟體 | MicrosoftWindows | Linux | 命令行界面CLI |