[SHELL进阶] (转)最牛B的 Linux 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下的文件系统。 
man 5 filesystems - 各种Linux文件系统。

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

man 7 bootparam - 详细解释内核启动参数。 
man 7 charsets - 解释各种语言的编码集。(gbk,gb2312等) 
man 7 glob - 解释glob文件名管理机制的工作过程。 
man 7 hier - 解释Linux文件系统结构各个部分的作用。 
man 7 operator - C语言的运算符的列表。 
man 7 regex - 介绍正则表达式。 
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 usefile:///C|/ip/ipc%24 *这样一个命令建立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 file:///C|/x%24%28printf "%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.清空屏幕

<CTRL+l>;

这个跟之前介绍的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}}‘ | sort -rn | head

这行命令组合得很妙: history输出用户了命令历史;awk统计并输出列表;sort排序;head截出前10行。

9.检查GMAIL新邮件

curl -u [email protected] --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看《星球大战》

telnet towel.blinkenlights.nl

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

时间: 2024-11-13 17:11:15

[SHELL进阶] (转)最牛B的 Linux Shell 命令 (四)的相关文章

Linux常用命令(四)

Linux常用命令(四) 目前已经总结了,文件操作命令,目录操作命令,查看目录下的文件及目录结构,本节我来总结一下Linux另外两个重要的命令rm删除命令和find查找命令. 1 rm命令 rm命令是Linux系统中常用的命令,该命令的功能为删除一个目中的文件或多个文件或目录,对于链接文件,只是删除了链接,对原始文件没有影响,rm命令十分危险,新手要特别当心. 1.1 语法 rm [选项] 文件... 1.2 命令参数 -i 每个删除操作完成前都有确认提示 -I 删除超过 3 个文件时或递归删除

Linux常用命令(四) - mkdir

linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1. 命令格式: mkdir  [选项]   目录 2. 命令功能: 通过 mkdir 命令可以实现在指定位置创建以指定的文件名命名的文件夹.要创建文件夹的用户必须对所创建的文件夹的父文件夹具有写权限.并且,所创建的文件夹不能与其父文件夹中的文件名重名,即同一个文件夹下不能有同名的(区分大小写). 3. 命令参数: -m,    --mode 模式,设定权

[SHELL进阶] (转)最牛B的 Linux Shell 命令 (二)

1.用你最喜欢的编辑器来敲命令 command <CTRL-x CTRL-e> 在已经敲完的命令后按 <CTRL-x CTRL-e> ,会打开一个你指定的编辑器(比如vim,通过环境变量$EDITOR指定),里面就是你刚输入的命令,然后爱怎么编辑就怎么编辑吧,特别是那些参数异常复杂的程序,比如mencoder/ffmpeg,一个命令动辄3.4行的,要修改其中的参数,这个方法最合适不过了,保存退出后自动执行这个程序. 实际上这是readline库的功能,在默认情况下,bash使用的是

[SHELL进阶] (转)最牛B的 Linux Shell 命令 (三)

1. 更友好的显示当前挂载的文件系统 mount | column -t 这条命令适用于任何文件系统,column 用于把输出结果进行列表格式化操作,这里最主要的目的是让大家熟悉一下 columnt 的用法. 下面是单单使用 mount 命令的结果: $ mount /dev/root on / type ext3 (rw) /proc on /proc type proc (rw) /dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

Linux常用命令(四)系统管理命令

4 系统管理命令 shutdown      正常关机 reboot            重启计算机 ps                   显示瞬间进程状态,查看目前程序执行的情况 ps -aux top                  查看目前程序执行的情景和内存使用的情况,动态显示当前耗费资源最多进程信息 kill                   终止一个进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程 date                更改或

Linux基础命令四

iptables iptables -F:关闭防火墙 crontab -l查看定时任务 crontab -e :编辑定时任务 log日志相关: ls  /var/log:查看日志 du -sh  /var/log/:以人类可读的语言查看日志大小 原文地址:https://www.cnblogs.com/thismyblogs/p/9650991.html

linux shell脚本之-变量极速入门与进阶(2)

1,$$:显示当前的进程id号 [email protected]:~/linux/shell/how_to_use_var$ cat show_pid.sh #!/bin/bash echo $$ sleep 3000 [email protected]:~/linux/shell/how_to_use_var$ bash show_pid.sh & [1] 9401 [email protected]:~/linux/shell/how_to_use_var$ 9401 [email pro

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu