info

info命令是Linux下info格式的帮助指令。

就内容来说,info页面比man page编写得要更好、更容易理解,也更友好,但man page使用起来确实要更容易得多。一个man page只有一页,而info页面几乎总是将它们的内容组织成多个区段(称为节点),每个区段也可能包含子区段(称为子节点)。理解这个命令的窍门就是不仅要学习如何在单独的Info页面中浏览导航,还要学习如何在节点和子节点之间切换。可能刚开始会一时很难在info页面的节点之间移动和找到你要的东西,真是具有讽刺意味:原本以为对于新手来说,某个东西比man命令会更好些,但实际上学习和使用起来更困难。

语法

info(选项)(参数)

选项

-d:添加包含info格式帮助文档的目录;
-f:指定要读取的info格式的帮助文档;
-n:指定首先访问的info帮助文件的节点;
-o:输出被选择的节点内容到指定文件。

参数

帮助主题:指定需要获得帮助的主题,可以是指令、函数以及配置文件。

实例

在info后面输入命令的名称就可以查看该命令的info帮助文档了:

info info

面介绍一下它的几个常用快捷键。

?键:它就会显示info的常用快捷键。
N键:显示(相对于本节点的)下一节点的文档内容。
P键:显示(相对于本节点的)前一节点的文档内容。
U键:进入当前命令所在的主题。
M键:敲M键后输入命令的名称就可以查看该命令的帮助文档了。
G键:敲G键后输入主题名称,进入该主题。
L键:回到上一个访问的页面。
SPACE键:向前滚动一页。
BACKUP或DEL键:向后滚动一页。
Q:退出info。

命令

     显示帮助窗口

在帮助窗口中:
Ctrl-x 0          关闭帮助窗口
Ctrl-x Ctrl-c    关闭整个 Info
        
q      退出 info
n      打开与本 Node 关联的下一个 Node
p      打开与本 Node 关联的前一个 Node
u      打开与本 Node 关联的上一个 Node
l      回到上一次访问的 Node
m或g   选择一个菜单项(Node 的名字)
       输入指定菜单的名字后按回车,打开指定菜单项关联的 Node
空格键 下一页(PageDown 也可以,下一页从当前页的最后两行开始算起)
       下一个 Node (若当前页在 Node 文档的末尾)
Del 键 上一页(PageUp 也可以,上一页从当前页的开始两行开始算起)
       上一个 Node (若当前页 Node 文档的开始)

b 或 t 或 Home   文档的开始(b 是 begining 的意思)
e 或 End         文档的末尾(b 是 ending 的意思)
Ctrl-l    刷新当前页,若当前文档显示情况有问题时
Ctrl-g    取消所键入的指令

dpkg-deb

dpkg-deb命令是Debian Linux下的软件包管理工具,它可以对软件包执行打包和解包操作以及提供软件包信息。

语法

dpkg-deb(选项)(参数)

选项

-c:显示软件包中的文件列表;
-e:将主控信息解压;
-f:把字段内容打印到标准输出;
-x:将软件包中的文件释放到指定目录下;
-X:将软件包中的文件释放到指定目录下,并显示释放文件的详细过程;
-w:显示软件包的信息;
-l:显示软件包的详细信息;
-R:提取控制信息和存档的清单文件;
-b:创建debian软件包。

参数

文件:指定要操作的“.deb”软件包的全名或软件名。

实例

解压程序文件:

dpkg-deb -x drcom-pum_1.0-0ubuntu1~ppa1~jaunty1_i386.deb drcom

解压控制文件:

dpkg-deb -e drcom-pum_1.0-0ubuntu1~ppa1~jaunty1_i386.deb drcom/DEBIAN

打包生成deb文件:

dpkg-deb -b drcom drcom_1.4.8.2_i386.deb

查询deb包中的文件内容:

dpkg-deb -c demo.deb

date

date命令是显示或设置系统时间与日期。

很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。

语法

date(选项)(参数)

选项

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息。

参数

<+时间日期格式>:指定显示时使用的日期时间格式。

日期格式字符串列表

%H 小时,24小时制(00~23)
%I 小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分钟(00~59)
%p 显示出AM或PM
%r 显示时间,12小时制(hh:mm:ss %p)
%s 从1970年1月1日00:00:00到目前经历的秒数
%S 显示秒(00~59)
%T 显示时间,24小时制(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999则是99)

实例

格式化输出:

date +"%Y-%m-%d"
2009-12-07

输出昨天日期:

date -d "1 day ago" +"%Y-%m-%d"
2012-11-19

2秒后输出:

date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31

传说中的 1234567890 秒:

date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30

普通转格式:

date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00

apache格式转换:

date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37

格式转换后时间游走:

date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37

加减操作:

date +%Y%m%d                   //显示前天年月日
date -d "+1 day" +%Y%m%d       //显示前一天的日期
date -d "-1 day" +%Y%m%d       //显示后一天的日期
date -d "-1 month" +%Y%m%d     //显示上一月的日期
date -d "+1 month" +%Y%m%d     //显示下一月的日期
date -d "-1 year" +%Y%m%d      //显示前一年的日期
date -d "+1 year" +%Y%m%d      //显示下一年的日期

设定时间:

date -s                        //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523               //设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01               //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23"  //这样可以设置全部时间
date -s "01:01:01 20120523"    //这样可以设置全部时间
date -s "2012-05-23 01:01:01"  //这样可以设置全部时间
date -s "20120523 01:01:01"    //这样可以设置全部时间

有时需要检查一组命令花费的时间,举例:

#!/bin/bash

start=$(date +%s)
nmap man.linux.9iphp.com &> /dev/null

end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.

yes

yes命令在命令行中输出指定的字符串,直到yes进程被杀死。不带任何参数输入yes命令默认的字符串就是y。

语法

yes(参数)

参数

字符串:指定要重复打印的字符串。

实例

[root@localhost ~]# yes testline

testline
testline
testline
testline
testline
testline
testline
testline
...一直重复打印 testline,按Ctrl+C结束。

dpkg-divert

dpkg-divert命令是Debian Linux中创建并管理一个转向(diversion)列表,其使得安装文件的默认位置失效的工具。

语法

dpkg-divert(选项)(参数)

选项

--add:添加一个转移文件;
--remove:删除一个转移文件;
--list:列出匹配的转移;
--truename:对应转移文件真实文件名;
--quidet:安静模式。

参数

文件:指定转移文件名。

实例

指定软件包wibble安装时,写入/usr/bin/example.foo,而不是/usr/bin/example

dpkg-divert --package wibble --divert /usr/bin/example.foo --rename /usr/bin/example

指定软件包wibble安装时,删除对/usr/bin/example的转移修改:

dpkg-divert --package wibble --rename --remove /usr/bin/example

删除对/usr/bin/example的转移修改:

dpkg-divert --rename --remove /usr/bin/example

添加一个软件包安装时,写入/usr/bin/example.foo,而不是/usr/bin/example的修改:

dpkg-divert --divert /usr/bin/example.foo --rename /usr/bin/example

dpkg-query

dpkg-query命令是Debian Linux中软件包的查询工具,它从dpkg软件包数据库中查询并辨识软件包的信息。

语法

dpkg-query(选项)(参数)

选项

-l:列出符合匹配模式的软件包;
-s:查询软件包的状态信息;
-L:显示软件包所安装的文件列表;
-S:从安装的软件包中查询文件;
-w:显示软件包信息;
-c:显示软件包的控制文件路径;
-p:显示软件包的细节。

参数

软件包名称:指定需要查询的软件包。

实例

查找文件file1在哪个包里安装:

dpkg-query -S file1

列出ubuntu下所安装软件列表:

dpkg-query -W --showformat='${Package} ${Version}\n' > filename

查看软件包详细信息:

dpkg-query -s capistrano

查看软件包安装时安装到系统的文件列表:

dpkg-query -L capistrano

列出所有安装的包:

dpkg-query -l

查看软件包的确切状态(是否安装)以及版本号:

dpkg-query -W -f='${Status} ${Version}\n' apache-perl

dpkg-split

dpkgsplit命令用来将Debian Linux中的大软件包分割成小软件包,它还能够将已分割的文件进行合并。

语法

dpkg-split(选项)(参数)

选项

-S:设置分割后的每个小文件最大尺寸(以字节为单位);
-s:分割软件包;
-j<分块文件><分块文件>:把各个分块合并到一起;
-I<分块文件>:显示分块文件的相关信息;
-l:列出不匹配的部分;
-dscard<文件名>:忽略不匹配的部分。

参数

软件包:指定需要分割的“.deb”软件包。

实例

把foo.deb分割出N个大小为460KB的文件:

dpkg-split -s foo.deb

合并分割文件:

dpkg-split -j "foo*"