本文编译自commandlinefu.com的系列文章Top Ten One-Liners from CommandLineFu Explained。作为一个由用户推荐最有用shell命令的网站,其记录了数以万计的各色shell命令,其中不乏相当实用和有趣的,本文就要细数当中获投票最高的一些命令,从其中取材并加以细释,希望读者能从中受益。

1.查看ascii码表

man 7 ascii

很多人初学编程都会接触到ascii码的概念,有时候为了查某个符号的ascii值,可能还得翻箱倒柜找出当年的课本?Linux Manpage里面其实包含了很多类似的实用资料,上述命令就能很详细的方式解释ascii编码,当然这里还有在线版。

man命令的第二个参数是区域码,用来区分索引词的范围,比如printf,在C标准库里面的printf跟bash当中的printf是不同的,前者的查询是man 3 printf,后者是man 1 printf。如果这个区域码省略,就会从1开始搜索,直到找到为止。

命令man man可以看到详细的解释。

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下的文件系统。

第7区里面的资料通常最酷:

man 7 charsets– 解释各种语言的编码集。(gbk,gb2312等)

man 7 glob– 解释glob文件名管理机制的工作过程。

man 7 hier– 解释Linux文件系统结构各个部分的作用。

man 7 suffixes– 常见文件后缀名的列表跟解释。

man 7 time– Linux的时钟机制解释。

man 7 units– 数值单位及其数值的解释。

man 7 utf8– 描述UTF-8编码。

man 7 url– 解释URL、URI、URN等的标准。

2.简易计时器

time read

运行命令开始算起,到结束时按一下Enter,就显示出整个过程的时间,精确到ms级别。

time是用来计算一个进程在运行到结束过程耗费多少时间的程序,它的输出通常有三项:

$ time ls /opt

...

real 0m0.008s

user 0m0.003s

sys 0m0.007s

real指整个程序对真实世界而言运行所需时间,user指程序在用户空间运行的时间,sys指程序对系统调用锁占用时间。

read本来是一个读取用户输入的命令,常见用法是read LINE,用户输入并回车后,键入的内容就被保存到$LINE变量内,但在键入回车前,这个命令是一直阻塞的。

可见time read这命令灵活地利用了操作系统的阻塞。用这个命令来测试一壶水多久煮滚应该是不错的。

3.远程关掉一台Windows机器

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中运行一个命令

(cd /tmp && ls)

当然这只是演示,要查看目录当然可以ls /tmp。

好处就是不会改变当前shell的目录,以及如果命令中设计环境变量,也不会对当前shell有任何修改。

在Shell编程中还有很多使用上引号来括住一个命令:`ls /tmp`,这也是子shell过程。可是上引号的方法无法嵌套,而使用小括号的方法可以,一个比较纠结的例子是:

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

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

ssh -t host_A ssh host_B

如果目标机器host_B处于比较复杂的网络环境,本机无法直接访问,但另外一台host_A能够访问到host_B,而且也能被本机访问到,那上述命令就解决了方便登录host_B的问题。

但理论上这个过程是可以无限嵌套的,比如:

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

嗯那神马FBI CIA的,有本事来捉我吧~

6.清空屏幕

这个跟之前介绍的reset命令重置终端的作用有些类似,其实都只是发送一段控制序列,让终端的显示复位。

还可以这样运行:

tput clear

tput是专门用来控制终端的一个小工具,也挺强大的,详细信息运行man tput查看。

7.我想知道一台服务器什么时候重启完

ping -a IP

系统管理员最常做的事情是重启系统。但是服务器的重启过程往往得花上好几分钟,什么你的服务器4个scsi卡?16个硬盘?系统是RedHat?还完全安装所有组件?好吧,它重启的时间都够你吃顿饭了,所以我很想知道它什么时候回来。

ping命令有个audible ping参数,-a,当它终于ping通你的服务器时会让小喇叭叫起来。

8.列出你最常用的10条命令

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

这行命令组合得很妙:

history输出用户了命令历史;awk统计并输出列表;sort排序;head截出前10行。

9.检查Gmail新邮件

curl -u you@gmail.com --silent "https://mail.google.com/mail/feed/atom" |

perl -ne \

'

print "Subject: $1 " if /

(.+?)/ && $title++;

print "(from $1)\n" if /(.+?)/;

'

Gmail的一个特色是支持Atom feed输出邮件列表,所以总是见到很多Gmail邮件提醒器之类的,因为开发特简单,atom很方便。

这里只是利用了perl的正则来解析atom(sed/awk也能做到)。

10.用Telnet看《星球大战》

telnet towel.blinkenlights.nl

没什么好解释的,就是ASCII艺术之一。如果你有ipv6连接,还能看到彩色版的。牛吧?

linux如何自动调jiaob,最牛B的 Linux Shell 命令 系列连载(四)相关推荐

  1. linux中bash命令占用内存高,最牛B的 Linux Shell 命令 系列连载(三)

    1. 更友好的显示当前挂载的文件系统 mount | column -t 这条命令适用于任何文件系统,column 用于把输出结果进行列表格式化操作,这里最主要的目的是让大家熟悉一下 columnt ...

  2. 最牛B的Linux Shell命令 系列

    编者按 本文编译自commandlinefu.com的系列文章Top Ten One-Liners from CommandLineFu Explained.作为一个由用户推荐最有用shell命令的网 ...

  3. 问君能有几多愁,恰似不懂Linux SQL如何调优——聊聊SQL Server on Linux最佳实践

    问君能有几多愁,恰似不懂Linux SQL如何调优--聊聊SQL Server on Linux最佳实践 自从微软开始拥抱Linux, SQL Server 很快就推出了 Linux版本, linux ...

  4. linux 连接自动断开时间,两种解决SSH连接Linux超时自动断开的方法

    引言 个人在工作中经常用xshell远程登录服务器进行各种操作,但因为生产服务器环境变量和ssh配置不尽相同,也造成了工作上的一些不便,比如正在进行中的工作中断,需要重新连接-- 解决ssh连接Lin ...

  5. linux jenkins远程脚本,在Jenkins中配置执行远程shell命令(转)

    用过Jenkins的都知道,在Build配置那里有1个Add buld step,有这样两个选项: 1. Execute Windows batch command 2. Execute shell ...

  6. linux火狐自动更新,CentOS 7手动更新firefox | Linux系统运维联盟

    这里针对的是firefox无法检测到新版本,需要手动升级. 1.下载新版的irefox,一般是.tar.gz压缩包. 2.tar zxvf 解压到/usr/lib64 .(只要是原版firefox文件 ...

  7. 华为路由器 dopra linux passwd,【求助】华为悦me SA1456c Telnet shell 命令被极度阉割...

    前两天发了关于telent密码的求助帖(http://www.chinadsl.net/forum.ph ... d=129073&extra=),谢谢adminHW. ( H3 k' N' ...

  8. Linux(debian7)操作基础(五)之per调用shell命令

    ⑴ system命令 说明:perl可以用system调用shell的命令,不获取执行shell命令的输出值. 用法:system("shell cmd"); ⑵ 反引号 说明:p ...

  9. 常用的高级Linux shell命令

    编者按本文编译自commandlinefu.com的系列文章To p Ten One-Liners from CommandLineFu Explained.作为一个由用户推荐最有用shell命令的网 ...

最新文章

  1. 双绞线是计算机网络的一种通信线路吗,计算机网络环境的信道传输技术分析
  2. AI如何在安防行业更加深入?可从超高清视频监控切入
  3. java线程饥饿死锁_java并发-线程饥饿死锁测试
  4. Eclipse 3.7 安装Maven插件时报错:requires 'bundle org.slf4j.api 1.6.2' but it could not be found...
  5. 使计算机工作必不可缺的软件,探讨测绘工程中计算机制图的运用问题(原稿)
  6. python while循环if_python – 使用if语句时陷入while循环
  7. html用户注册md5,用web浏览框实现MD5加密
  8. matlab更改类型,matlab数据类型和转换
  9. 联想拯救者Y7000关闭触摸板
  10. 跟着团子学SAP PS-前台篇-创建网络活动及活动关系连接 CJ20N
  11. Nginx事件管理之epoll模块
  12. AD软件repeat功能实践详解
  13. 科普向-----验证码
  14. 辽宁移动_E900V21E_S905L3_线刷固件包
  15. 北京 | 微信小程序及小游戏开发者线下交流会
  16. spring-boot-devtools 快速重启的秘密!
  17. RK3288 NFS rootfs修改和操作(已验证)
  18. 从.Net类库代码来看Asp.net运行时(转自酷网动力)
  19. 为知笔记Markdown笔记里的插入代码怎么实现/为知笔记怎怎么插入代码段
  20. 交通系统速度预测综述:从车辆到交通【公共交通数据集】【开源模型整理】

热门文章

  1. Django(part40)--如何走向404
  2. 10周拿下数据分析师认证
  3. SAP Spartacus 里的 .release-it.json 文件
  4. SAP 电商云 Spartacus UI 和路由相关的 State 处理
  5. Express engine 学习笔记 - app.engine 的使用方法
  6. 从调试器里观察到的Observable对象反推出其赋值的源代码位置
  7. SAP Fiori应用没能从Fiori Launchpad启动的一个可能原因及分析过程
  8. SAP CRM One Order CLOSING date change debug
  9. SAP loyalty management点击了公式超链接后的处理逻辑
  10. Fiori Hash url的生成原理