最牛B的 Linux Shell 命令 系列連載(四)

1.查看ascii碼錶

1
man 7 ascii

不少人初學編程都會接觸到ascii碼的概念,有時候爲了查某個符號的ascii值,可能還得翻箱倒櫃找出當年的課本?Linux Manpage裏面其實包含了不少相似的實用資料,上述命令就能很詳細的方式解釋ascii編碼,固然這裏還有在線版html

man命令的第二個參數是區域碼,用來區分索引詞的範圍,好比printf,在C標準庫裏面的printf跟bash當中的printf是不一樣的,前者的查詢是man 3 printf,後者是man 1 printf。若是這個區域碼省略,就會從1開始搜索,直到找到爲止。正則表達式

命令man man能夠看到詳細的解釋shell

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區裏面的資料一般最酷:windows

2.簡易計時器

1
time read

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

time是用來計算一個進程在運行到結束過程耗費多少時間的程序,它的輸出一般有三項:bash

1
2
3
4
5
$ time ls /opt
...
real    0m0.008s
user    0m0.003s
sys     0m0.007s

real指整個程序對真實世界而言運行所需時間,user指程序在用戶空間運行的時間,sys指程序對系統調用鎖佔用時間。服務器

read原本是一個讀取用戶輸入的命令,常見用法是read LINE,用戶輸入並回車後,鍵入的內容就被保存到$LINE變量內,但在鍵入回車前,這個命令是一直阻塞的。網絡

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

3.遠程關掉一臺Windows機器

1
net rpc shutdown -I IP_ADDRESS -U username%password

Windows平臺上的net命令是比較強大的,由於其後臺是一個RPC類的系統服務,你們應該看過win下用net use \\ip\ipc$ *這樣一個命令創建IPC空鏈接,***主機的事情。

Linux下的net命令是samba組件的程序,一般包含在smbclient內,能夠跟windows主機的文件、打印機共享等服務進行通信,可是也支持rpc命令。

上述命令就是在遠程Windows主機上執行了shutdown命令。固然這不必定成功,關係到win主機上面的安全設置。net命令可以控制到win主機就是了。

4.在一個子shell中運行一個命令

1
(cd /tmp && ls)

固然這只是演示,要查看目錄固然能夠ls /tmp

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

在Shell編程中還有不少使用上引號來括住一個命令:`ls /tmp`,這也是子shell過程。但是上引號的方法沒法嵌套,而使用小括號的方法能夠,一個比較糾結的例子是:

1
echo $(echo -e \\x$(printf "%x" 65))

5.利用中間管道嵌套使用SSH

1
ssh -t host_A ssh host_B

若是目標機器host_B處於比較複雜的網絡環境,本機沒法直接訪問,但另一臺host_A可以訪問到host_B,並且也能被本機訪問到,那上述命令就解決了方便登陸host_B的問題。

但理論上這個過程是能夠無限嵌套的,好比:

1
ssh -t host1 ssh -t host2 ssh -t host3 ssh -t host4 ...

嗯那神馬FBI CIA的,有本事來捉我吧~

6.清空屏幕

1
<CTRL+l>;

這個跟以前介紹的reset命令重置終端的做用有些相似,其實都只是發送一段控制序列,讓終端的顯示覆位。

還能夠這樣運行:

1
tput clear

tput是專門用來控制終端的一個小工具,也挺強大的,詳細信息運行man tput查看。

7.我想知道一臺服務器何時重啓完

1
ping -a IP

系統管理員最常作的事情是重啓系統。可是服務器的重啓過程每每得花上好幾分鐘,什麼你的服務器4個scsi卡?16個硬盤?系統是Redhat?還徹底安裝全部組件?好吧,它重啓的時間都夠你吃頓飯了,因此我很想知道它何時回來。

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

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

1
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

這行命令組合得很妙:

history輸出用戶了命令歷史;awk統計並輸出列表;sort排序;head截出前10行。

9.檢查Gmail新郵件

1
2
3
4
5
6
curl -u you@gmail.com --silent "https://mail.google.com/mail/feed/atom" |
  perl -ne \
  '     print "Subject: $1 " if /<title>(.+?)<\/title>/ && $title++;     print "(from $1)\n" if /<email>(.+?)<\/email>/;   '

Gmail的一個特點是支持Atom feed輸出郵件列表,因此老是見到不少Gmail郵件提醒器之類的,由於開發特簡單,atom很方便。

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

10.用Telnet看《星球大戰》

1
telnet towel.blinkenlights.nl

沒什麼好解釋的,就是ASCII藝術之一。若是你有ipv6鏈接,還能看到彩色版的。牛吧?

相關文章
相關標籤/搜索