5个经常被忽略的Unix命令
脚本之家
使用unix系统的用户或许看了以后会有同感,unix系统已经有一段时间了。但还是有一些命令是被我一直忽略的,真希望我能早几年发现这些命令。这些命令点单方便区经常容易忽略,,希望本片可以给一些同样忽略的用户一个善意的提醒。
1. man ascii
这个命令会打印出八进制、十六进制和十进制的ASCII码表。难以置信我是一个月之前才知道这个命令的。我总是使用google来查询ASCII码表。这个命令其实更方便。
- 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
2. cal
在很多系统上要显示日历一般要通过几个步骤。其实你可以使用 cal 命令。
- > 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
3. xxd 当我们需要把二进制转成c语言中使用的16进制字符数组时,命令xxd是很有用的。
- > xxd somefile.bin
- 0000000: 83ff 0010 8d01 0408 d301 0408 a540 0408 .............@..
- 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的数组,很方便:
- > 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和它附带的工具可以用来:
在计算机之间传递文件(使用scp)
X-forwarding – 连接到远端的机器,并且开启一个GUI应用,看起来它们就像在本地开启的一样,即使远端的机器并没有提供X服务。
端口转发 – 将到本地端口的连接转发到远端机器的端口,或者将到远端机器端口的连接转发到本地端口
SOCKS 代理 – 允许你将一个支持SOCKET代理的应用上的所有连接转发到远端机器。这对于如何更安全使用公共wifi浏览网络和绕过严格的防火墙是很有用的。
在本地机器输入一次密码,然后就可以通过ssh的key代理来使用安全身份登陆其余的远端机器,而不需要重复输入你的密码了。
要查看更多信息,请参考ssh 手册页面。
5. mdfind
这个mac上特有的命令,当然其他的*nix也会有相类似的命令。它和find命令功能相同,但是它是使用Spotlight索引的。它可以让你在数秒内查询你的整个文件系统。你可以使用它来即时展示满足条件的新增文件的更新情况。我经常使用它来查询应用在隐蔽的位置存储的重要文件。
- > mdfind -name homebrew
- /usr/local/Library/Homebrew
- /Users/job/Library/Logs/Homebrew
这就是经常被忽略的Unix的5个命令,希望大家能有所了解,实际操作的过程中可以用的到,谢谢大家的阅读。