unix的奇怪而又好用的命令
使用*nix系統已經有一段時間了。但還是有一些命令是被我一直忽略的,真希望我能早幾年發現這些命令。
1. man ascii
這個命令會打印出八進位制、十六進位制和十進位制的ASCII碼錶。難以置信我是一個月之前才知道這個命令的。我總是使用google來查詢ASCII碼錶。這個命令其實更方便。
1 2 3 4 5 6 7 8 9 10 11 12 |
ASCII(7) BSD Miscellaneous Information Manual ASCII(7)
NAME
ascii -- octal, hexadecimal and decimal ASCII character sets
DESCRIPTION
The octal
set
:
000 nul 001 soh 002 stx 003 etx 004 eot 005 enq 006 ack 007 bel
010 bs 011 ht 012
nl
013 vt 014 np 015 cr 016 so 017 si
020 dle 021 dc1 022 dc2 023 dc3 024 dc4 025 nak 026 syn 027 etb
030 can 031 em 032 sub 033 esc 034 fs 035 gs 036 rs 037 us
|
要檢視更多資訊,請參考 ascii 手冊頁面。
2. cal
在很多系統上要顯示日曆一般要通過幾個步驟。其實你可以使用 cal 命令。
1 2 3 4 5 6 7 8 9 |
>
cal
August 2013
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
|
要檢視更多資訊,請參考 cal 手冊頁面。
3. xxd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
> xxd somefile.bin
0000000: 83ff 0010 8d01 0408 d301 0408 a540 0408 [email protected]
0000010: d701 0408 d901 0408 db01 0408 0000 0000 ................
0000020: 0000 0000 0000 0000 0000 0000 1199 0508 ................
0000030: df01 0408 0000 0000 e199 0508 1d9a 0508 ................
0000040: e501 0408 2912 0508 e901 0408 eb01 0408 ....)...........
0000050: ed01 0408 ef01 0408 39e0 0408 55e0 0408 ........9...U...
0000060: 71e0 0408 8de0 0408 a9e0 0408 39f7 0408 q...........9...
0000070: 6df7 0408 a5f7 0408 ddf7 0408 15f8 0408 m...............
0000080: 49f8 0408 81f8 0408 7de5 0408 0b02 0408 I.......}.......
0000090: 4ded 0408 a9ed 0408 1102 0408 c5e0 0408 M...............
00000a0: 1502 0408 1702 0408 1902 0408 1b02 0408 ................
00000b0: e50a 0508 1d0b 0508 590b 0508 2302 0408 ........Y...
#...
00000c0: 2502 0408 253d 0508 2941 0508 7106 0508 %...%=..)A..q...
00000d0: 8106 0508 690e 0508 990e 0508 c90e 0508 ....i...........
00000e0: 19e1 0408 3702 0408 3902 0408 3b02 0408 ....7...9...;...
|
這是另外一個讓我難以置信是最近才知道的命令。xxd可以生成所給與檔案的十六進位制拷貝,也可以將編輯好的十六進位制拷貝還原成二進位制格式。它也可以將十六進位制拷貝輸出成C的陣列,很方便:
1 2 3 4 5 6 7 |
> xxd -i data.bin
unsigned char data_bin[] = {
0x6d, 0x61, 0x64, 0x65, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x6c, 0x6f, 0x6f,
0x6b, 0x0a
};
unsigned int data_bin_len = 14;
|
我也用這個命令來通過比較兩個檔案的十六進位制拷貝來比較兩個二進位制檔案。要檢視更多資訊,請參考 xxd 手冊頁面。
4. ssh
ssh是我孰知的第一個稍複雜的unix工具,但是也是在不久前我才意識到除了使用它來登入到遠端機器以外,它有更多其他用途。
ssh和它附帶的工具可以用來:
1 在計算機之間傳遞檔案(使用scp)
2 X-forwarding – 連線到遠端的機器,並且開啟一個GUI應用,看起來它們就像在本地開啟的一樣,即使遠端的機器並沒有提供X服務。
3 埠轉發 – 將到本地埠的連線轉發到遠端機器的埠,或者將到遠端機器埠的連線轉發到本地埠
4 SOCKS 代理 – 允許你將一個支援SOCKET代理的應用上的所有連線轉發到遠端機器。這對於如何更安全使用公共wifi瀏覽網路和繞過嚴格的防火牆是很有用的。
5 在本地機器輸入一次密碼,然後就可以通過ssh的key代理來使用安全身份登陸其餘的遠端機器,而不需要重複輸入你的密碼了。
要檢視更多資訊,請參考 ssh 手冊頁面。
5. mdfind
這個mac上特有的命令,當然其他的*nix也會有相類似的命令。它和find命令功能相同,但是它是使用Spotlight索引的。它可以讓你在數秒內查詢你的整個檔案系統。你可以使用它來即時展示滿足條件的新增檔案的更新情況。我經常使用它來查詢應用在隱蔽的位置儲存的重要檔案。
1 2 3 4 |
> mdfind -name homebrew
/usr/local/Library/Homebrew
/Users/job/Library/Logs/Homebrew
|
要檢視更多資訊,請參考 mdfind 手冊頁面。