最牛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链接,还能看到彩色版的。牛吧?

相关文章
相关标签/搜索