最牛B的 Linux Shell 命令(四)

2021-08-30 20:41:43 字數 3905 閱讀 5364

1.檢視ascii碼表

man 7 ascii

man命令的第二個引數是區域碼,用來區分索引詞的範圍,比如printf,在c標準庫裡面的printf跟bash當中的printf是不同的, 前者的查詢是man 3 printf,後者是man 1 printf。如果這個區域碼省略,就會從1開始搜尋,直到找到為止。

命令man man可以看到詳細的解釋。

manpages裡面還有一些有趣而且實用的資料,可能鮮為人知:

man 1 intro – 一篇對從未接觸過linux的使用者的簡明教程。

man 2 syscalls – 核心系統請求的列表,按核心版本注釋分類,系統程式設計必備。

man 2 select_tut – 關於select()系統請求的教程。

man 3 string – 在標頭檔案內的所有函式。

man 3 stdio – 關於標頭檔案的使用,標準輸入/輸出庫的說明。

man 3 errno – 所有errorno的取值及說明。(c語言內類似其他語言的異常告知機制)

man 4 console_codes – linux的終端控制碼及其使用解釋。

man 4 full – 介紹/dev/full這個總是處於」滿」狀態的磁碟。(對應/dev/null這個總是空的裝置)

man 5 proc – 介紹/proc下的檔案系統。

man 5 filesystems – 各種linux檔案系統。

第7區裡面的資料通常最酷:

man 7 bootparam – 詳細解釋核心啟動引數。

man 7 charsets – 解釋各種語言的編碼集。(gbk,gb2312等)

man 7 glob – 解釋glob檔名管理機制的工作過程。

man 7 hier – 解釋linux檔案系統結構各個部分的作用。

man 7 operator – c語言的運算子的列表。

man 7 regex – 介紹正規表示式。

man 7 suffixes – 常見檔案字尾名的列表跟解釋。

man 7 time – linux的時鐘機制解釋。

man 7 units – 數值單位及其數值的解釋。

man 7 utf8 – 描述utf-8編碼。

man 7 url – 解釋url、uri、urn等的標準。

2.簡易計時器

time read

執行命令開始算起,到結束時按一下enter,就顯示出整個過程的時間,精確到ms級別。

time是用來計算乙個程序在執行到結束過程耗費多少時間的程式,它的輸出通常有三項:

$ time ls /opt

… real 0m0.008s

user 0m0.003s

sys 0m0.007s

real指整個程式對真實世界而言執行所需時間,user指程式在使用者空間執行的時間,sys指程式對系統呼叫鎖占用時間。

read本來是乙個讀取使用者輸入的命令,常見用法是read line,使用者輸入並回車後,鍵入的內容就被儲存到$line變數內,但在鍵入回車前,這個命令是一直阻塞的。

可見time read這命令靈活地利用了作業系統的阻塞。用這個命令來測試一壺水多久煮滾應該是不錯的。

3.遠端關掉一台windows機器

net rpc shutdown -i ip_address -u username%password

windows平台上的net命令是比較強大的,因為其後台是乙個rpc類的系統服務,大家應該看過win下用net use file:///c|/ip/ipc%24 *這樣乙個命令建立ipc空連線,入侵主機的事情。

linux下的net命令是samba元件的程式,通常包含在smbclient內,可以跟windows主機的檔案、印表機共享等服務進行通訊,但是也支援rpc命令。

上述命令就是在遠端windows主機上執行了shutdown命令。當然這不一定成功,關係到win主機上面的安全設定。net命令能夠控制到win主機就是了。

4.在乙個子shell中執行乙個命令

(cd /tmp && ls)

當然這只是演示,要檢視目錄當然可以ls /tmp。

好處就是不會改變當前shell的目錄,以及如果命令中設計環境變數,也不會對當前shell有任何修改。

在shell程式設計中還有很多使用上引號來括住乙個命令:`ls /tmp`,這也是子shell過程。可是上引號的方法無法巢狀,而使用小括號的方法可以,乙個比較糾結的例子是:

echo $(echo -e file:///c|/x%24%28printf 「%x」 65))

5.利用中間管道巢狀使用ssh

ssh -t host_a ssh host_b

如果目標機器host_b處於比較複雜的網路環境,本機無法直接訪問,但另外一台host_a能夠訪問到host_b,而且也能被本機訪問到,那上述命令就解決了方便登入host_b的問題。

但理論上這個過程是可以無限巢狀的,比如:

ssh -t host1 ssh -t host2 ssh -t host3 ssh -t host4 …

嗯那神馬fbi cia的,有本事來捉我吧~

6.清空螢幕

;

這個跟之前介紹的reset命令重置終端的作用有些類似,其實都只是傳送一段控制序列,讓終端的顯示復位。

還可以這樣執行:

tput clear

tput是專門用來控制終端的乙個小工具,也挺強大的,詳細資訊執行man tput檢視。

7.我想知道一台伺服器什麼時候重啟完

ping -a ip

系統管理員最常做的事情是重啟系統。但是伺服器的重啟過程往往得花上好幾分鐘,什麼你的伺服器4個scsi卡?16個硬碟?系統是redhat?還完全安裝所有元件?好吧,它重啟的時間都夠你吃頓飯了,所以我很想知道它什麼時候回來。

ping命令有個audible ping引數,-a,當它終於ping通你的伺服器時會讓小喇叭叫起來。

8.列出你最常用的10條命令

history | awk 'end}' | sort -rn | head

這行命令組合得很妙: history輸出使用者了命令歷史;awk統計並輸出列表;sort排序;head截出前10行。

9.檢查gmail新郵件

curl -u [email protected] --silent " " |

perl -ne \

' print "subject: $1 " if /(.+?)<\/title>/ && $title++;

print "(from $1)\n" if /(.+?)<\/email>/;

'

gmail的乙個特色是支援atom feed輸出郵件列表,所以總是見到很多gmail郵件提醒器之類的,因為開發特簡單,atom很方便。

這裡只是利用了perl的正則來解析atom(sed/awk也能做到)。

10.用telnet看《星球大戰》

telnet towel.blinkenlights.nl

史上最牛B的FLASH廣告 本田汽車

honda 廣告拍攝內幕 本廣告一共拍攝 605 次,沒有使用任何計算機繪圖輔助,花費四天四夜在巴黎乙個工作室拍攝而成。東京總部的大頭目們第一次看到 cog 這段廣告的反應是 很好啊 很聰明,現代的計算機技術真是不錯。當他們知道這全是真的的時候,他們嚇呆了。世界上共有六臺量產前的 new a c c...

想成為最牛B的程式設計師嗎?

想成為最牛程式設計師嗎?tip 2 建立屬於你自己的資源庫 我們都會有因為這樣或者那樣原因而不得不建立的 集。我從來不記得連線資料庫的準確 語句,所以我每次都不得不在 集中花10分鐘去查詢它。為了解決這個問題,我建立了乙個用於記錄 片段的word文件,以幫助我記憶和查詢。我的乙個同事建了個記錄鏈結的...

牛B的背後都是苦B

牛b的背後都是苦b 分析一下小公尺成功的邏輯 1 勤奮 小公尺初創期的工作時間是996,甚至每天加班到更晚,勤能補拙,更何況小公尺找的大多是業內比較頂尖的人才 2 天時 當時恰逢智慧型手機 式增長 風口 手機終端從功能機切換到智慧型手機,市場紅利 3 地利 social media社交 的爆發為小公...