]
### 选项
-```
+```shell
d - 从归档文件中删除文件
m[ab] - 在归档文件中移动文件
p - 打印在归档文件中找到的文件
@@ -50,7 +50,7 @@ x[o] - 从归档文件中分解文件
选项参数
-```
+```shell
--plugin - load the specified plugin
```
@@ -60,12 +60,12 @@ ar:支持的目标: elf64-x86-64 elf32-i386 elf32-x86-64 a.out-i386-linux pe
打包文件
-```
-[root@localhost ~]# ls //显示当前目录文件
+```shell
+[root@localhost ~]# ls # 显示当前目录文件
a.c b.c d.c install.log qte
anaconda-ks.cfg c.c Desktop
-[root@localhost ~]# ar rv one.bak a.c b.c //打包 a.c b.c文件
+[root@localhost ~]# ar rv one.bak a.c b.c # 打包 a.c b.c文件
ar: 正在创建 one.bak
a - a.c
a - b.c
@@ -73,8 +73,8 @@ a - b.c
打包多个文件
-```
-[root@localhost ~]# ar rv two.bak *.c //打包以.c结尾的文件
+```shell
+[root@localhost ~]# ar rv two.bak *.c // 打包以.c结尾的文件
ar: 正在创建 two.bak
a - a.c
a - b.c
@@ -84,7 +84,7 @@ a - d.c
显示打包文件的内容
-```
+```shell
[root@localhost ~]# ar t two.bak
a.c
b.c
@@ -94,7 +94,7 @@ d.c
删除打包文件的成员文件
-```
+```shell
[root@localhost ~]# ar d two.bak a.c b.c c.c
[root@localhost ~]# ar t two.bak
d.c
diff --git a/command/arch.md b/command/arch.md
index 53e27266df0..75cd9fbe1b4 100644
--- a/command/arch.md
+++ b/command/arch.md
@@ -1,6 +1,6 @@
arch
===
-
+
显示当前主机的硬件架构类型
## 补充说明
@@ -9,13 +9,13 @@ arch
### 语法
-```
+```shell
arch
```
### 实例
-```
+```shell
arch
x86_64
```
diff --git a/command/arj.md b/command/arj.md
index 01f38cbc8b4..452d30c1ea2 100644
--- a/command/arj.md
+++ b/command/arj.md
@@ -1,22 +1,22 @@
arj
===
-
+
用于创建和管理.arj压缩包
## 补充说明
-**arj命令** 是“.arj”格式的压缩文件的管理器,用于创建和管理“.arj”压缩包。
+**arj命令** 是 `.arj` 格式的压缩文件的管理器,用于创建和管理 `.arj` 压缩包。
### 语法
-```
+```shell
arj(参数)
```
### 参数
-* 操作指令:对“.arj”压缩包执行的操作指令;
-* 压缩包名称:指定要操作的arj压缩包名称。
+* 操作指令:对 `.arj` 压缩包执行的操作指令;
+* 压缩包名称:指定要操作的arj压缩包名称。
\ No newline at end of file
diff --git a/command/arpd.md b/command/arpd.md
index 35e2dc5e208..b609b2bdc1b 100644
--- a/command/arpd.md
+++ b/command/arpd.md
@@ -1,6 +1,6 @@
arpd
===
-
+
收集免费ARP信息
## 补充说明
@@ -9,13 +9,13 @@ arpd
### 语法
-```
+```shell
arpd(选项)(参数)
```
### 选项
-```
+```shell
-l:将arp数据库输出到标准输出设备显示并退出;
-f:指定读取和加载arpd数据库的文本文件,文件的格式与“-l”输出信息类似;
-b:指定arpd数据库文件,默认的位置为“/var/lib/arpd.db”;
@@ -32,13 +32,13 @@ arpd(选项)(参数)
启动arpd进程:
-```
+```shell
arpd -b /var/tmp/arpd.db
```
运行一段时间后,查看结果:
-```
+```shell
arpd -l -b /var/tmp/arpd.db
```
diff --git a/command/arping.md b/command/arping.md
index 3494228cf3d..02bb77c2b2e 100644
--- a/command/arping.md
+++ b/command/arping.md
@@ -1,6 +1,6 @@
arping
===
-
+
通过发送ARP协议报文测试网络
## 补充说明
@@ -9,13 +9,13 @@ arping
### 语法
-```
+```shell
arping(选项)(参数)
```
### 选项
-```
+```shell
-b:用于发送以太网广播帧(FFFFFFFFFFFF)。arping一开始使用广播地址,在收到响应后就使用unicast地址。
-q:quiet output不显示任何信息;
-f:表示在收到第一个响应报文后就退出;
@@ -31,7 +31,7 @@ arping(选项)(参数)
### 实例
-```
+```shell
[root@localhost ~]# arping www.baidu.com
ARPING 220.181.111.147 from 173.231.43.132 eth0
Unicast reply from 220.181.111.147 00:D0:03:[bc:48:00] 1.666ms
diff --git a/command/arptables.md b/command/arptables.md
index 56c137b1d8a..64af5706a91 100644
--- a/command/arptables.md
+++ b/command/arptables.md
@@ -1,6 +1,6 @@
arptables
===
-
+
管理ARP包过滤规则表
## 补充说明
@@ -9,13 +9,13 @@ arptables
### 语法
-```
+```shell
arptables(选项)
```
### 选项
-```
+```shell
-A:向规则链中追加规则;
-D:从指定的链中删除规则;
-l:向规则链中插入一条新的规则;
diff --git a/command/arpwatch.md b/command/arpwatch.md
index c3fb1a220a3..72883f3443c 100644
--- a/command/arpwatch.md
+++ b/command/arpwatch.md
@@ -1,6 +1,6 @@
arpwatch
===
-
+
监听网络上ARP的记录
## 补充说明
@@ -9,13 +9,13 @@ arpwatch
### 语法
-```
+```shell
arpwatch(选项)
```
### 选项
-```
+```shell
-d:启动排错模式;
-f<记录文件>:设置存储ARP记录的文件,预设为/var/arpwatch/arp.dat;
-i<接口>:指定监听ARP的接口,预设的接口为eth0;
diff --git a/command/as.md b/command/as.md
index 28de2b249dc..0904e5f0d83 100644
--- a/command/as.md
+++ b/command/as.md
@@ -1,6 +1,6 @@
as
===
-
+
汇编语言编译器
## 补充说明
@@ -9,13 +9,13 @@ as
### 语法
-```
+```shell
as(选项)(参数)
```
### 选项
-```
+```shell
-ac:忽略失败条件;
-ad:忽略调试指令;
-ah:包括高级源;
diff --git a/command/at.md b/command/at.md
index be7f0600bd6..a03a31beb89 100644
--- a/command/at.md
+++ b/command/at.md
@@ -1,6 +1,6 @@
at
===
-
+
在指定时间执行一个任务
## 补充说明
@@ -11,13 +11,13 @@ at
### 语法
-```
+```shell
at(选项)(参数)
```
### 选项
-```
+```shell
-f:指定包含具体指令的任务文件;
-q:指定新任务的队列名称;
-l:显示待执行任务的列表;
@@ -33,7 +33,7 @@ at(选项)(参数)
三天后的下午 5 点锺执行`/bin/ls`:
-```
+```shell
[root@localhost ~]# at 5pm+3 days
at> /bin/ls
at>
@@ -42,7 +42,7 @@ job 7 at 2013-01-08 17:00
明天17点钟,输出时间到指定文件内:
-```
+```shell
[root@localhost ~]# at 17:20 tomorrow
at> date >/root/2013.log
at>
@@ -51,7 +51,7 @@ job 8 at 2013-01-06 17:20
计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务:
-```
+```shell
[root@localhost ~]# atq
8 2013-01-06 17:20 a root
7 2013-01-08 17:00 a root
@@ -59,7 +59,7 @@ job 8 at 2013-01-06 17:20
删除已经设置的任务:
-```
+```shell
[root@localhost ~]# atq
8 2013-01-06 17:20 a root
7 2013-01-08 17:00 a root
@@ -71,7 +71,7 @@ job 8 at 2013-01-06 17:20
显示已经设置的任务内容:
-```
+```shell
[root@localhost ~]# at -c 8
#!/bin/sh
# atrun uid=0 gid=0
diff --git a/command/atop.md b/command/atop.md
index 3ead1d6d07b..86fd79848f5 100644
--- a/command/atop.md
+++ b/command/atop.md
@@ -9,7 +9,7 @@ atop
## 语法
-```
+```shell
atop(选项)(参数)
```
@@ -83,13 +83,13 @@ swin、swout字段:换入和换出内存页数
其实atop开发者已经提供了以上日志保存方式,相应的atop.daily脚本可以在源码目录下找到。在atop.daily脚本中,我们可以通过修改INTERVAL变量改变atop信息采样周期(默认为10分钟);通过修改以下命令中的数值改变日志保存天数(默认为28天):
-```
+```shell
(sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \; )&
```
最后,我们修改cron文件,每天凌晨执行atop.daily脚本:
-```
+```shell
0 0 * * * root /etc/cron.daily/atop.daily
```
diff --git a/command/atq.md b/command/atq.md
index 31f0586c6b6..f21f517efbe 100644
--- a/command/atq.md
+++ b/command/atq.md
@@ -1,6 +1,6 @@
atq
===
-
+
列出当前用户的at任务列表
## 补充说明
@@ -9,20 +9,20 @@ atq
### 语法
-```
+```shell
atq(选项)
```
### 选项
-```
+```shell
-V:显示版本号;
-q:查询指定队列的任务。
```
### 实例
-```
+```shell
at now + 10 minutes
at> echo 1111
at>
diff --git a/command/atrm.md b/command/atrm.md
index 2691142deba..63b06353136 100644
--- a/command/atrm.md
+++ b/command/atrm.md
@@ -1,6 +1,6 @@
atrm
===
-
+
删除待执行任务队列中的指定任务
## 补充说明
@@ -9,13 +9,13 @@ atrm
### 语法
-```
+```shell
atrm(选项)(参数)
```
### 选项
-```
+```shell
-V:显示版本号。
```
@@ -27,12 +27,12 @@ atrm(选项)(参数)
删除已经排队的任务
-```
-atq //显示当前已经设置的任务
+```shell
+atq # 显示当前已经设置的任务
2 Mon May 17 08:00:00 2010 a root
1 Sat May 15 17:00:00 2010 a root
-atrm 2 //删除任务2
+atrm 2 # 删除任务2
```
diff --git a/command/awk.md b/command/awk.md
index a64c8856014..c7641dc9894 100644
--- a/command/awk.md
+++ b/command/awk.md
@@ -9,19 +9,19 @@ awk
## awk命令格式和选项
- **语法形式**
+**语法形式**
-```
+```shell
awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var=value file(s)
```
- **常用命令选项**
+**常用命令选项**
-* **-F fs ** fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
-* **-v var=value ** 赋值一个用户定义变量,将外部变量传递给awk
-* **-f scripfile ** 从脚本文件中读取awk命令
-* **-m[fr] val ** 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
+* **-F fs** fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
+* **-v var=value** 赋值一个用户定义变量,将外部变量传递给awk
+* **-f scripfile** 从脚本文件中读取awk命令
+* **-m[fr] val** 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
## awk模式和操作
@@ -31,36 +31,36 @@ awk脚本是由模式和操作组成的。
模式可以是以下任意一个:
-* /正则表达式/:使用通配符的扩展集。
-* 关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。
-* 模式匹配表达式:用运算符`~`(匹配)和`!~`(不匹配)。
-* BEGIN语句块、pattern语句块、END语句块:参见awk的工作原理
+* /正则表达式/:使用通配符的扩展集。
+* 关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。
+* 模式匹配表达式:用运算符`~`(匹配)和`!~`(不匹配)。
+* BEGIN语句块、pattern语句块、END语句块:参见awk的工作原理
### 操作
操作由一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内,主要部分是:
-* 变量或数组赋值
-* 输出命令
-* 内置函数
-* 控制流语句
+* 变量或数组赋值
+* 输出命令
+* 内置函数
+* 控制流语句
## awk脚本基本结构
-```
+```shell
awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file
```
一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被 **单引号** 或 **双引号** 中,例如:
-```
+```shell
awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename
awk "BEGIN{ i=0 } { i++ } END{ print i }" filename
```
### awk的工作原理
-```
+```shell
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
```
@@ -76,7 +76,7 @@ awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
**示例**
-```
+```shell
echo -e "A line 1nA line 2" | awk 'BEGIN{ print "Start" } { print } END{ print "End" }'
Start
A line 1
@@ -86,14 +86,14 @@ End
当使用不带参数的`print`时,它就打印当前行,当`print`的参数是以逗号进行分隔时,打印时则以空格作为定界符。在awk的print语句块中双引号是被当作拼接符使用,例如:
-```
+```shell
echo | awk '{ var1="v1"; var2="v2"; var3="v3"; print var1,var2,var3; }'
v1 v2 v3
```
双引号拼接使用:
-```
+```shell
echo | awk '{ var1="v1"; var2="v2"; var3="v3"; print var1"="var2"="var3; }'
v1=v2=v3
```
@@ -104,7 +104,7 @@ v1=v2=v3
说明:[A][N][P][G]表示第一个支持变量的工具,[A]=awk、[N]=nawk、[P]=POSIXawk、[G]=gawk
-```
+```shell
**$n** 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。
**$0** 这个变量包含执行过程中当前行的文本内容。
[N] **ARGC** 命令行参数的数目。
@@ -129,9 +129,9 @@ v1=v2=v3
[N] **SUBSEP** 数组下标分隔符(默认值是34)。
```
- **示例**
+**示例**
-```
+```shell
echo -e "line1 f2 f3\nline2 f4 f5\nline3 f6 f7" | awk '{print "Line No:"NR", No of fields:"NF, "$0="$0, "$1="$1, "$2="$2, "$3="$3}'
Line No:1, No of fields:3 $0=line1 f2 f3 $1=line1 $2=f2 $3=f3
Line No:2, No of fields:3 $0=line2 f4 f5 $1=line2 $2=f4 $3=f5
@@ -140,13 +140,13 @@ Line No:3, No of fields:3 $0=line3 f6 f7 $1=line3 $2=f6 $3=f7
使用`print $NF`可以打印出一行中的最后一个字段,使用`$(NF-1)`则是打印倒数第二个字段,其他以此类推:
-```
+```shell
echo -e "line1 f2 f3n line2 f4 f5" | awk '{print $NF}'
f3
f5
```
-```
+```shell
echo -e "line1 f2 f3n line2 f4 f5" | awk '{print $(NF-1)}'
f2
f4
@@ -155,13 +155,13 @@ f4
打印每一行的第二和第三个字段:
-```
+```shell
awk '{ print $2,$3 }' filename
```
统计文件中的行数:
-```
+```shell
awk 'END{ print NR }' filename
```
@@ -169,7 +169,7 @@ awk 'END{ print NR }' filename
一个每一行中第一个字段值累加的例子:
-```
+```shell
seq 5 | awk 'BEGIN{ sum=0; print "总和:" } { print $1"+"; sum+=$1 } END{ print "等于"; print sum }'
总和:
1+
@@ -185,14 +185,14 @@ seq 5 | awk 'BEGIN{ sum=0; print "总和:" } { print $1"+"; sum+=$1 } END{ pri
借助 **`-v`选项** ,可以将外部值(并非来自stdin)传递给awk:
-```
+```shell
VAR=10000
echo | awk -v VARIABLE=$VAR '{ print VARIABLE }'
```
另一种传递外部变量方法:
-```
+```shell
var1="aaa"
var2="bbb"
echo | awk '{ print v1,v2 }' v1=$var1 v2=$var2
@@ -200,7 +200,7 @@ echo | awk '{ print v1,v2 }' v1=$var1 v2=$var2
当输入来自于文件时使用:
-```
+```shell
awk '{ print v1,v2 }' v1=$var1 v2=$var2 filename
```
@@ -208,7 +208,7 @@ awk '{ print v1,v2 }' v1=$var1 v2=$var2 filename
## 查找进程pid
-```
+```shell
netstat -antup | grep 7770 | awk '{ print $NF NR}' | awk '{ print $1}'
```
@@ -228,7 +228,7 @@ netstat -antup | grep 7770 | awk '{ print $NF NR}' | awk '{ print $1}'
例:
-```
+```shell
awk 'BEGIN{a="b";print a++,++a;}'
0 2
```
@@ -243,7 +243,7 @@ awk 'BEGIN{a="b";print a++,++a;}'
例:
-```
+```shell
a+=5; 等价于:a=a+5; 其它同类
```
@@ -256,7 +256,7 @@ a+=5; 等价于:a=a+5; 其它同类
例:
-```
+```shell
awk 'BEGIN{a=1;b=2;print (a>5 && b<=2),(a>5 || b<=2);}'
0 1
```
@@ -269,7 +269,7 @@ awk 'BEGIN{a=1;b=2;print (a>5 && b<=2),(a>5 || b<=2);}'
例:
-```
+```shell
awk 'BEGIN{a="100testa";if(a ~ /^100*/){print "ok";}}'
ok
```
@@ -282,7 +282,7 @@ ok
例:
-```
+```shell
awk 'BEGIN{a=11;if(a >= 9){print "ok";}}'
ok
```
@@ -300,12 +300,12 @@ ok
例:
-```
+```shell
awk 'BEGIN{a="b";print a=="b"?"ok":"err";}'
ok
```
-```
+```shell
awk 'BEGIN{a="b";arr[0]="b";arr[1]="c";print (a in arr);}'
0
```
@@ -326,7 +326,7 @@ awk 'BEGIN{a="b";arr[0]="b";arr["b"]="c";print (a in arr);}'
awk中`next`语句使用:在循环逐行匹配,如果遇到next,就会跳过当前行,直接忽略下面语句。而进行下一行匹配。next语句一般用于多行合并:
-```
+```shell
cat text.txt
a
b
@@ -343,7 +343,7 @@ awk 'NR%2==1{next}{print NR,$0;}' text.txt
分析发现需要将包含有“web”行进行跳过,然后需要将内容与下面行合并为一行:
-```
+```shell
cat text.txt
web01[192.168.2.100]
httpd ok
@@ -374,26 +374,26 @@ getline语法:getline var,变量var包含了特定行的内容。
awk getline从整体上来说,用法说明:
-* **当其左右无重定向符`|`或`<`时:** getline作用于当前文件,读入当前文件的第一行给其后跟的变量`var`或`$0`(无变量),应该注意到,由于awk在处理getline之前已经读入了一行,所以getline得到的返回结果是隔行的。
-* **当其左右有重定向符`|`或`<`时:** getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。
+* **当其左右无重定向符`|`或`<`时:** getline作用于当前文件,读入当前文件的第一行给其后跟的变量`var`或`$0`(无变量),应该注意到,由于awk在处理getline之前已经读入了一行,所以getline得到的返回结果是隔行的。
+* **当其左右有重定向符`|`或`<`时:** getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。
- **示例:**
+**示例:**
执行linux的`date`命令,并通过管道输出给`getline`,然后再把输出赋值给自定义变量out,并打印它:
-```
+```shell
awk 'BEGIN{ "date" | getline out; print out }' test
```
执行shell的date命令,并通过管道输出给getline,然后getline从管道中读取并将输入赋值给out,split函数把变量out转化成数组mon,然后打印数组mon的第二个元素:
-```
+```shell
awk 'BEGIN{ "date" | getline out; split(out,mon); print mon[2] }' test
```
命令ls的输出传递给geline作为输入,循环使getline从ls的输出中读取一行,并把它打印到屏幕。这里没有输入文件,因为BEGIN块在打开输入文件前执行,所以可以忽略输入文件。
-```
+```shell
awk 'BEGIN{ while( "ls" | getline) print }'
```
@@ -401,7 +401,7 @@ awk 'BEGIN{ while( "ls" | getline) print }'
awk中允许在程序中关闭一个输入或输出文件,方法是使用awk的close语句。
-```
+```shell
close("filename")
```
@@ -411,9 +411,9 @@ filename可以是getline打开的文件,也可以是stdin,包含文件名的
awk中允许用如下方式将结果输出到一个文件:
-```
+```shell
echo | awk '{printf("hello word!n") > "datafile"}'
-或
+# 或
echo | awk '{printf("hello word!n") >> "datafile"}'
```
@@ -421,9 +421,9 @@ echo | awk '{printf("hello word!n") >> "datafile"}'
默认的字段定界符是空格,可以使用`-F "定界符"` 明确指定一个定界符:
-```
+```shell
awk -F: '{ print $NF }' /etc/passwd
-或
+# 或
awk 'BEGIN{ FS=":" } { print $NF }' /etc/passwd
```
@@ -435,7 +435,7 @@ awk 'BEGIN{ FS=":" } { print $NF }' /etc/passwd
### 条件判断语句
-```
+```shell
if(表达式)
语句1
else
@@ -444,7 +444,7 @@ else
格式中语句1可以是多个语句,为了方便判断和阅读,最好将多个语句用{}括起来。awk分枝结构允许嵌套,其格式为:
-```
+```shell
if(表达式)
{语句1}
else if(表达式)
@@ -455,7 +455,7 @@ else
示例:
-```
+```shell
awk 'BEGIN{
test=100;
if(test>90){
@@ -478,14 +478,14 @@ very good
#### while语句
-```
+```shell
while(表达式)
{语句}
```
示例:
-```
+```shell
awk 'BEGIN{
test=100;
total=0;
@@ -504,14 +504,14 @@ for循环有两种格式:
格式1:
-```
+```shell
for(变量 in 数组)
{语句}
```
示例:
-```
+```shell
awk 'BEGIN{
for(k in ENVIRON){
print k"="ENVIRON[k];
@@ -532,14 +532,14 @@ SSH_CLIENT=192.168.1.21 53087 22
格式2:
-```
+```shell
for(变量;条件;表达式)
{语句}
```
示例:
-```
+```shell
awk 'BEGIN{
total=0;
for(i=0;i<=100;i++){
@@ -552,14 +552,14 @@ print total;
#### do循环
-```
+```shell
do
{语句} while(条件)
```
例子:
-```
+```shell
awk 'BEGIN{
total=0;
i=0;
@@ -571,10 +571,10 @@ do {total+=i;i++;} while(i<=100)
### 其他语句
-* **break** 当 break 语句用于 while 或 for 语句时,导致退出程序循环。
-* **continue** 当 continue 语句用于 while 或 for 语句时,使程序循环移动到下一个迭代。
-* **next** 能能够导致读入下一个输入行,并返回到脚本的顶部。这可以避免对当前输入行执行其他的操作过程。
-* **exit** 语句使主输入循环退出并将控制转移到END,如果END存在的话。如果没有定义END规则,或在END中应用exit语句,则终止脚本的执行。
+* **break** 当 break 语句用于 while 或 for 语句时,导致退出程序循环。
+* **continue** 当 continue 语句用于 while 或 for 语句时,使程序循环移动到下一个迭代。
+* **next** 能能够导致读入下一个输入行,并返回到脚本的顶部。这可以避免对当前输入行执行其他的操作过程。
+* **exit** 语句使主输入循环退出并将控制转移到END,如果END存在的话。如果没有定义END规则,或在END中应用exit语句,则终止脚本的执行。
## 数组应用
@@ -584,14 +584,14 @@ do {total+=i;i++;} while(i<=100)
数字做数组索引(下标):
-```
+```shell
Array[1]="sun"
Array[2]="kai"
```
字符串做数组索引(下标):
-```
+```shell
Array["first"]="www"
Array"[last"]="name"
Array["birth"]="1987"
@@ -601,32 +601,32 @@ Array["birth"]="1987"
**读取数组的值**
-```
+```shell
{ for(item in array) {print array[item]}; } #输出的顺序是随机的
{ for(i=1;i<=len;i++) {print array[i]}; } #Len是数组的长度
```
### 数组相关函数
- **得到数组长度:**
+**得到数组长度:**
-```
+```shell
awk 'BEGIN{info="it is a test";lens=split(info,tA," ");print length(tA),lens;}'
4 4
```
length返回字符串以及数组长度,split进行分割字符串为数组,也会返回分割得到数组长度。
-```
+```shell
awk 'BEGIN{info="it is a test";split(info,tA," ");print asort(tA);}'
4
```
asort对数组进行排序,返回数组长度。
- **输出数组内容(无序,有序输出):**
+**输出数组内容(无序,有序输出):**
-```
+```shell
awk 'BEGIN{info="it is a test";split(info,tA," ");for(k in tA){print k,tA[k];}}'
4 test
1 it
@@ -636,7 +636,7 @@ awk 'BEGIN{info="it is a test";split(info,tA," ");for(k in tA){print k,tA[k];}}'
`for…in`输出,因为数组是关联数组,默认是无序的。所以通过`for…in`得到是无序的数组。如果需要得到有序数组,需要通过下标获得。
-```
+```shell
awk 'BEGIN{info="it is a test";tlen=split(info,tA," ");for(k=1;k<=tlen;k++){print k,tA[k];}}'
1 it
2 is
@@ -646,10 +646,10 @@ awk 'BEGIN{info="it is a test";tlen=split(info,tA," ");for(k=1;k<=tlen;k++){prin
注意:数组下标是从1开始,与C数组不一样。
- **判断键值存在以及删除键值:**
+**判断键值存在以及删除键值:**
-```
-#错误的判断方法:
+```shell
+# 错误的判断方法:
awk 'BEGIN{tB["a"]="a1";tB["b"]="b1";if(tB["c"]!="1"){print "no found";};for(k in tB){print k,tB[k];}}'
no found
a a1
@@ -659,8 +659,8 @@ c
以上出现奇怪问题,`tB[“c”]`没有定义,但是循环时候,发现已经存在该键值,它的值为空,这里需要注意,awk数组是关联数组,只要通过数组引用它的key,就会自动创建改序列。
-```bash
-#正确判断方法:
+```shell
+# 正确判断方法:
awk 'BEGIN{tB["a"]="a1";tB["b"]="b1";if( "c" in tB){print "ok";};for(k in tB){print k,tB[k];}}'
a a1
b b1
@@ -668,7 +668,7 @@ b b1
`if(key in array)`通过这种方法判断数组中是否包含`key`键值。
-```bash
+```shell
#删除键值:
awk 'BEGIN{tB["a"]="a1";tB["b"]="b1";delete tB["a"];for(k in tB){print k,tB[k];}}'
b b1
@@ -682,7 +682,7 @@ awk的多维数组在本质上是一维数组,更确切一点,awk在存储
类似一维数组的成员测试,多维数组可以使用`if ( (i,j) in array)`这样的语法,但是下标必须放置在圆括号中。类似一维数组的循环访问,多维数组使用`for ( item in array )`这样的语法遍历数组。与一维数组不同的是,多维数组必须使用`split()`函数来访问单独的下标分量。
-```bash
+```shell
awk 'BEGIN{
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
@@ -707,7 +707,7 @@ for(i=1;i<=9;i++){
另一种方法:
-```bash
+```shell
awk 'BEGIN{
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
@@ -741,7 +741,7 @@ awk内置函数,主要分以下3种类似:算数函数、字符串函数、
举例说明:
-```
+```shell
awk 'BEGIN{OFMT="%.3f";fs=sin(1);fe=exp(10);fl=log(10);fi=int(3.1415);print fs,fe,fl,fi;}'
0.841 22026.466 2.303 3
@@ -751,7 +751,7 @@ OFMT 设置输出数据格式是保留3位小数。
获得随机数:
-```
+```shell
awk 'BEGIN{srand();fr=int(100*rand());print fr;}'
78
awk 'BEGIN{srand();fr=int(100*rand());print fr;}'
@@ -779,9 +779,9 @@ awk 'BEGIN{srand();fr=int(100*rand());print fr;}'
注:Ere都可以是正则表达式。
- **gsub,sub使用**
+**gsub,sub使用**
-```
+```shell
awk 'BEGIN{info="this is a test2010test!";gsub(/[0-9]+/,"!",info);print info}'
this is a test!test!
```
@@ -790,32 +790,32 @@ this is a test!test!
**查找字符串(index使用)**
-```
+```shell
awk 'BEGIN{info="this is a test2010test!";print index(info,"test")?"ok":"no found";}'
ok
```
未找到,返回0
- **正则表达式匹配查找(match使用)**
+**正则表达式匹配查找(match使用)**
```
awk 'BEGIN{info="this is a test2010test!";print match(info,/[0-9]+/)?"ok":"no found";}'
ok
```
- **截取字符串(substr使用)**
+**截取字符串(substr使用)**
-```
+```shell
[wangsl@centos5 ~]$ awk 'BEGIN{info="this is a test2010test!";print substr(info,4,10);}'
s is a tes
```
从第 4个 字符开始,截取10个长度字符串
- **字符串分割(split使用)**
+**字符串分割(split使用)**
-```
+```shell
awk 'BEGIN{info="this is a test";split(info,tA," ");print length(tA);for(k in tA){print k,tA[k];}}'
4
4 test
@@ -826,7 +826,7 @@ awk 'BEGIN{info="this is a test";split(info,tA," ");print length(tA);for(k in tA
分割info,动态创建数组tA,这里比较有意思,`awk for …in`循环,是一个无序的循环。 并不是从数组下标1…n ,因此使用时候需要注意。
- **格式化字符串输出(sprintf使用)**
+**格式化字符串输出(sprintf使用)**
格式化字符串格式:
@@ -841,7 +841,7 @@ awk 'BEGIN{info="this is a test";split(info,tA," ");print length(tA);for(k in tA
| %o | 无符号以八进制表示的整数 | %g | 自动选择合适的表示法 |
-```
+```shell
awk 'BEGIN{n1=124.113;n2=-1.224;n3=1.2345; printf("%.2f,%.2u,%.2g,%X,%on",n1,n2,n3,n1,n1);}'
124.11,18446744073709551615,1.2,7C,174
```
@@ -856,34 +856,34 @@ awk 'BEGIN{n1=124.113;n2=-1.224;n3=1.2345; printf("%.2f,%.2u,%.2g,%X,%on",n1,n2,
| getline [ Variable ] < Expression | 从 Expression 参数指定的文件读取输入的下一个记录,并将 Variable 参数指定的变量设置为该记录的值。只要流保留打开且 Expression 参数对同一个字符串求值,则对 getline 函数的每次后续调用读取另一个记录。如果未指定 Variable 参数,则 $0 记录变量和 NF 特殊变量设置为从流读取的记录。 |
| getline [ Variable ] | 将 Variable 参数指定的变量设置为从当前输入文件读取的下一个输入记录。如果未指定 Variable 参数,则 $0 记录变量设置为该记录的值,还将设置 NF、NR 和 FNR 特殊变量。 |
- **打开外部文件(close用法)**
+**打开外部文件(close用法)**
-```
+```shell
awk 'BEGIN{while("cat /etc/passwd"|getline){print $0;};close("/etc/passwd");}'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
```
- **逐行读取外部文件(getline使用方法)**
+**逐行读取外部文件(getline使用方法)**
-```
+```shell
awk 'BEGIN{while(getline < "/etc/passwd"){print $0;};close("/etc/passwd");}'
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
```
-```
+```shell
awk 'BEGIN{print "Enter your name:";getline name;print name;}'
Enter your name:
chengmo
chengmo
```
- **调用外部应用程序(system使用方法)**
+**调用外部应用程序(system使用方法)**
-```
+```shell
awk 'BEGIN{b=system("ls -al");print b;}'
total 42092
drwxr-xr-x 14 chengmo chengmo 4096 09-30 17:47 .
@@ -901,26 +901,26 @@ b返回值,是执行结果。
| strftime([format [, timestamp]]) | 格式化时间输出,将时间戳转为时间字符串具体格式,见下表。 |
| systime() | 得到时间戳,返回从1970年1月1日开始到当前时间(不计闰年)的整秒数 |
- **建指定时间(mktime使用)**
+**建指定时间(mktime使用)**
-```
+```shell
awk 'BEGIN{tstamp=mktime("2001 01 01 12 12 12");print strftime("%c",tstamp);}'
2001年01月01日 星期一 12时12分12秒
```
-```
+```shell
awk 'BEGIN{tstamp1=mktime("2001 01 01 12 12 12");tstamp2=mktime("2001 02 01 0 0 0");print tstamp2-tstamp1;}'
2634468
```
求2个时间段中间时间差,介绍了strftime使用方法
-```
+```shell
awk 'BEGIN{tstamp1=mktime("2001 01 01 12 12 12");tstamp2=systime();print tstamp2-tstamp1;}'
308201392
```
- **strftime日期和时间格式说明符**
+**strftime日期和时间格式说明符**
| 格式 | 描述 |
| ---- | ---- |
diff --git a/command/axel.md b/command/axel.md
index 42591c657f7..b783ff11033 100644
--- a/command/axel.md
+++ b/command/axel.md
@@ -1,6 +1,6 @@
axel
===
-
+
多线程下载工具
## 补充说明
@@ -11,56 +11,56 @@ axel
CentOS安装Axel:
-目前yum源上没有Axel,我们可以到http://pkgs.repoforge.org/axel/下载rpm包安装。
+目前yum源上没有Axel,我们可以到 http://pkgs.repoforge.org/axel/ 下载rpm包安装。
32位CentOS执行下面命令:
-```
+```shell
wget -c http://pkgs.repoforge.org/axel/axel-2.4-1.el5.rf.i386.rpm
rpm -ivh axel-2.4-1.el5.rf.i386.rpm
```
64位CentOS执行下面命令:
-```
+```shell
wget -c http://pkgs.repoforge.org/axel/axel-2.4-1.el5.rf.x86_64.rpm
rpm -ivh axel-2.4-1.el5.rf.x86_64.rpm
```
Debian/Ubuntu安装Axel:
-```
+```shell
apt-get install axel
```
### 语法
-```
+```shell
axel [options] url1 [url2] [url...]
```
### 选项
-```
---max-speed=x , -s x 最高速度x
---num-connections=x , -n x 连接数x
---output=f , -o f 下载为本地文件f
---search[=x] , -S [x] 搜索镜像
---header=x , -H x 添加头文件字符串x(指定 HTTP header)
---user-agent=x , -U x 设置用户代理(指定 HTTP user agent)
---no-proxy , -N 不使用代理服务器
---quiet , -q 静默模式
---verbose ,-v 更多状态信息
---alternate , -a Alternate progress indicator
---help ,-h 帮助
---version ,-V 版本信息
+```shell
+--max-speed=x , -s x # 最高速度x
+--num-connections=x , -n x # 连接数x
+--output=f , -o f # 下载为本地文件f
+--search[=x] , -S [x] # 搜索镜像
+--header=x , -H x # 添加头文件字符串x(指定 HTTP header)
+--user-agent=x , -U x # 设置用户代理(指定 HTTP user agent)
+--no-proxy , -N # 不使用代理服务器
+--quiet , -q # 静默模式
+--verbose ,-v # 更多状态信息
+--alternate , -a # Alternate progress indicator
+--help ,-h # 帮助
+--version ,-V # 版本信息
```
### 实例
-如下载lnmp安装包指定10个线程,存到/tmp/:
+如下载lnmp安装包指定10个线程,存到 `/tmp/`:
-```
+```shell
axel -n 10 -o /tmp/ http://www.jsdig.com/lnmp.tar.gz
```
diff --git a/command/badblocks.md b/command/badblocks.md
index a334c53484a..14df570705e 100644
--- a/command/badblocks.md
+++ b/command/badblocks.md
@@ -1,6 +1,6 @@
badblocks
===
-
+
查找磁盘中损坏的区块
## 补充说明
@@ -9,13 +9,13 @@ badblocks
### 语法
-```
+```shell
badblock(选项)(参数)
```
### 选项
-```
+```shell
-b<区块大小>:指定磁盘的区块大小,单位为字节;
-o<输出文件>:将检查的结果写入指定的输出文件;
-s:在检查时显示进度;
@@ -25,21 +25,21 @@ badblock(选项)(参数)
### 参数
-* 磁盘装置:指定要检查的磁盘装置;
-* 磁盘区块数:指定磁盘装置的区块总数;
-* 启始区块:指定要从哪个区块开始检查。
+* 磁盘装置:指定要检查的磁盘装置;
+* 磁盘区块数:指定磁盘装置的区块总数;
+* 启始区块:指定要从哪个区块开始检查。
### 实例
-badblocks以4096的一个block,每一个block检查16次,将结果输出到“hda-badblocks-list”文件里。
+badblocks以 4096 的一个block,每一个block检查16次,将结果输出到“hda-badblocks-list”文件里。
-```
+```shell
badblocks -b 4096 -c 16 /dev/hda1 -o hda-badblocks-list
```
hda-badblocks-list是个文本文件,内容如下:
-```
+```shell
cat hda-badblocks-list
51249
51250
@@ -53,7 +53,7 @@ cat hda-badblocks-list
可以针对可疑的区块多做几次操作。下面,badblocks以4096字节为一个“block”,每一个“block”检查1次, 将结果输出到“hda-badblocks-list.1”文件中,由第51000 block开始,到63000 block结束。
-```
+```shell
badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000
```
@@ -61,7 +61,7 @@ badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000
### 其他
- **1、fsck使用badblocks的信息**
+**1、fsck使用badblocks的信息**
badblocks只会在日志文件中标记出坏道的信息,但若希望在检测磁盘时也能跳过这些坏块不检测,可以使用fsck的-l参数:
@@ -69,11 +69,11 @@ badblocks只会在日志文件中标记出坏道的信息,但若希望在检
fsck.ext3 -l /tmp/hda-badblock-list.final /dev/hda1
```
- **2、在创建文件系统前检测坏道**
+**2、在创建文件系统前检测坏道**
badblocks可以随e2fsck和mke2fs的-c删除一起运行(对ext3文件系统也一样),在创建文件系统前就先检测坏道信息:
-```
+```shell
mkfs.ext3 -c /dev/hda1
```
diff --git a/command/basename.md b/command/basename.md
index 02055753629..e7c707e69fd 100644
--- a/command/basename.md
+++ b/command/basename.md
@@ -1,6 +1,6 @@
basename
===
-
+
打印目录或者文件的基本名称
## 补充说明
@@ -9,27 +9,27 @@ basename
### 语法
-```
+```shell
basename(选项)(参数)
```
### 选项
-```
+```shell
--help:显示帮助;
--version:显示版本号。
```
### 参数
-* 文件:带路径信息的文件;
-* 后缀:可选参数,指定要去除的文件后缀字符串。
+* 文件:带路径信息的文件;
+* 后缀:可选参数,指定要去除的文件后缀字符串。
### 实例
1、要显示一个shell变量的基本名称,请输入:
-```
+```shell
basename $WORKFILE
```
@@ -37,7 +37,7 @@ basename $WORKFILE
要构造一个和另一个文件名称相同(除了后缀)的文件名称,请输入:
-```
+```shell
OFILE=`basename $1 .c`.o
```
diff --git a/command/batch.md b/command/batch.md
index 489b073284d..de1abb92e49 100644
--- a/command/batch.md
+++ b/command/batch.md
@@ -1,6 +1,6 @@
batch
===
-
+
在系统不繁忙的时候执行定时任务
## 补充说明
@@ -9,13 +9,13 @@ batch
### 语法
-```
+```shell
batch(选项)(参数)
```
### 选项
-```
+```shell
-f:指定包含具体指令的任务文件;
-q:指定新任务的队列名称;
-m:任务执行完后向用户发送E-mail。
@@ -27,7 +27,7 @@ batch(选项)(参数)
### 实例
-```
+```shell
batch
at> echo 1234
at>
diff --git a/command/bc.md b/command/bc.md
index 2c582c15b35..1adbd5cb3de 100644
--- a/command/bc.md
+++ b/command/bc.md
@@ -1,6 +1,6 @@
bc
===
-
+
算术操作精密运算工具
## 补充说明
@@ -9,13 +9,13 @@ bc
### 语法
-```
+```shell
bc(选项)(参数)
```
### 选项
-```
+```shell
-i:强制进入交互式模式;
-l:定义使用的标准数学库;
-w:对POSIX bc的扩展给出警告信息;
@@ -32,7 +32,7 @@ bc(选项)(参数)
算术操作高级运算bc命令它可以执行浮点运算和一些高级函数:
-```
+```shell
echo "1.212*3" | bc
3.636
@@ -40,7 +40,7 @@ echo "1.212*3" | bc
设定小数精度(数值范围)
-```
+```shell
echo "scale=2;3/8" | bc
0.37
@@ -50,7 +50,7 @@ echo "scale=2;3/8" | bc
进制转换
-```
+```shell
#!/bin/bash
abc=192
echo "obase=2;$abc" | bc
@@ -59,7 +59,7 @@ echo "obase=2;$abc" | bc
执行结果为:11000000,这是用bc将十进制转换成二进制。
-```
+```shell
#!/bin/bash
abc=11000000
echo "obase=10;ibase=2;$abc" | bc
@@ -70,7 +70,7 @@ echo "obase=10;ibase=2;$abc" | bc
计算平方和平方根:
-```
+```shell
echo "10^10" | bc
echo "sqrt(100)" | bc
```
diff --git a/command/bg.md b/command/bg.md
index a7aaa85d19c..bb9fee05a6a 100644
--- a/command/bg.md
+++ b/command/bg.md
@@ -1,6 +1,6 @@
bg
===
-
+
用于将作业放到后台运行
## 补充说明
@@ -11,7 +11,7 @@ bg
### 语法
-```
+```shell
bg(参数)
```
@@ -23,16 +23,16 @@ bg(参数)
使用bg命令将任务号为1的任务放到后台继续执行,输入如下命令:
-```
-bg 1 #后台执行任务号为1的任务
+```shell
+bg 1 # 后台执行任务号为1的任务
```
如果系统中只有一个挂起的任务时,即使不为该命令设置参数"1",也可以实现这个功能。
注意:实际上,使用bg命令与在指令后面添加符号"&"的效果是一样的。例如,使用`&`将`find / -name password`放到后台执行,输入如下命令:
-```
-find / -name password & #后台执行任务
+```shell
+find / -name password & # 后台执行任务
```
diff --git a/command/bind.md b/command/bind.md
index fa48becd6f1..16aa0692101 100644
--- a/command/bind.md
+++ b/command/bind.md
@@ -1,6 +1,6 @@
bind
===
-
+
显示或设置键盘按键与其相关的功能
## 补充说明
@@ -9,13 +9,13 @@ bind
### 语法
-```
+```shell
bind(选项)
```
### 选项
-```
+```shell
-d:显示按键配置的内容;
-f<按键配置文件>:载入指定的按键配置文件;
-l:列出所有的功能;
@@ -26,13 +26,13 @@ bind(选项)
### 实例
-```
+```shell
bind -x '"\C-l":ls -l' #直接按 CTRL+L 就列出目录
```
其中keyseq可以使用`showkey -a`命令来获取:
-```
+```shell
[root@localhost ~]# showkey -a
Press any keys - Ctrl-D will terminate this program
diff --git a/command/blkid.md b/command/blkid.md
index 9d93c779b22..d64c5c81f87 100644
--- a/command/blkid.md
+++ b/command/blkid.md
@@ -1,6 +1,6 @@
blkid
===
-
+
查看块设备的文件系统类型、LABEL、UUID等信息
## 补充说明
@@ -9,7 +9,7 @@ blkid
### 语法
-```
+```shell
blkid -L | -U
blkid [-c ] [-ghlLv] [-o] [-s ][-t ] -[w ] [ ...]
blkid -p [-s ] [-O ] [-S ][-o] ...
@@ -18,77 +18,77 @@ blkid -i [-s ] [-o] ...
### 选项
-```
--c 指定cache文件(default: /etc/blkid.tab, /dev/null = none)
--d don't encode non-printing characters
--h 显示帮助信息
--g garbage collect the blkid cache
--o 指定输出格式
--k list all known filesystems/RAIDs and exit
--s 显示指定信息,默认显示所有信息
--t find device with a specific token (NAME=value pair)
--l look up only first device with token specified by -t
--L