在Shell编程中还有很多使用上引号来括住一个命令:`ls /tmp`,这也是子shell过程。可是上引号的方法无法嵌套,而使用小括号的方法可以,一个比较纠结的例子是:
1
echo $(echo -e \\x$(printf "%x" 65))
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连接,还能看到彩色版的。牛吧?