更新 markdown 排版

This commit is contained in:
jaywcjlove 2019-04-28 21:52:17 +08:00
parent 51b20d599b
commit 49be3806b7
162 changed files with 1482 additions and 1588 deletions

View File

@ -1,6 +1,6 @@
ab
===
Apache服务器的性能测试工具
## 补充说明
@ -15,7 +15,7 @@ ab(选项)(参数)
### 选项
```
```shell
-A指定连接服务器的基本的认证凭据
-c指定一次向服务器发出请求数
-C添加cookie

View File

@ -5,7 +5,7 @@ ack
## 安装
```bash
```shell
# ubuntu下要安装ack-grep因为在debian系中ack这个名字被其他的软件占用了。
sudo apt-get install ack-grep
# alpine Linux-apk软件包管理器 安装 ack
@ -16,7 +16,7 @@ apk install ack
这些参数在linux上的适用频率是相当高的尤其是你用vim做为IDE的话
```
```shell
-c(统记)/ -i(忽略大小)/ -h(不显示名称)/
-l(只显文件名)/ -n(加行号)/ -v(显示不匹配)
```
@ -43,7 +43,7 @@ ack官网列出了这工具的5大卖点
grep常用操作
```bash
```shell
grep -r 'hello_world' # 简单用法
grep '^hello_world' . # 简单正则
ls -l | grep .py # 管道用法
@ -65,7 +65,7 @@ ack-grep -Q 'hello*'
对搜索结果进行处理比如只显示一个文件的一个匹配项或者xxx
```bash
```shell
ack-grep --line=1 # 输出所有文件第二行
ack-grep -l 'hello' # 包含的文件名
ack-grep -L 'print' # 非包含文件名
@ -75,7 +75,7 @@ ack-grep -L 'print' # 非包含文件名
输出的结果是以什么方式展示呢,这个部分有几个参数可以练习下
```bash
```shell
ack-grep hello --pager='less -R' # 以less形式展示
ack-grep hello --noheading # 不在头上显示文件
ack-grep hello --nocolor # 不对匹配字符着色
@ -84,7 +84,7 @@ ack-grep hello --nocolor # 不对匹配字符着色
### File finding
没错它可以查找文件以省去你要不断的结合find和grep的麻烦虽然在linux的思想是一个工具做好一件事。
```bash
```shell
ack-grep -f hello.py # 查找全匹配文件
ack-grep -g hello.py$ # 查找正则匹配文件
ack-grep -g hello --sort-files # 查找然后排序
@ -94,7 +94,7 @@ ack-grep -g hello --sort-files # 查找然后排序
文件过滤,个人觉得这是一个很不错的功能。如果你曾经在搜索项目源码是不小心命中日志中的某个关键字的话,你会觉得这个有用。
```bash
```shell
ack-grep --python hello # 查找所有python文件
ack-grep -G hello.py$ hello # 查找匹配正则的文件
```

View File

@ -27,7 +27,7 @@ alias(选项)(参数)
### 实例
**alias 的基本使用方法为:**
**alias 的基本使用方法为:**
```
alias 新的命令='原命令 -选项/参数'
@ -37,9 +37,9 @@ alias 新的命令='原命令 -选项/参数'
要删除一个别名,可以使用 unalias 命令,如 unalias l。
**查看系统已经设置的别名:**
**查看系统已经设置的别名:**
```bash
```shell
[root@localhost ~]#
[root@localhost ~]# alias
alias cp='cp -i'
@ -56,16 +56,21 @@ alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-ti
```
### 命令别名永久生效
直接在shell里设定的命令别名在终端关闭或者系统重新启动后都会失效如何才能永久有效呢办法就是将别名的设置加入~/.bashrc文件然后重新载入下文件就可以了。
```bash
```shell
$ vim ~/.bashrc
```
在文件最后面加入别名设置alias rm=rm -i保存后重新载入
```bash
```shell
$ source ~/.bashrc
```
这样就可以永久保存命令的别名了。因为修改的是当前用户目录下的.bashrc文件所以这样的方式只对当前用户有用。如果要对所有用户都有效修改/etc目录下的bashrc文件就可以了。在CentOS7下这个文件是/etc/bash.bashrc。此外在CentOS7下细看~/.bashrc文件会发有这样一段代码
```bash
```shell
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
@ -78,35 +83,35 @@ fi
alias这个命令是shell的内建命令可以根据自己的使用习惯设置一些别名需要注意的就是和其他命令冲突的情况。
#### 一、 范例演示
在使用和维护Linux系统过程中我们常常希望根据自己的需要来定义一些命令那么这样的操作是不是很难呢其实不是系统已经为我们设置好了相关的命令下面小编就以CentOS6.4系统为例,为大家演示如何创建自己的命令。
#### 二、 自定义命令简介
CentOS系统下的创建自定义命令其实比较简单使用的命令就是alias具体使用的方法就是 alias 自定义命令名=‘命令’。但是需要注意的是,在自定义之前需要查看自定义的命令名是否是系统已经使用的命令名,否则会冲突,另外一个就是定期清理不需要的自定义命令名。
CentOS系统下的创建自定义命令其实比较简单使用的命令就是alias具体使用的方法就是 alias 自定义命令名=‘命令’。但是需要注意的是,在自定义之前需要查看自定义的命令名是否是系统已经使用的命令名,否则会冲突,另外一个就是定期清理不需要的自定义命令名。
#### 三、 演示举例
假定系统操作员希望进行如下操作:
1.进入目录/root
2.查看目录下文件
3.切换回根目录
通常这需要三条命令 cd /rootlscd / ,如果需要经常使用那么我们可以通过自定义命令的方式用一条命令完成全部操作。
![](alias\01.png)
#### 四、 操作过程
首先使用命令 type 自定义命令名 查看自定义命令名是否被系统占用。从图中可以看出test命令名已被系统占用所以不能使用而loo这个命令名经查询可以使用。
![](alias\02.png)
使用命令alias创建自定义命令alias loo='cd /root;ls;cd /' 。需要注意的是命令的使用格式,分号与分号之间是没有空格的。
![](alias\03.png)
测试一下自定义命令,当输入命令 loo 时,发现系统依次完成了 cd /root、ls、cd / 三条命令,说明设置成功。同时也可直接使用命令 alias 查询系统中是否添加了loo这个自定义命令。
![](alias\04.png)
首先使用命令 type 自定义命令名 查看自定义命令名是否被系统占用。从图中可以看出test命令名已被系统占用所以不能使用而loo这个命令名经查询可以使用。
使用命令alias创建自定义命令alias loo='cd /root;ls;cd /' 。需要注意的是命令的使用格式,分号与分号之间是没有空格的。
测试一下自定义命令,当输入命令 loo 时,发现系统依次完成了 cd /root、ls、cd / 三条命令,说明设置成功。同时也可直接使用命令 alias 查询系统中是否添加了loo这个自定义命令。
如果希望删除这个自定义命令,可以使用命令 unalias 自定义命令名 来完成。执行之后发现loo命令已不存在同时自定义命令库中也没有loo命令。
如果希望删除这个自定义命令,可以使用命令 unalias 自定义命令名 来完成。执行之后发现loo命令已不存在同时自定义命令库中也没有loo命令。
![](alias\05.png)
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

View File

@ -1,6 +1,6 @@
apachectl
===
Apache服务器前端控制工具
## 补充说明
@ -15,14 +15,14 @@ apachectl(参数)
### 参数
* configtest检查设置文件中的语法是否正确
* fullstatus显示服务器完整的状态信息
* graceful重新启动Apache服务器但不会中断原有的连接
* help显示帮助信息
* restart重新启动Apache服务器
* start启动Apache服务器
* status显示服务器摘要的状态信息
* stop停止Apache服务器。
* configtest检查设置文件中的语法是否正确
* fullstatus显示服务器完整的状态信息
* graceful重新启动Apache服务器但不会中断原有的连接
* help显示帮助信息
* restart重新启动Apache服务器
* start启动Apache服务器
* status显示服务器摘要的状态信息
* stop停止Apache服务器。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

View File

@ -5,7 +5,7 @@ Alpine Linux 下的包管理工具
## 使用实例
```bash
```shell
apk install xxx
apk search xxx # 支持正则
apk info xxx # 查看包的详细信息
@ -18,7 +18,7 @@ apk del openssh openntp vim
upgrade命令升级系统已安装的所以软件包一般包括内核当然也可指定仅升级部分软件包通过-u或upgrade选择指定
```bash
```shell
apk update # 更新最新本地镜像源
apk upgrade # 升级软件
apk add --upgrade busybox # 指定升级部分软件包
@ -26,7 +26,7 @@ apk add --upgrade busybox # 指定升级部分软件包
### 搜索
```bash
```shell
apk search # 查找所以可用软件包
apk search -v # 查找所以可用软件包及其描述内容
apk search -v 'acf*' # 通过软件包名称查找软件包
@ -37,7 +37,7 @@ apk search -v -d 'docker' # 通过描述文件查找特定的软件包
info命令用于显示软件包的信息。
```bash
```shell
apk info # 列出所有已安装的软件包
apk info -a zlib # 显示完整的软件包信息
apk info --who-owns /sbin/lbu # 显示指定文件属于的包
@ -47,7 +47,7 @@ apk info --who-owns /sbin/lbu # 显示指定文件属于的包
还是蛮喜欢 alpine 的,简单纯粹
```bash
```shell
apk add iproute2 # ss vs netstat
ss -ptl
apk add drill # drill vs nslookup&dig

View File

@ -1,6 +1,6 @@
apropos
===
在 whatis 数据库中查找字符串
## 补充说明
@ -11,13 +11,13 @@ apropos
### 语法
```
```shell
apropos [-dalhvV] -e|-[w|-r] [-s section] [-m system[,...]] [-M path] [-L locale] -C [file] keyword ...
```
### 选项
```
```shell
-d, --debug输出调试信息。
-v, --verbose输出详细的警告信息。
-r, -- regex将每个keyword作为正则表达式解释。这是默认行为。每个keyword将匹配手册页和描述。
@ -40,7 +40,7 @@ apropos [-dalhvV] -e|-[w|-r] [-s section] [-m system[,...]] [-M path] [-L locale
### 实例
```
```shell
[root@localhost ~]# man -k who
at.allow [at] (5) - determine who can submit jobs via at or batch
at.deny [at] (5) - determine who can submit jobs via at or batch
@ -66,7 +66,7 @@ whoami (1) - print effective userid
查找手册页名字和描述中包含emacs和vi的手册页
```
```shell
apropos -a emacs vi
```

View File

@ -1,6 +1,6 @@
apt-get
===
Debian Linux发行版中的APT软件包管理工具
## 补充说明
@ -9,26 +9,26 @@ Debian Linux发行版中的APT软件包管理工具
### 语法
```
```shell
apt-get(选项)(参数)
```
### 选项
```
```shell
-c指定配置文件。
```
### 参数
* 管理指令对APT软件包的管理操作
* 软件包:指定要操纵的软件包。
* 管理指令对APT软件包的管理操作
* 软件包:指定要操纵的软件包。
### 实例
使用apt-get命令的第一步就是引入必需的软件库Debian的软件库也就是所有Debian软件包的集合它们存在互联网上的一些公共站点上。把它们的地址加入apt-get就能搜索到我们想要的软件。/etc/apt/sources.list是存放这些地址列表的配置文件其格式如下
```
```shell
deb web或[ftp地址] [发行版名字] main/contrib/non-[free]
```
@ -36,55 +36,55 @@ deb web或[ftp地址] [发行版名字] main/contrib/non-[free]
在修改`/etc/apt/sources.list`或者`/etc/apt/preferences`之后运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的:
```
```shell
apt-get update
```
安装一个新软件包:
```
```shell
apt-get install packagename
```
卸载一个已安装的软件包(保留配置文件):
```
```shell
apt-get remove packagename
```
卸载一个已安装的软件包(删除配置文件):
```
```shell
apt-get purge remove packagename
```
会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件:
```
```shell
apt-get autoclean apt
```
这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的:
```
```shell
apt-get clean
```
更新所有已安装的软件包:
```
```shell
apt-get upgrade
```
将系统升级到新版本:
```
```shell
apt-get dist-upgrade
```
定期运行这个命令来清除那些已经卸载的软件包的.deb文件。通过这种方式您可以释放大量的磁盘空间。如果您的需求十分迫切可以使用`apt-get clean`以释放更多空间。这个命令会将已安装软件包裹的.deb文件一并删除。大多数情况下您不会再用到这些.debs文件因此如果您为磁盘空间不足 而感到焦头烂额,这个办法也许值得一试:
```
```shell
apt-get autoclean
```

View File

@ -1,6 +1,6 @@
apt-key
===
管理Debian Linux系统中的软件包密钥
## 补充说明
@ -9,7 +9,7 @@ apt-key
### 语法
```
```shell
apt-key(参数)
```
@ -19,11 +19,11 @@ apt-key(参数)
### 实例
```
apt-key list #列出已保存在系统中key
apt-key add keyname #把下载的key添加到本地trusted数据库中
apt-key del keyname #从本地trusted数据库删除key
apt-key update #更新本地trusted数据库删除过期没用的key。
```shell
apt-key list # 列出已保存在系统中key。
apt-key add keyname # 把下载的key添加到本地trusted数据库中。
apt-key del keyname # 从本地trusted数据库删除key。
apt-key update # 更新本地trusted数据库删除过期没用的key。
```

View File

@ -1,6 +1,6 @@
apt-sortpkgs
===
Debian Linux下对软件包索引文件进行排序的工具
## 补充说明
@ -9,13 +9,13 @@ Debian Linux下对软件包索引文件进行排序的工具
### 语法
```
```shell
apt-sortpkgs(选项)(参数)
```
### 选项
```
```shell
-s使用源索引字段排序
-h显示帮助信息。
```

View File

@ -1,6 +1,6 @@
aptitude
===
Debian Linux系统中软件包管理工具
## 补充说明
@ -9,13 +9,13 @@ Debian Linux系统中软件包管理工具
### 语法
```
```shell
aptitude(选项)(参数)
```
### 选项
```
```shell
-h显示帮助信息
-d仅下载软件包不执行安装操作
-P每一步操作都要求确认
@ -32,17 +32,17 @@ aptitude(选项)(参数)
以下是我总结的一些常用aptitude命令仅供参考
```
aptitude update #更新可用的包列表
aptitude upgrade #升级可用的包
aptitude dist-upgrade #将系统升级到新的发行版
aptitude install pkgname #安装包
aptitude remove pkgname #删除包
aptitude purge pkgname #删除包及其配置文件
aptitude search string #搜索包
aptitude show pkgname #显示包的详细信息
aptitude clean #删除下载的包文件
aptitude autoclean #仅删除过期的包文件
```shell
aptitude update # 更新可用的包列表
aptitude upgrade # 升级可用的包
aptitude dist-upgrade # 将系统升级到新的发行版
aptitude install pkgname # 安装包
aptitude remove pkgname # 删除包
aptitude purge pkgname # 删除包及其配置文件
aptitude search string # 搜索包
aptitude show pkgname # 显示包的详细信息
aptitude clean # 删除下载的包文件
aptitude autoclean # 仅删除过期的包文件
```
当然,你也可以在文本界面模式中使用 aptitude。

View File

@ -18,7 +18,7 @@ Usage: ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>]
### 选项
```
```shell
d - 从归档文件中删除文件
m[ab] - 在归档文件中移动文件
p - 打印在归档文件中找到的文件
@ -50,7 +50,7 @@ x[o] - 从归档文件中分解文件
选项参数
```
```shell
--plugin <p> - 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

View File

@ -1,6 +1,6 @@
arch
===
显示当前主机的硬件架构类型
## 补充说明
@ -9,13 +9,13 @@ arch
### 语法
```
```shell
arch
```
### 实例
```
```shell
arch
x86_64
```

View File

@ -1,22 +1,22 @@
arj
===
用于创建和管理.arj压缩包
## 补充说明
**arj命令** 是“.arj”格式的压缩文件的管理器用于创建和管理“.arj”压缩包。
**arj命令** 是 `.arj` 格式的压缩文件的管理器,用于创建和管理 `.arj` 压缩包。
### 语法
```
```shell
arj(参数)
```
### 参数
* 操作指令:对“.arj”压缩包执行的操作指令;
* 压缩包名称指定要操作的arj压缩包名称。
* 操作指令:对 `.arj` 压缩包执行的操作指令;
* 压缩包名称指定要操作的arj压缩包名称。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

View File

@ -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
```

View File

@ -1,6 +1,6 @@
arping
===
通过发送ARP协议报文测试网络
## 补充说明
@ -9,13 +9,13 @@ arping
### 语法
```
```shell
arping(选项)(参数)
```
### 选项
```
```shell
-b用于发送以太网广播帧FFFFFFFFFFFF。arping一开始使用广播地址在收到响应后就使用unicast地址。
-qquiet 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

View File

@ -1,6 +1,6 @@
arptables
===
管理ARP包过滤规则表
## 补充说明
@ -9,13 +9,13 @@ arptables
### 语法
```
```shell
arptables(选项)
```
### 选项
```
```shell
-A向规则链中追加规则
-D从指定的链中删除规则
-l向规则链中插入一条新的规则

View File

@ -1,6 +1,6 @@
arpwatch
===
监听网络上ARP的记录
## 补充说明
@ -9,13 +9,13 @@ arpwatch
### 语法
```
```shell
arpwatch(选项)
```
### 选项
```
```shell
-d启动排错模式
-f<记录文件>设置存储ARP记录的文件预设为/var/arpwatch/arp.dat
-i<接口>指定监听ARP的接口预设的接口为eth0

View File

@ -1,6 +1,6 @@
as
===
汇编语言编译器
## 补充说明
@ -9,13 +9,13 @@ as
### 语法
```
```shell
as(选项)(参数)
```
### 选项
```
```shell
-ac忽略失败条件
-ad忽略调试指令
-ah包括高级源

View File

@ -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> <EOT>
@ -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> <EOT>
@ -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

View File

@ -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
```

View File

@ -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> <eot>

View File

@ -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
```

View File

@ -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从管道中读取并将输入赋值给outsplit函数把变量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日期和时间格式说明符**
| 格式 | 描述 |
| ---- | ---- |

View File

@ -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
```

View File

@ -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
```

View File

@ -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
```

View File

@ -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> <EOT>

View File

@ -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
```

View File

@ -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 & # 后台执行任务
```

View File

@ -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

View File

@ -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 <file> 指定cache文件(default: /etc/blkid.tab, /dev/null = none)
-d don't encode non-printing characters
-h 显示帮助信息
-g garbage collect the blkid cache
-o <format> 指定输出格式
-k list all known filesystems/RAIDs and exit
-s <tag> 显示指定信息,默认显示所有信息
-t <token> find device with a specific token (NAME=value pair)
-l look up only first device with token specified by -t
-L <label> convert LABEL to device name
-U <uuid> convert UUID to device name
-v 显示版本信息
-w <file> write cache to different file (/dev/null = no write)
<dev> specify device(s) to probe (default: all devices)
```shell
-c <file> # 指定cache文件(default: /etc/blkid.tab, /dev/null = none)
-d # don't encode non-printing characters
-h # 显示帮助信息
-g # garbage collect the blkid cache
-o <format> # 指定输出格式
-k # list all known filesystems/RAIDs and exit
-s <tag> # 显示指定信息,默认显示所有信息
-t <token> # find device with a specific token (NAME=value pair)
-l # look up only first device with token specified by -t
-L <label> # convert LABEL to device name
-U <uuid> # convert UUID to device name
-v # 显示版本信息
-w <file> # write cache to different file (/dev/null = no write)
<dev> # specify device(s) to probe (default: all devices)
Low-level probing options:
-p low-level superblocks probing (bypass cache)
-i gather information about I/O limits
-S <size> overwrite device size
-O <offset> probe at the given offset
-u <list> filter by "usage" (e.g. -u filesystem,raid)
-n <list> filter by filesystem type (e.g. -n vfat,ext3)
-p # low-level superblocks probing (bypass cache)
-i # gather information about I/O limits
-S <size> # overwrite device size
-O <offset> # probe at the given offset
-u <list> # filter by "usage" (e.g. -u filesystem,raid)
-n <list> # filter by filesystem type (e.g. -n vfat,ext3)
```
### 实例
1、列出当前系统中所有已挂载文件系统的类型
```
```shell
sudo blkid
```
2、显示指定设备 UUID
```
```shell
sudo blkid -s UUID /dev/sda5
```
3、显示所有设备 UUID
```
```shell
sudo blkid -s UUID
```
4、显示指定设备 LABEL
```
```shell
sudo blkid -s LABEL /dev/sda5
```
5、显示所有设备 LABEL
```
```shell
sudo blkid -s LABEL
```
6、显示所有设备文件系统
```
```shell
sudo blkid -s TYPE
```
7、显示所有设备
```
```shell
sudo blkid -o device
```
8、以列表方式查看详细信息
```
```shell
sudo blkid -o list
```

View File

@ -1,6 +1,6 @@
blockdev
===
从命令行调用区块设备控制程序
## 补充说明
@ -9,13 +9,13 @@ blockdev
### 语法
```
```shell
blockdev(选项)(参数)
```
选项
```
```shell
-V打印版本号并退出
-q安静模式
-v详细信息模式
@ -35,19 +35,19 @@ blockdev(选项)(参数)
设置设备为只读:
```
```shell
blockdev --setro /dev/hda4
```
读取设备是否为只读:
```
```shell
blockdev --getro /dev/hda4
```
设置设别为可读写:
```
```shell
blockdev --setrw /dev/hda4
```

View File

@ -1,6 +1,6 @@
bmodinfo
===
显示给定模块的详细信息
## 补充说明
@ -9,13 +9,13 @@ bmodinfo
### 语法
```
```shell
bmodinfo(选项)(参数)
```
### 选项
```
```shell
-a显示模块作者
-d显示模块的描述信息
-l显示模块的许可信息
@ -32,7 +32,7 @@ bmodinfo(选项)(参数)
显示sg模块的信息
```
```shell
[root@localhost ~]# modinfo sg
filename: /lib/modules/2.6.9-42.ELsmp/kernel/drivers/scsi/sg.ko
author: Douglas Gilbert

View File

@ -1,6 +1,6 @@
builtin
===
执行shell内部命令
## 补充说明
@ -9,7 +9,7 @@ builtin
### 语法
```
```shell
builtin(参数)
```
@ -21,8 +21,8 @@ shell内部命令指定需要执行的shell内部命令。
使用builtin命令执行shell内部命alias显示命令别名输入如下命令
```
builtin alias #执行shell内部指令
```shell
builtin alias # 执行shell内部指令
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'

View File

@ -1,6 +1,6 @@
bunzip2
===
创一个bz2文件压缩包
## 补充说明
@ -9,13 +9,13 @@ bunzip2
### 语法
```
```shell
bunzip2(选项)(参数)
```
### 选项
```
```shell
-f或--force解压缩时若输出的文件与现有文件同名时预设不会覆盖现有的文件
-k或——keep在解压缩后预设会删除原来的压缩文件。若要保留压缩文件请使用此参数
-s或——small降低程序执行时内存的使用量
@ -31,7 +31,7 @@ bunzip2(选项)(参数)
将`/opt`目录下的etc.zip、var.zip和backup.zip进行压缩设置压缩率为最高同时在压缩完毕后不删除原始文件显示压缩过程的详细信息。
```
```shell
bzip2 -9vk /opt/etc.zip /opt/var.zip /opt/backup.zip
```

View File

@ -10,12 +10,12 @@ bye
### 语法
```
```shell
bye
```
### 实例
```
```shell
bye
```

View File

@ -1,6 +1,6 @@
bzcat
===
解压缩指定的.bz2文件
## 补充说明
@ -9,7 +9,7 @@ bzcat
### 语法
```
```shell
bzcat(参数)
```
@ -21,7 +21,7 @@ bzcat(参数)
将`/tmp/man.config`以bzip2格式压缩
```
```shell
bzip2 -z man.config
```
@ -29,7 +29,7 @@ bzip2 -z man.config
将上面的压缩文件内容读出来:
```
```shell
bzcat man.config.bz2
```

View File

@ -1,6 +1,6 @@
bzcmp
===
比较两个压缩包中的文件
## 补充说明
@ -9,14 +9,14 @@ bzcmp
### 语法
```
```shell
bzcmp(参数)
```
### 参数
* 文件1指定要比较的第一个.bz2压缩包
* 文件2指定要比较的第二个.bz2压缩包。
* 文件1指定要比较的第一个.bz2压缩包
* 文件2指定要比较的第二个.bz2压缩包。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

View File

@ -1,6 +1,6 @@
bzdiff
===
直接比较两个.bz2压缩包中文件的不同
## 补充说明
@ -9,7 +9,7 @@ bzdiff
### 语法
```
```shell
bzdiff(参数)
```

View File

@ -1,6 +1,6 @@
bzgrep
===
使用正则表达式搜索.bz2压缩包中文件
## 补充说明
@ -9,7 +9,7 @@ bzgrep
### 语法
```
```shell
bzgrep(参数)
```

View File

@ -1,6 +1,6 @@
bzip2
===
将文件压缩成bz2格式
## 补充说明
@ -9,13 +9,13 @@ bzip2
### 语法
```
```shell
bzip2(选项)(参数)
```
### 选项
```
```shell
-c或——stdout将压缩与解压缩的结果送到标准输出
-d或——decompress执行解压缩
-f或-forcebzip2在压缩或解压缩时若输出文件与现有文件同名预设不会覆盖现有文件。若要覆盖。请使用此参数
@ -36,9 +36,9 @@ bzip2(选项)(参数)
### 实例
**压缩指定文件filename:**
**压缩指定文件filename:**
```
```shell
bzip2 filename
bzip2 -z filename
@ -46,9 +46,9 @@ bzip2 -z filename
这里压缩的时候不会输出会将原来的文件filename给删除替换成filename.bz2.如果以前有filename.bz2则不会替换并提示错误如果想要替换则指定-f选项例如`bzip2 -f filename`如果filename是目录则也提醒错误不做任何操作如果filename已经是压过的了有bz2后缀就提醒一下不再压缩没有bz2后缀会再次压缩。
**解压指定的文件filename.bz2:**
**解压指定的文件filename.bz2:**
```
```shell
bzip2 -d filename.bz2
bunzip2 filename.bz2
@ -56,59 +56,59 @@ bunzip2 filename.bz2
这里解压的时候没标准输出会将原来的文件filename.bz2给替换成filename。如果以前有filename则不会替换并提示错误如果想要替换则指定`-f`选项,例如`bzip2 -df filename.bz2`。
**压缩解压的时候将结果也输出:**
**压缩解压的时候将结果也输出:**
```
```shell
$bzip2 -v filename
```
输入之后,输出如下:
```
```shell
filename: 0.119:1, 67.200 bits/byte, -740.00% saved, 5 in, 42 out.
```
这里,加上`-v`选项就会输出了,只用压缩举例了,解压的时候同理`bzip2 -dv filename.bz2`不再举例了。
**模拟解压实际并不解压:**
**模拟解压实际并不解压:**
```
```shell
bzip2 -tv filename.bz2
```
输入之后,输出如下:
```
```shell
filename.bz2: ok
```
这里,`-t`指定要进行模拟解压,不实际生成结果,也就是说类似检查文件,当然就算目录下面有filename也不会有什么错误输出了因为它根本不会真的解压文件。为了在屏幕上输出这里加上`-v`选项了,如果是真的解压`bzip2 -dv filename.bz2`则输出的是把"ok"替换成了"done"。
**压缩解压的时候,除了生成结果文件,将原来的文件也保存:**
**压缩解压的时候,除了生成结果文件,将原来的文件也保存:**
```
```shell
bzip2 -k filename
```
这里,加上`-k`就保存原始的文件了,否则原始文件会被结果文件替代。只用压缩举例了,解压的时候同理`$bzip2 -dk filename.bz2`不再举例了。
**解压到标准输出:**
**解压到标准输出:**
```
```shell
bzip2 -dc filename.bz2
```
输入之后,输出如下:
```
```shell
hahahhaahahha
```
这里,使用`-c`指定到标准输出输出的是文件filename的内容不会将filename.bz2删除。
**压缩到标准输出:**
**压缩到标准输出:**
```
```shell
bzip2 -c filename
bzip2: I won't write compressed data to a terminal.
bzip2: For help, type: `bzip2 --help'.
@ -116,9 +116,9 @@ bzip2: For help, type: `bzip2 --help'.
这里,使用`-c`指定压缩到标准输出不删除原有文件,不同的是,压缩后的文件无法输出到标准输出。
**使用bzip2的时候将所有后面的看作文件(即使文件名以'-'开头)**
**使用bzip2的时候将所有后面的看作文件(即使文件名以'-'开头)**
```
```shell
bzip2 -- -myfilename
```

View File

@ -1,6 +1,6 @@
bzip2recover
===
恢复被破坏的.bz2压缩包中的文件
## 补充说明
@ -11,7 +11,7 @@ bzip2是以区块的方式来压缩文件每个区块视为独立的单位。
### 语法
```
```shell
bzip2recover(参数)
```

View File

@ -1,6 +1,6 @@
bzless
===
增强.bz2压缩包查看器
## 补充说明
@ -9,7 +9,7 @@ bzless
### 语法
```
```shell
bzless(参数)
```

View File

@ -1,6 +1,6 @@
bzmore
===
查看bzip2压缩过的文本文件的内容
## 补充说明
@ -9,7 +9,7 @@ bzmore
### 语法
```
```shell
bzmore(参数)
```

View File

@ -1,6 +1,6 @@
cal
===
显示当前日历或指定日期的日历
## 补充说明
@ -9,13 +9,13 @@ cal
### 语法
```
```shell
cal(选项)(参数)
```
### 选项
```
```shell
-l显示单月输出
-3显示临近三个月的日历
-s将星期日作为月的第一天
@ -26,7 +26,7 @@ cal(选项)(参数)
### 参数
```
```shell
月:指定月份;
年:指定年份。
```
@ -35,7 +35,7 @@ cal(选项)(参数)
单独执行cal命令会打印出日历
```
```shell
[root@localhost ~]# cal
十二月 2013
日 一 二 三 四 五 六
@ -46,7 +46,7 @@ cal(选项)(参数)
29 30 31
```
```
```shell
[root@localhost ~]# cal -j
十二月 2013
日 一 二 三 四 五 六
@ -57,7 +57,7 @@ cal(选项)(参数)
363 364 365
```
```
```shell
[root@localhost ~]# cal -3
十一月 2013 十二月 2013 一月 2014
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六

View File

@ -1,6 +1,6 @@
cancel
===
取消已存在的打印任务
## 补充说明
@ -9,13 +9,13 @@ cancel
### 语法
```
```shell
cancel(选项)(参数)
```
### 选项
```
```shell
-a取消所有打印任务
-E当连接到服务器时强制使用加密
-U指定连接服务器时使用的用户名

View File

@ -11,13 +11,13 @@ cat
### 语法
```
```shell
cat(选项)(参数)
```
### 选项
```
```shell
-n或--number从1开始对所有输出的行数编号
-b或--number-nonblank和-n相似只不过对于空白行不编号
-s或--squeeze-blank当遇到有连续两行以上的空白行就代换为一行的空白行
@ -34,7 +34,7 @@ cat(选项)(参数)
设m1和m2是当前目录下的两个文件
```
```shell
cat m1 在屏幕上显示文件m1的内容
cat m1 m2 同时显示文件m1和m2的内容
cat m1 m2 > file 将文件m1和m2合并后放入文件file中

View File

@ -1,6 +1,6 @@
cd
===
切换用户当前工作目录
## 补充说明
@ -9,13 +9,13 @@ cd
### 语法
```
```shell
cd (选项) (参数)
```
### 选项
```
```shell
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。
@ -23,13 +23,13 @@ cd (选项) (参数)
### 实例
```
cd 进入用户主目录;
cd ~ 进入用户主目录;
cd - 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/"".."为上级目录的意思);
cd ../.. 返回上两级目录;
cd !$ 把上个命令的参数作为cd参数使用。
```shell
cd # 进入用户主目录;
cd ~ # 进入用户主目录;
cd - # 返回进入此目录之前所在的目录;
cd .. # 返回上级目录(若当前目录为“/“,则执行完后还在“/"".."为上级目录的意思);
cd ../.. # 返回上两级目录;
cd !$ # 把上个命令的参数作为cd参数使用。
```

View File

@ -1,6 +1,6 @@
cdrecord
===
Linux系统下光盘刻录功能命令
## 补充说明
@ -9,13 +9,13 @@ Linux系统下光盘刻录功能命令
### 语法
```
```shell
cdrecord(选项)(参数)
```
### 选项
```
```shell
-v显示刻录光盘的详细过程
-eject刻录完成后弹出光盘
speed=<刻录倍速>:指定光盘刻录的倍速;
@ -31,7 +31,7 @@ ISO文件指定刻录光盘使用的ISO映像文件。
查看系统所有 CD-R(w) 设备:
```
```shell
cdrecord -scanbus
scsibus0:
0,0,0 0) *
@ -42,19 +42,19 @@ scsibus0:
用iso文件刻录一张光盘
```
```shell
cdrecord -v -eject speed=4 dev=0,3,0 backup.iso
```
参数解释
* -v显示刻录光盘的详细过程
* -eject刻完自动弹出光盘
* speed=4 dev=0,3,0四速刻录到HP CD-writer设备上。
* -v显示刻录光盘的详细过程
* -eject刻完自动弹出光盘
* speed=4 dev=0,3,0四速刻录到HP CD-writer设备上。
擦写光驱:
```
```shell
cdrecord --dev=0,3,0 --blank=fast
```

View File

@ -1,6 +1,6 @@
chage
===
修改帐号和密码的有效期限
## 补充说明
@ -9,13 +9,13 @@ chage
### 语法
```
```shell
chage [选项] 用户名
```
### 选项
```
```shell
-m密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M密码保持有效的最大天数。
-w用户密码到期前提前收到警告信息的天数。
@ -29,7 +29,7 @@ chage [选项] 用户名
可以编辑`/etc/login.defs`来设定几个参数,以后设置口令默认就按照参数设定为准:
```
```shell
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
@ -38,7 +38,7 @@ PASS_WARN_AGE 7
当然在`/etc/default/useradd`可以找到如下2个参数进行设置
```
```shell
# useradd defaults file
GROUP=100
HOME=/home
@ -53,7 +53,7 @@ CREATE_MAIL_SPOOL=yes
我的服务器root帐户密码策略信息如下
```
```shell
[root@linuxde ~]# chage -l root
最近一次密码修改时间 3月 12, 2013
密码过期时间 :从不
@ -66,7 +66,7 @@ CREATE_MAIL_SPOOL=yes
我可以通过如下命令修改我的密码过期时间:
```
```shell
[root@linuxde ~]# chage -M 60 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间 3月 12, 2013
@ -80,7 +80,7 @@ CREATE_MAIL_SPOOL=yes
然后通过如下命令设置密码失效时间:
```
```shell
[root@linuxde ~]# chage -I 5 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间 3月 12, 2013

View File

@ -1,13 +1,21 @@
chattr
===
用来改变文件属性
## 补充说明
**chattr命令** 用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性这些属性共有以下8种模式
### 语法
```shell
chattr(选项)
```
### 选项
```shell
a让文件或目录仅供附加用途
b不更新文件或目录的最后存取时间
c将文件或目录压缩后存放
@ -18,15 +26,7 @@ S即时更新文件或目录
u预防意外删除。
```
### 语法
```
chattr(选项)
```
### 选项
```
```shell
-R递归处理将指令目录下的所有文件及子目录一并处理
-v<版本编号>:设置文件或目录版本;
-V显示指令执行过程
@ -39,7 +39,7 @@ chattr(选项)
用chattr命令防止系统中某个关键文件被修改
```
```shell
chattr +i /etc/fstab
```
@ -47,7 +47,7 @@ chattr +i /etc/fstab
让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作:
```
```shell
chattr +a /data1/user_act.log
```

View File

@ -1,6 +1,6 @@
chcon
===
修改对象(文件)的安全上下文
## 补充说明
@ -9,7 +9,7 @@ chcon
### 语法
```
```shell
chcon [选项]... 环境 文件...
chcon [选项]... [-u 用户] [-r 角色] [-l 范围] [-t 类型] 文件...
chcon [选项]... --reference=参考文件 文件...
@ -17,7 +17,7 @@ chcon [选项]... --reference=参考文件 文件...
### 选项
```
```shell
-h, --no-dereference影响符号连接而非引用的文件。
--reference=参考文件:使用指定参考文件的安全环境,而非指定值。
-R, --recursive递归处理所有的文件及子目录。
@ -30,7 +30,7 @@ chcon [选项]... --reference=参考文件 文件...
以下选项是在指定了`-R`选项时被用于设置如何穿越目录结构体系。如果您指定了多于一个选项,那么只有最后一个会生效。
```
```shell
-H如果命令行参数是一个通到目录的符号链接则遍历符号链接。
-L遍历每一个遇到的通到目录的符号链接。
-P不遍历任何符号链接默认
@ -42,32 +42,32 @@ chcon [选项]... --reference=参考文件 文件...
如果你想把这个ftp共享给匿名用户的话需要开启以下
```
```shell
chcon -R -t public_content_t /var/ftp
```
如果你想让你设置的FTP目录可以上传文件的话SELINUX需要设置
```
```shell
chcon -t public_content_rw_t /var/ftp/incoming
```
允许用户HHTP访问其家目录该设定限仅于用户的家目录主页
```
```shell
setsebool -P httpd_enable_homedirs 1
chcon -R -t httpd_sys_content_t ~user/public_html
```
如果你希望将samba目录共享给其他用户你需要设置
```
```shell
chcon -t samba_share_t /directory
```
共享rsync目录时
```
```shell
chcon -t public_content_t /directories
```

View File

@ -1,6 +1,6 @@
chfn
===
用来改变finger命令显示的信息
## 补充说明
@ -9,13 +9,13 @@ chfn
### 语法
```
```shell
chfn(选项)(参数)
```
### 选项
```
```shell
-f<真实姓名>或--full-name<真实姓名>:设置真实姓名;
-h<家中电话>或--home-phone<家中电话>:设置家中的电话号码;
-o<办公地址>或--office<办公地址>:设置办公室的地址;
@ -32,7 +32,7 @@ chfn(选项)(参数)
范例1改变finger信息
```
```shell
[root@localhost Desktop]# chfn
Changing finger information for root.
Name [root]: jack
@ -45,7 +45,7 @@ Finger information changed.
范例2改变账号真实姓名
```
```shell
[root@localhost Desktop]# chfn -f jack
Changing finger information for root.
Finger information changed.
@ -53,7 +53,7 @@ Finger information changed.
范例3
```
```shell
shell>> chfn
Changing finger information for user
Password: [del]

View File

@ -11,13 +11,13 @@ chgrp
### 语法
```
```shell
chgrp [选项][组群][文件|目录]
```
### 选项
```
```shell
-R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
-c或——changes效果类似“-v”参数但仅回报更改的部分
-f或--quiet或——silent不显示错误信息
@ -39,12 +39,13 @@ chgrp [选项][组群][文件|目录]
将`/usr/meng`及其子目录下的所有文件的用户组改为mengxin
```
```shell
chgrp -R mengxin /usr/meng
```
更改文件ah的组群所有者为newuser
```
更改文件ah的组群所有者为 `newuser`
```shell
[root@rhel ~]# chgrp newuser ah
```

View File

@ -9,13 +9,13 @@ chkconfig
### 语法
```bash
```shell
chkconfig(选项)
```
### 选项
```bash
```shell
--add增加所指定的系统服务让chkconfig指令得以管理它并同时在系统启动的叙述文件内增加相关数据
--del删除所指定的系统服务不再由chkconfig指令管理并同时在系统启动的叙述文件内删除相关数据
--level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。
@ -48,7 +48,7 @@ chkconfig(选项)
例如random.init包含三行
```bash
```shell
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
@ -56,7 +56,7 @@ chkconfig(选项)
### 实例
```bash
```shell
chkconfig --list #列出所有的系统服务
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务

View File

@ -27,7 +27,7 @@ chmod(选项)(参数)
### 选项
```bash
```shell
u # 操作对象简称用户user文件或目录的所有者。
g # 操作对象简称同组用户group文件或目录所属群组
o # 操作对象简称其它用户others
@ -65,7 +65,7 @@ Linux用 户分为:拥有者、组群(Group)、其他otherLinux系统
linux文件的用户权限的分析图
```bash
```shell
-rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules
# ↑╰┬╯╰┬╯╰┬╯
# ┆ ┆ ┆ ╰┈ 0 其他人
@ -80,7 +80,7 @@ r=读取属性  //值4
w=写入属性  //值2
x=执行属性  //值1
```bash
```shell
chmod u+x,g+w f01  # 为文件f01设置自己可以执行组员可以写入的权限
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
@ -89,7 +89,7 @@ chmod a+x f01   # 对文件f01的u,g,o都设置可执行属性
文件的属主和属组属性设置
```bash
```shell
chown user:market f01  # 把文件f01给uesr添加到market组
ll -d f1 查看目录f1的属性
```
@ -99,14 +99,14 @@ ll -d f1 查看目录f1的属性
(1)直接指定路径修改
```bash
```shell
chmod -R 755 /home/wwwroot/*
```
(2)手动进入该目录修改权限(并显示详细过程)
```bash
```shell
cd /home/wwwroot
chmod -Rv 755 * #注意:“*”表示通配符,指的是所有文件和文件
sudo chmod o+rw /shared #设置文件夹权限以保证其余用户可以访问它

View File

@ -1,6 +1,6 @@
chown
===
用来变更文件或目录的拥有者或所属群组
## 补充说明
@ -11,13 +11,13 @@ chown
### 语法
```
```shell
chown(选项)(参数)
```
### 选项
```
```shell
-c或——changes效果类似“-v”参数但仅回报更改的部分
-f或--quite或——silent不显示错误信息
-h或--no-dereference只对符号连接的文件作修改而不更改其他任何相关文件
@ -38,7 +38,7 @@ chown(选项)(参数)
将目录`/usr/meng`及其下面的所有文件、子目录的文件主改成 liu
```
```shell
chown -R liu /usr/meng
```

View File

@ -1,6 +1,6 @@
chpasswd
===
批量更新用户口令的工具
## 补充说明
@ -9,13 +9,13 @@ chpasswd
### 语法
```
```shell
chpasswd(选项)
```
### 选项
```
```shell
-e输入的密码是加密后的密文
-h显示帮助信息并退出
-m当被支持的密码未被加密时使用MD5加密代替DES加密。
@ -25,7 +25,7 @@ chpasswd(选项)
先创建用户密码对应文件,格式为`username:password`,如`abc:abc123`必须以这种格式来书写并且不能有空行保存成文本文件user.txt然后执行chpasswd命令
```
```shell
chpasswd < user.txt
```

View File

@ -1,6 +1,6 @@
chroot
===
把根目录换成指定的目的目录
## 补充说明
@ -9,27 +9,27 @@ chroot
在经过 chroot 命令之后系统读取到的目录和文件将不在是旧系统根下的而是新根下即被指定的新的位置的目录结构和文件因此它带来的好处大致有以下3个
**增加了系统的安全性,限制了用户的权力:**
**增加了系统的安全性,限制了用户的权力:**
在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot以此达到用户不能访问一些特定的文件。
**建立一个与原系统隔离的系统目录结构,方便用户的开发:**
**建立一个与原系统隔离的系统目录结构,方便用户的开发:**
使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。
**切换系统的根目录位置,引导 Linux 系统启动以及急救系统等:**
**切换系统的根目录位置,引导 Linux 系统启动以及急救系统等:**
chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外当系统出现一些问题时我们也可以使用 chroot 来切换到一个临时的系统。
### 语法
```
```shell
chroot(选项)(参数)
```
### 选项
```
```shell
--help在线帮助
--version显示版本信息。
```
@ -41,9 +41,9 @@ chroot(选项)(参数)
### 实例
**将target作为根目录运行其中的`/bin/sh`:**
**将target作为根目录运行其中的`/bin/sh`:**
```
```shell
chroot target /bin/sh
```
@ -56,7 +56,7 @@ chroot target /bin/sh
将target作为根目录(运行其中的`/bin/ls`):
```
```shell
chroot target /bin/ls
```
@ -68,13 +68,13 @@ chroot target /bin/ls
准备chroot的根目录
```
```shell
mkdir newRoot
```
编译自己的程序:
```
```shell
gcc main.c
```
@ -82,13 +82,13 @@ gcc main.c
查看程序需要的库:
```
```shell
ldd a.out
```
输入之后,输出如下:
```
```shell
linux-gate.so.1 = &gt; (0xb8034000)
libc.so.6 = &gt; /lib/tls/i686/cmov/libc.so.6 (0xb7eab000)
/lib/ld-linux.so.2 (0xb801a000)
@ -96,7 +96,7 @@ libc.so.6 = &gt; /lib/tls/i686/cmov/libc.so.6 (0xb7eab000)
将程序需要的库和程序拷贝到新根目录下:
```
```shell
cp a.out newRoot
mkdir newRoot/lib
cp /lib/tls/i686/cmov/libc.so.6 newRoot/lib
@ -105,13 +105,13 @@ cp /lib/ld-linux.so.2 newRoot/lib
这里newRoot内容将如下
```
```shell
a.out lib/
```
使用chroot运行自己的程序
```
```shell
su
chroot newRoot /a.out
```

View File

@ -1,6 +1,6 @@
chsh
===
用来更换登录系统时使用的shell
## 补充说明
@ -9,13 +9,13 @@ chsh
### 语法
```
```shell
chsh(选项)(参数)
```
### 选项
```
```shell
-s<shell 名称>或--shell<shell 名称>更改系统预设的shell环境。
-l或--list-shells列出目前系统可用的shell清单
-u或--help在线帮助
@ -32,7 +32,7 @@ chsh(选项)(参数)
第一种:
```
```shell
[rocrocket@localhost ~]$ chsh -l
/bin/sh
/bin/bash
@ -42,7 +42,7 @@ chsh(选项)(参数)
第二种:
```
```shell
[rocrocket@localhost ~]$ cat /etc/shells
/bin/sh
/bin/bash
@ -54,7 +54,7 @@ chsh(选项)(参数)
**查看当前正在使用的shell**
```
```shell
[rocrocket@localhost ~]$ echo $SHELL
/bin/bash
```
@ -63,7 +63,7 @@ chsh(选项)(参数)
**把我的shell改成zsh**
```
```shell
[rocrocket@localhost ~]$ chsh -s /bin/zsh
Changing shell for rocrocket.
Password:
@ -73,7 +73,7 @@ Shell changed.
使用chsh加选项`-s`就可以修改登录的shell了你会发现你现在执行`echo $SHELL`后仍然输出为`/bin/bash`这是因为你需要重启你的shell才完全投入到zsh怀抱中去。`chsh -s`其实修改的就是`/etc/passwd`文件里和你的用户名相对应的那一行。现在来查看下:
```
```shell
[rocrocket@localhost ~]$ cat /etc/passwd|grep ^rocrocket
rocrocket:x:500:500:rocrocket,China:/rocrocket/PSB/home:/bin/zsh
```
@ -82,7 +82,7 @@ rocrocket:x:500:500:rocrocket,China:/rocrocket/PSB/home:/bin/zsh
**把shell修改回/bin/bash**
```
```shell
[rocrocket@localhost ~]$ chsh -s /bin/bash
Changing shell for rocrocket.
Password:

View File

@ -1,6 +1,6 @@
cksum
===
检查文件的CRC是否正确
## 补充说明
@ -13,13 +13,13 @@ cksum
### 语法
```
```shell
cksum(选项)(参数)
```
### 选项
```
```shell
--help在线帮助
--version显示版本信息。
```
@ -32,13 +32,13 @@ cksum(选项)(参数)
使用cksum命令计算文件"testfile1"的完整性,输入如下命令:
```
```shell
cksum testfile1 #对指定文件进行CRC校验
```
以上命令执行后,将输出校验码等相关的信息,具体输出信息如下所示:
```
```shell
1263453430 78 testfile1 #输出信息
```

View File

@ -1,6 +1,6 @@
clear
===
清除当前屏幕终端上的任何信息
## 补充说明
@ -9,7 +9,7 @@ clear
### 语法
```
```shell
clear
```

View File

@ -9,14 +9,14 @@ clock
### 语法
```
```shell
clock [--adjust][--debug][--directisa][--getepoch][--hctosys][--set --date="<日期时间>"]
[--setepoch --epoch=< >][--show][--systohc][--test][--utc][--version]
```
### 选项
```
```shell
--adjust  第一次使用"--set"或"--systohc"参数设置硬件时钟,会在/etc目录下产生一个名称为adjtime的文件。当再次使用这两个参数调整硬件时钟此文件便会记录两次调整间之差异日后执行clock指令加上"--adjust"参数时,程序会自动根 据记录文件的数值差异,计算出平均值,自动调整硬件时钟的时间。
--debug  详细显示指令执行过程,便于排错或了解程序执行的情形。
--directisa  告诉clock指令不要通过/dev/rtc设备文件直接对硬件时钟进行存取。这个参数适用于仅有ISA总线结构的老式电脑。
@ -35,13 +35,13 @@ clock [--adjust][--debug][--directisa][--getepoch][--hctosys][--set --date="<日
获取当前的时间
```bash
```shell
clock # 获取当前的时间
```
显示UTC时间
```bash
```shell
clock -utc #显示UTC时间
```

View File

@ -1,6 +1,6 @@
clockdiff
===
检测两台linux主机的时间差
## 补充说明
@ -9,14 +9,14 @@ clockdiff
### 选项
```
```shell
-o使用IP时间戳选项来测量系统时间差。时间戳只用3个。
-o1使用IP时间戳选项来测量系统时间差。用4个时间戳。如果-o和-o1都没有设置那么就是用ICMP时间戳来测试系统时间差。
```
### 实例
```
```shell
lixi@lixi-desktop:~$ ping -T tsandaddr www.ustc.edu.cn -c 1
PING www.ustc.edu.cn (202.38.64.9) 56(124) bytes of data.
64 bytes from 202.38.64.9: icmp_seq=1 ttl=62 time=0.823 ms
@ -33,13 +33,13 @@ rtt min/avg/max/mdev = 0.823/0.823/0.823/0.000 ms
首先由上面的得出在RRT不大的时候几个ICMP时间戳的关系。本地主机和202.38.64.9之间的时间差约为:-857514+248-251=-857517。分别用-oIP选项中时间戳和不带选项ICMP路由时间戳上述路由的系统时间进行测试。得到的结果
```
```shell
lixi@lixi-desktop:~# ./clockdiff -o 202.38.64.9
..................................................
host=202.38.64.9 rtt=1(0)ms/1ms delta=-857517ms/-857517ms Wed Dec 17 11:28:30 2008
```
```
```shell
lixi@lixi-desktop:~# ./clockdiff 202.38.64.9
.
host=202.38.64.9 rtt=750(187)ms/0ms delta=-857517ms/-857517ms Wed Dec 17 11:28:35 2008
@ -47,7 +47,7 @@ host=202.38.64.9 rtt=750(187)ms/0ms delta=-857517ms/-857517ms Wed Dec 17 11:28:3
两种方法测试的都比较准确。
```
```shell
lixi@lixi-desktop:~#./clockdiff gigagate1.Princeton.EDU
..................................................
host=gigagate1.Princeton.EDU rtt=307(21)ms/271ms delta=-5ms/-5ms Wed Dec 17 11:50:16 2008

View File

@ -1,6 +1,6 @@
cmp
===
比较两个文件是否有差异
## 补充说明
@ -9,13 +9,13 @@ cmp
### 语法
```
```shell
cmp(选项)(参数)
```
### 选项
```
```shell
-c或--print-chars除了标明差异处的十进制字码之外一并显示该字符所对应字符
-i<字符数目>或--ignore-initial=<字符数目>:指定一个数目;
-l或——verbose标示出所有不一样的地方
@ -32,13 +32,13 @@ cmp(选项)(参数)
使用cmp命令比较文件"testfile"和文件"testfile1"两个文件,则输入下面的命令:
```
```shell
cmp testfile testfile1 #比较两个指定的文件
```
在上述指令执行之前使用cat命令查看两个指定的文件内容如下所示
```
```shell
cat testfile #查看文件内容
Absncn 50 #显示文件“testfile”
Asldssja 60
@ -52,7 +52,7 @@ Jslkadjls 85
然后再执行cmp命令并返回比较结果具体如下所示
```
```shell
cmp testfile testfile1 #比较两个文件
testfile testfile1 #有差异第8字节第2行
```

View File

@ -1,6 +1,6 @@
col
===
过滤控制字符
## 补充说明
@ -9,13 +9,13 @@ col
### 语法
```
```shell
col(选项)
```
### 选项
```
```shell
-b过滤掉所有的控制字符包括RLF和HRLF
-f滤掉RLF字符但允许将HRLF字符呈现出来
-x以多个空格字符来表示跳格字符

View File

@ -1,6 +1,6 @@
colrm
===
删除文件中的指定列
## 补充说明
@ -9,7 +9,7 @@ colrm
### 语法
```
```shell
colrm(参数)
```

View File

@ -13,13 +13,13 @@ comm
### 语法
```bash
```shell
comm [选项]... 文件1 文件2
```
### 选项
```
```shell
如果不附带选项,程序会生成三列输出。
第一列包含文件1 特有的行,
第二列包含文件2 特有的行,
@ -43,7 +43,7 @@ comm [选项]... 文件1 文件2
文本 `aaa.txt` 内容
```
```shell
[root@localhost text]# cat aaa.txt
aaa
bbb
@ -56,7 +56,7 @@ eee
文本 `bbb.txt` 内容
```
```shell
[root@localhost text]# cat bbb.txt
bbb
ccc
@ -68,14 +68,14 @@ jjj
两个文件之间的比较,如果没有排序需要带上`--nocheck-order`参数, 没有带上参数将会收到提示,此命令重要之功能在于比较。
```bash
```shell
comm: 文件2 没有被正确排序
comm: 文件1 没有被正确排序
```
比较结果
```
```shell
[root@localhost text]# comm --nocheck-order aaa.txt bbb.txt
aaa
bbb
@ -97,14 +97,14 @@ eee
有序比较,先通过 sort 将文件内容排序
```
```shell
[root@localhost ~]# sort aaa.txt > aaa1.txt
[root@localhost ~]# sort bbb.txt > bbb1.txt
```
有序比较结果:
```
```shell
[root@localhost ~]# comm aaa1.txt bbb1.txt
111
222
@ -122,7 +122,7 @@ eee
打印两个文件的交集,需要删除第一列和第二列:
```
```shell
[root@localhost text]# comm aaa.txt bbb.txt -1 -2
bbb
ccc
@ -132,7 +132,7 @@ ccc
打印出两个文件中不相同的行,需要删除第三列:
```
```shell
[root@localhost text]# comm aaa.txt bbb.txt -3 | sed 's/^\t//'
aaa
aaa
@ -153,7 +153,7 @@ jjj
aaa.txt的差集
```
```shell
[root@localhost text]# comm aaa.txt bbb.txt -2 -3
aaa
ddd
@ -164,7 +164,7 @@ eee
bbb.txt的差集
```
```shell
[root@localhost text]# comm aaa.txt bbb.txt -1 -3
aaa
hhh

View File

@ -1,6 +1,6 @@
command
===
调用并执行指定的命令
## 补充说明
@ -9,7 +9,7 @@ command
### 语法
```
```shell
command(参数)
```
@ -21,13 +21,13 @@ command(参数)
使用command命令调用执行`echo Linux`,输入如下命令:
```
```shell
command echo Linux #调用执行shell内部指令
```
上面的命令执行后,将调用执行命令`echo Linux`,其执行结果如下:
```
```shell
Linux
```

View File

@ -1,6 +1,6 @@
compress
===
使用Lempress-Ziv编码压缩数据文件
## 补充说明
@ -9,13 +9,13 @@ compress
### 语法
```
```shell
compress(选项)(参数)
```
### 选项
```
```shell
-f不提示用户强制覆盖掉目标文件
-c将结果送到标准输出无文件被改变
-r递归的操作方式
@ -33,31 +33,31 @@ compress(选项)(参数)
将`/etc/man.config`复到`/tmp` ,并加以压缩
```
```shell
[root@localhost ~]# cd /tmp
[root@localhost tmp]# cp /etc/man.config .
[root@localhost tmp]# compress man.config
[root@localhost tmp]# ls -l
```
```
```shell
-rw-r--r-- 1 root root 2605 Jul 27 11:43 man.config.Z
```
将刚刚的压缩档解开
```
```shell
[root@localhost tmp]# compress -d man.config.Z
```
将 man.config 压缩成另外一个文件来备份
```
```shell
[root@localhost tmp]# compress -c man.config > man.config.back.Z
[root@localhost tmp]# ll man.config*
```
```
```shell
-rw-r--r-- 1 root root 4506 Jul 27 11:43 man.config
-rw-r--r-- 1 root root 2605 Jul 27 11:46 man.config.back.Z
```

View File

@ -1,6 +1,6 @@
consoletype
===
输出已连接的终端类型
## 补充说明
@ -9,13 +9,13 @@ consoletype
### 语法
```
```shell
consoletype
```
### 实例
```
```shell
[root@localhost ~]# consoletype
pty
```

View File

@ -1,6 +1,6 @@
convertquota
===
把老的配额文件转换为新的格式
## 补充说明
@ -9,13 +9,13 @@ convertquota
### 语法
```
```shell
convertquota(选项)(参数)
```
### 选项
```
```shell
-u仅转换用户磁盘配额数据文件
-g仅转换组磁盘配额数据文件
-f将老的磁盘配额文件转换为新的格式
@ -30,7 +30,7 @@ convertquota(选项)(参数)
使用convertquota指令转换指定文件系统`/data`的磁盘配额数据文件。在命令行中输入下面的命令:
```
```shell
convertquota -u /data //转换文件系统"/data"上的用户磁盘配额文件
```

View File

@ -9,13 +9,13 @@ cp
### 语法
```
```shell
cp(选项)(参数)
```
### 选项
```
```shell
-a此参数的效果和同时指定"-dpR"参数相同;
-d当复制符号连接时把目标文件或目录也建立为符号连接并指向与源文件或目录连接的原始文件或目录
-f强行复制文件或目录不论目标文件或目录是否已存在
@ -41,13 +41,13 @@ cp(选项)(参数)
通常来说,参数 `-r` 也可用更详细的风格 `--recursive`。但是以简短的方式,也可以这么连用 `-ruv`
```
```shell
cp -r -u -v /usr/men/tmp ~/men/tmp
```
版本备份 `--backup=numbered` 参数意思为“我要做个备份,而且是带编号的连续备份”。所以一个备份就是 1 号,第二个就是 2 号,等等。
```bash
```shell
$ cp --force --backup=numbered test1.py test1.py
$ ls
test1.py test1.py.~1~ test1.py.~2~
@ -55,7 +55,7 @@ test1.py test1.py.~1~ test1.py.~2~
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点`.`或点点`..`的形式。例如,下面的命令将指定文件复制到当前目录下:
```
```shell
cp ../mary/homework/assign .
```
@ -63,25 +63,25 @@ cp ../mary/homework/assign .
将文件file复制到目录`/usr/men/tmp`下并改名为file1
```
```shell
cp file /usr/men/tmp/file1
```
将目录`/usr/men`下的所有文件及其子目录复制到目录`/usr/zh`中
```
```shell
cp -r /usr/men /usr/zh
```
交互式地将目录`/usr/men`中的以m打头的所有.c文件复制到目录`/usr/zh`中
```
```shell
cp -i /usr/men m*.c /usr/zh
```
我们在Linux下使用cp命令复制文件时候有时候会需要覆盖一些同名文件覆盖文件的时候都会有提示需要不停的按Y来确定执行覆盖。文件数量不多还好但是要是几百个估计按Y都要吐血了于是折腾来半天总结了一个方法
```bash
```shell
cp aaa/* /bbb
# 复制目录aaa下所有到/bbb目录下这时如果/bbb目录下有和aaa同名的文件需要按Y来确认并且会略过aaa目录下的子目录。
@ -97,14 +97,14 @@ cp -r -a aaa/* /bbb
递归强制复制目录到指定目录中覆盖已存在文件
```bash
```shell
cp -rfb ./* ../backup
# 将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中
```
拷贝目录下的隐藏文件如 `.babelrc`
```bash
```shell
cp -r aaa/.* ./bbb
# 将 aaa 目录下的,所有`.`开头的文件,复制到 bbb 目录中。

View File

@ -1,6 +1,6 @@
cpio
===
用来建立、还原备份档的工具程序
## 补充说明
@ -9,13 +9,13 @@ cpio
### 语法
```
```shell
cpio(选项)
```
### 选项
```
```shell
-0或--null接受新增列控制字符通常配合find指令的“-print0”参数使用
-a或--rest-access-time重新设置文件的存取时间
-A或--append附加到已存在的备份文档中且这个备份文档必须存放在磁盘上而不能放置于磁带机里
@ -60,31 +60,31 @@ cpio(选项)
### 实例
**将`/etc`下的所有普通文件都备份到`/opt/etc.cpio`,使用以下命令:**
**将`/etc`下的所有普通文件都备份到`/opt/etc.cpio`,使用以下命令:**
```
```shell
find /etc type f | cpio ocvB >/opt/etc.cpio
```
**将系统上所有资料备份到磁带机内,使用以下命令:**
**将系统上所有资料备份到磁带机内,使用以下命令:**
```
```shell
find / -print | cpio -covB > /dev/st0
```
这里的`/dev/st0`是磁带的设备名代表SCSI磁带机。
**查看上例磁带机上备份的文件,使用以下命令:**
**查看上例磁带机上备份的文件,使用以下命令:**
```
```shell
cpio -icdvt < /dev/st0 > /tmp/st_content
```
有时可能因为备份的文件过多,一个屏幕无法显示完毕,此时我们利用下面命令,让磁带机的文件信息输出到文件。
**将示例1中的备份包还原到相应的位置如果有相同文件进行覆盖使用以下命令**
**将示例1中的备份包还原到相应的位置如果有相同文件进行覆盖使用以下命令**
```
```shell
cpio icduv < /opt/etc.cpio
```

View File

@ -1,6 +1,6 @@
crontab
===
提交和管理用户的需要周期性执行的任务
## 补充说明
@ -9,13 +9,13 @@ crontab
### 语法
```
```shell
crontab(选项)(参数)
```
### 选项
```
```shell
-e编辑该用户的计时器设置
-l列出该用户的计时器设置
-r删除该用户的计时器设置
@ -34,7 +34,7 @@ Linux下的任务调度分为两类 **系统任务调度** 和 **用户任务
`/etc/crontab`文件包括下面几行:
```
```shell
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/
@ -50,7 +50,7 @@ MAILTO=""HOME=/
**用户任务调度:** 用户定期要执行的工作比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在`/var/spool/cron`目录中。其文件名与用户名一致,使用者权限文件如下:
```
```shell
/etc/cron.deny 该文件中所列用户不允许使用crontab命令
/etc/cron.allow 该文件中所列用户允许使用crontab命令
/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名
@ -58,7 +58,7 @@ MAILTO=""HOME=/
crontab文件的含义用户所建立的crontab文件中每一行都代表一项任务每行的每个字段代表一项设置它的格式共分为六个字段前五段是时间设定段第六段是要执行的命令段格式如下
```
```shell
minute hour day month week command 顺序:分 时 日 月 周
```
@ -78,36 +78,36 @@ minute hour day month week command 顺序:分 时 日 月 周
* 中杠(-可以用整数之间的中杠表示一个整数范围例如“2-6”表示“2,3,4,5,6”
* 正斜线(/可以用正斜线指定时间的间隔频率例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用例如*/10如果用在minute字段表示每十分钟执行一次。
**crond服务**
**crond服务**
```
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
```shell
/sbin/service crond start # 启动服务
/sbin/service crond stop # 关闭服务
/sbin/service crond restart # 重启服务
/sbin/service crond reload # 重新载入配置
```
查看crontab服务状态
```
```shell
service crond status
```
手动启动crontab服务
```
```shell
service crond start
```
查看crontab服务是否已设置为开机启动执行命令
```
```shell
ntsysv
```
加入开机自动启动:
```
```shell
chkconfig level 35 crond on
```
@ -115,91 +115,91 @@ chkconfig level 35 crond on
每1分钟执行一次command
```
```shell
* * * * * command
```
每小时的第3和第15分钟执行
```
```shell
3,15 * * * * command
```
在上午8点到11点的第3和第15分钟执行
```
```shell
3,15 8-11 * * * command
```
每隔两天的上午8点到11点的第3和第15分钟执行
```
```shell
3,15 8-11 */2 * * command
```
每个星期一的上午8点到11点的第3和第15分钟执行
```
```shell
3,15 8-11 * * 1 command
```
每晚的21:30重启smb 
```
```shell
30 21 * * * /etc/init.d/smb restart
```
每月1、10、22日的4 : 45重启smb 
```
```shell
45 4 1,10,22 * * /etc/init.d/smb restart
```
每周六、周日的1:10重启smb
```
```shell
10 1 * * 6,0 /etc/init.d/smb restart
```
每天18 : 00至23 : 00之间每隔30分钟重启smb 
```
```shell
0,30 18-23 * * * /etc/init.d/smb restart
```
每星期六的晚上11:00 pm重启smb 
```
```shell
0 23 * * 6 /etc/init.d/smb restart
```
每一小时重启smb 
```
```shell
* */1 * * * /etc/init.d/smb restart
```
晚上11点到早上7点之间每隔一小时重启smb
```
```shell
* 23-7/1 * * * /etc/init.d/smb restart
```
每月的4号与每周一到周三的11点重启smb 
```
```shell
0 11 4 * mon-wed /etc/init.d/smb restart
```
一月一号的4点重启smb
```
```shell
0 4 1 jan * /etc/init.d/smb restart
```
每小时执行`/etc/cron.hourly`目录内的脚本
```
```shell
01 * * * * root run-parts /etc/cron.hourly
```

View File

@ -1,6 +1,6 @@
csplit
===
将一个大文件分割成小的碎片文件
## 补充说明
@ -9,13 +9,13 @@ csplit
### 语法
```
```shell
csplit(选项)(参数)
```
### 选项
```
```shell
-b<输出格式>或--suffix-format=<输出格式>预设的输出格式其文件名称为xx00xx01等用户可以通过改变<输出格式>来改变输出的文件名;
-f<输出字首字符串>或--prefix=<输出字首字符串>预设的输出字首字符串其文件名为xx00xx01等如果制定输出字首字符串为“hello”则输出的文件名称会变成hello00hello、01......
-k或--keep-files保留文件就算发生错误或中断执行与不能删除已经输出保存的文件
@ -33,7 +33,7 @@ csplit(选项)(参数)
示例测试文件 server.log
```
```shell
cat server.log
SERVER-1
[con] 10.10.10.1 suc
@ -54,7 +54,7 @@ SERVER-3
需要将server.log分割成server1.log、server2.log、server3.log这些文件的内容分别取自原文件中不同的SERVER部分
```
```shell
[root@localhost split]# csplit server.log /SERVER/ -n2 -s {*} -f server -b "%02d.log"; rm server00.log
[root@localhost split]# ls
server01.log server02.log server03.log server.log
@ -62,7 +62,7 @@ server01.log server02.log server03.log server.log
**命令详细说明:**
```
```shell
/[正则表达式]/ #匹配文本样式,比如/SERVER/从第一行到包含SERVER的匹配行。
{*} #表示根据匹配重复执行分割,直到文件尾停止,使用{整数}的形式指定分割执行的次数。
-s #静默模式,不打印其他信息。

View File

@ -9,14 +9,14 @@ cu
### 语法
```
```shell
cu [dehnotv][-a<通信端口>][-c<电话号码>][-E<脱离字符>][-I<设置文件>][-l<外围设备代号>]
[-s<连线速率>][-x<排错模式>][-z<系统主机>][--help][-nostop][--parity=none][<系统主机>/<电话号码>]
```
### 选项
```
```shell
-a<通信端口>或-p<通信端口>或--port<通信端口> 使用指定的通信端口进行连线。
-c<电话号码>或--phone<电话号码> 拨打该电话号码。
-d 进入排错模式。
@ -41,7 +41,7 @@ cu [dehnotv][-a<通信端口>][-c<电话号码>][-E<脱离字符>][-I<设置文
与远程主机连接
```
```shell
cu -c 0102377765
cu -s 38400 9=12015551234
```

View File

@ -1,6 +1,6 @@
cupsdisable
===
停止指定的打印机
## 补充说明
@ -9,13 +9,13 @@ cupsdisable
### 语法
```
```shell
cupsdisable(选项)(参数)
```
### 选项
```
```shell
-E当连接到服务器时强制使用加密
-U指定连接服务器时使用的用户名
-u指定打印任务所属的用户

View File

@ -1,6 +1,6 @@
cupsenable
===
启动指定的打印机
## 补充说明
@ -9,13 +9,13 @@ cupsenable
### 语法
```
```shell
cupsenable(选项)(参数)
```
### 选项
```
```shell
-E当连接到服务器时强制使用加密
-U指定连接服务器时使用的用户名
-u指定打印任务所属的用户

View File

@ -9,7 +9,7 @@ curl
### 语法
```
```shell
curl(选项)(参数)
```
@ -125,7 +125,7 @@ curl(选项)(参数)
curl命令可以用来执行下载、发送各种HTTP请求指定HTTP头部等操作。如果系统没有curl可以使用`yum install curl`安装也可以下载安装。curl是将下载文件输出到stdout将进度信息输出到stderr不显示进度信息使用`--silent`选项。
```
```shell
curl URL --silent
```
@ -133,13 +133,13 @@ curl URL --silent
使用选项`-O`将下载的数据写入到文件,必须使用文件的绝对地址:
```
```shell
curl http://wangchujiang.com/text.iso --silent -O
```
选项`-o`将下载数据写入到指定名称的文件中,并使用`--progress`显示进度条:
```
```shell
curl http://wangchujiang.com/test.iso -o filename.iso --progress
######################################### 100.0%
```
@ -148,7 +148,7 @@ curl http://wangchujiang.com/test.iso -o filename.iso --progress
curl能够从特定的文件偏移处继续下载它可以通过指定一个便宜量来下载部分文件
```
```shell
curl URL/File -C 偏移量
#偏移量是以字节为单位的整数如果让curl自动推断出正确的续传位置使用-C -
@ -161,7 +161,7 @@ curl -C -URL
使用`--referer`选项指定参照页字符串:
```
```shell
curl --referer http://www.google.com http://wangchujiang.com
```
@ -169,13 +169,13 @@ curl --referer http://www.google.com http://wangchujiang.com
使用`--cookie "COKKIES"`选项来指定cookie多个cookie使用分号分隔
```
```shell
curl http://wangchujiang.com --cookie "user=root;pass=123456"
```
将cookie另存为一个文件使用`--cookie-jar`选项:
```
```shell
curl URL --cookie-jar cookie_file
```
@ -183,14 +183,14 @@ curl URL --cookie-jar cookie_file
有些网站访问会提示只能使用IE浏览器来访问这是因为这些网站设置了检查用户代理可以使用curl把用户代理设置为IE这样就可以访问了。使用`--user-agent`或者`-A`选项:
```
```shell
curl URL --user-agent "Mozilla/5.0"
curl URL -A "Mozilla/5.0"
```
其他HTTP头部信息也可以使用curl来发送使用`-H`"头部信息" 传递多个头部信息,例如:
```
```shell
curl -H "Host:wangchujiang.com" -H "accept-language:zh-cn" URL
```
@ -198,7 +198,7 @@ curl -H "Host:wangchujiang.com" -H "accept-language:zh-cn" URL
使用`--limit-rate`限制curl的下载速度
```
```shell
curl URL --limit-rate 50k
```
@ -206,7 +206,7 @@ curl URL --limit-rate 50k
使用`--max-filesize`指定可下载的最大文件大小:
```
```shell
curl URL --max-filesize bytes
```
@ -216,7 +216,7 @@ curl URL --max-filesize bytes
使用curl选项 -u 可以完成HTTP或者FTP的认证可以指定密码也可以不指定密码在后续操作中输入密码
```
```shell
curl -u user:pwd http://wangchujiang.com
curl -u user http://wangchujiang.com
```
@ -225,7 +225,7 @@ curl -u user http://wangchujiang.com
通过`-I`或者`-head`可以只打印出HTTP头部信息
```
```shell
[root@localhost text]# curl -I http://wangchujiang.com
HTTP/1.1 200 OK
Server: nginx/1.2.5
@ -238,7 +238,7 @@ X-Pingback: http://wangchujiang.com/xmlrpc.php
**get请求**
```bash
```shell
curl "http://www.wangchujiang.com" # 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地
curl -i "http://www.wangchujiang.com" # 显示全部信息
curl -l "http://www.wangchujiang.com" # 只显示头部信息
@ -247,19 +247,19 @@ curl -v "http://www.wangchujiang.com" # 显示get请求全过程解析
**post请求**
```bash
```shell
curl -d "param1=value1&param2=value2" "http://www.wangchujiang.com"
```
**json格式的post请求**
```bash
```shell
curl -l -H "Content-type: application/json" -X POST -d '{"phone":"13521389587","password":"test"}' http://wangchujiang.com/apis/users.json
```
**获取本机外网ip**
```bash
```shell
curl ipecho.net/plain
```

View File

@ -13,13 +13,13 @@ cut
### 语法
```
```shell
cut选项参数
```
### 选项
```
```shell
-b仅显示行中指定直接范围的内容
-c仅显示行中指定范围的字符
-d指定字段的分隔符默认的字段分隔符为“TAB”
@ -39,7 +39,7 @@ cut选项参数
例如有一个学生报表信息,包含 No、Name、Mark、Percent
```
```shell
[root@localhost text]# cat test.txt
No Name Mark Percent
01 tom 69 91
@ -50,7 +50,7 @@ No Name Mark Percent
使用 **-f** 选项提取指定字段(这里的 f 参数可以简单记忆为 `--fields`的缩写):
```
```shell
[root@localhost text]# cut -f 1 test.txt
No
01
@ -58,7 +58,7 @@ No
03
```
```
```shell
[root@localhost text]# cut -f2,3 test.txt
Name Mark
tom 69
@ -69,18 +69,17 @@ alex 68
**--complement** 选项提取指定字段之外的列(打印除了第二列之外的列):
```
```shell
[root@localhost text]# cut -f2 --complement test.txt
No Mark Percent
01 69 91
02 71 87
03 68 98
```
使用 **-d** 选项指定字段分隔符:
```
```shell
[root@localhost text]# cat test2.txt
No;Name;Mark;Percent
01;tom;69;91
@ -88,7 +87,7 @@ No;Name;Mark;Percent
03;alex;68;98
```
```
```shell
[root@localhost text]# cut -f2 -d";" test2.txt
Name
tom
@ -113,7 +112,7 @@ cut 命令可以将一串字符作为列来显示,字符字段的记法:
**示例**
```
```shell
[root@localhost text]# cat test.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
@ -125,7 +124,7 @@ abcdefghijklmnopqrstuvwxyz
打印第 1 个到第 3 个字符:
```
```shell
[root@localhost text]# cut -c1-3 test.txt
abc
abc
@ -137,7 +136,7 @@ abc
打印前 2 个字符:
```
```shell
[root@localhost text]# cut -c-2 test.txt
ab
ab
@ -149,7 +148,7 @@ ab
打印从第 5 个字符开始到结尾:
```
```shell
[root@localhost text]# cut -c5- test.txt
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz

View File

@ -11,13 +11,13 @@ date
### 语法
```
```shell
date(选项)(参数)
```
### 选项
```
```shell
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u显示GMT
@ -31,117 +31,117 @@ date(选项)(参数)
### 日期格式字符串列表
```
%H 小时24小时制00~23
%I 小时12小时制01~12
%k 小时24小时制0~23
%l 小时12小时制1~12
%M 分0059
%p 显示出上午或下午
%r 时间12小时制
%s 从1970年1月1日0点到目前经历的秒数
%S 秒0059
%T 时间24小时制hh:mm:ss
%X 显示时间的格式H时M分S秒
%Z 按字母表排序的时区缩写
%a 星期名缩写
%A 星期名全称
%b 月名缩写
%B 月名全称
%c 日期和时间
%d 按月计的日期0131
%D 日期mm/dd/yy
%h 和%b选项相同
%j 一年的第几天001~366
%m 月份0112
%w 一个星期的第几天0代表星期天
%W 一年的第几个星期0053星期一为第一天
%x 显示日期的格式mm/dd/yy
%y 年份的最后两个数字1999则是99
%Y 年份比如1970、1996等
%C 世纪,通常为省略当前年份的后两位数字
%U 一年中的第几周,以周日为每星期第一天
%e 按月计的日期,添加空格,等于%_d
```shell
%H # 小时24小时制00~23
%I # 小时12小时制01~12
%k # 小时24小时制0~23
%l # 小时12小时制1~12
%M # 0059
%p # 显示出上午或下午
%r # 时间12小时制
%s # 从1970年1月1日0点到目前经历的秒数
%S # 0059
%T # 时间24小时制hh:mm:ss
%X # 显示时间的格式H时M分S秒
%Z # 按字母表排序的时区缩写
%a # 星期名缩写
%A # 星期名全称
%b # 月名缩写
%B # 月名全称
%c # 日期和时间
%d # 按月计的日期0131
%D # 日期mm/dd/yy
%h # 和%b选项相同
%j # 一年的第几天001~366
%m # 月份0112
%w # 一个星期的第几天0代表星期天
%W # 一年的第几个星期0053星期一为第一天
%x # 显示日期的格式mm/dd/yy
%y # 年份的最后两个数字1999则是99
%Y # 年份比如1970、1996等
%C # 世纪,通常为省略当前年份的后两位数字
%U # 一年中的第几周,以周日为每星期第一天
%e # 按月计的日期,添加空格,等于%_d
```
### 实例
格式化输出:
```
```shell
date +"%Y-%m-%d"
2009-12-07
```
输出昨天日期:
```
```shell
date -d "1 day ago" +"%Y-%m-%d"
2012-11-19
```
2秒后输出
```
```shell
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31
```
传说中的 1234567890 秒:
```
```shell
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30
```
普通转格式:
```
```shell
date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00
```
apache格式转换
```
```shell
date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37
```
格式转换后时间游走:
```
```shell
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 //显示下一年的日期
```shell
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" //这样可以设置全部时间
```shell
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" # 这样可以设置全部时间
```
有时需要检查一组命令花费的时间,举例:
```
```shell
#!/bin/bash
start=$(date +%s)

View File

@ -11,13 +11,13 @@ dd
### 语法
```
```shell
dd(选项)
```
### 选项
```
```shell
bs=<字节数>将ibs输入与obs输出设成指定的字节数
cbs=<字节数>:转换时,每次只转换指定的字节数;
conv=<关键字>:指定文件转换的方式;
@ -33,7 +33,7 @@ skip=<区块数>:一开始读取时,跳过指定的区块数;
### 实例
```
```shell
[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1
1+0 records in
1+0 records out
@ -45,11 +45,11 @@ skip=<区块数>:一开始读取时,跳过指定的区块数;
该命令创建了一个1M大小的文件sun.txt其中参数解释
* **if** 代表输入文件。如果不指定if默认就会从stdin中读取输入。
* **of** 代表输出文件。如果不指定of默认就会将stdout作为默认输出。
* **bs** 代表字节为单位的块大小。
* **count** 代表被复制的块数。
* **/dev/zero** 是一个字符设备会不断返回0值字节\0
* **if** 代表输入文件。如果不指定if默认就会从stdin中读取输入。
* **of** 代表输出文件。如果不指定of默认就会将stdout作为默认输出。
* **bs** 代表字节为单位的块大小。
* **count** 代表被复制的块数。
* **/dev/zero** 是一个字符设备会不断返回0值字节\0
块大小可以使用的计量单位表
@ -64,7 +64,7 @@ skip=<区块数>:一开始读取时,跳过指定的区块数;
以上命令可以看出dd命令来测试内存操作速度
```
```shell
1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s
```
@ -72,7 +72,7 @@ skip=<区块数>:一开始读取时,跳过指定的区块数;
我们甚至可以使用 /dev/urandom 设备配合 dd 命令 来获取随机字符串。
```
```shell
[root@localhost ~]# dd if=/dev/urandom bs=1 count=15|base64 -w 0
15+0 records in
15+0 records out

View File

@ -9,13 +9,13 @@ declare
### 语法
```
```shell
declare(选项)(参数)
```
### 选项
```
```shell
+/-"-"可用来指定变量的属性,"+"则是取消变量所设的属性;
-f仅显示函数
r将变量设置为只读
@ -31,19 +31,19 @@ shell变量声明shell变量格式为“变量名=值”。
首先使用declare命令定义shell变量"test",并且将其值设置为"wangchujiang.com",输入如下命令:
```
```shell
declare test='wangchujiang.com' #定义并初始化shell变量
```
上面的命令执行后再使用echo命令将该shell变量值输出输入如下命令
```
```shell
echo $test #输出shell变量的值
```
上面的指令执行后,其输出的结果如下:
```
```shell
wangchujiang.com
```

View File

@ -1,6 +1,6 @@
depmod
===
分析可载入模块的相依性
## 补充说明
@ -9,13 +9,13 @@ depmod
### 语法
```
```shell
depmod(选项)
```
### 选项
```
```shell
-a或--all分析所有可用的模块
-d或debug执行排错模式
-e输出无法参照的符号
@ -29,7 +29,7 @@ depmod(选项)
### 实例
```
```shell
depmod -b /home/windsome/EMMA3PF-KernelSource-20080626/install_pos -e -F ./boot/System.map -v 2.6.18_pro500-bcm91250-mips2_fp_be -A -a
```
@ -39,7 +39,7 @@ depmod -b /home/windsome/EMMA3PF-KernelSource-20080626/install_pos -e -F ./boot/
编译linux过程及执行depmod的例子
```
```shell
genkernel.sh (at linux-2.6.18_pro500)
#######
export INSTALL_ROOT_EMMA3PF="/home/windsome/EMMA3PF-KernelSource-20080626/install_pos"

View File

@ -9,13 +9,13 @@ df
### 语法
```
```shell
df(选项)(参数)
```
### 选项
```
```shell
-a或--all包含全部的文件系统
--block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或--human-readable以可读性较高的方式来显示信息
@ -48,7 +48,7 @@ SIZE是一个整数和可选单位例如10M是10 * 1024 * 1024。 单
查看系统磁盘设备默认是KB为单位
```
```shell
[root@LinServ-1 ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 146294492 28244432 110498708 21% /
@ -59,7 +59,7 @@ tmpfs 1032204 0 1032204 0% /dev/shm
使用`-h`选项以KB以上的单位来显示可读性高
```
```shell
[root@LinServ-1 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 140G 27G 106G 21% /
@ -70,7 +70,7 @@ tmpfs 1009M 0 1009M 0% /dev/shm
查看全部文件系统:
```
```shell
[root@LinServ-1 ~]# df -a
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 146294492 28244432 110498708 21% /
@ -85,7 +85,7 @@ none 0 0 0 - /proc/sys/fs/binfmt_misc
显示 `public` 目录中的可用空间量,如以下输出中所示:
```bash
```shell
df public
# Filesystem 1K-blocks Used Available Use% Mounted on
# /dev/loop0 18761008 15246924 2554392 86% /d Avail

View File

@ -1,6 +1,6 @@
dhclient
===
动态获取或释放IP地址
## 补充说明
@ -9,13 +9,13 @@ dhclient
### 语法
```
```shell
dhclient(选项)(参数)
```
### 选项
```
```shell
0指定dhcp客户端监听的端口号
-d总是以前台方式运行程序
-q安静模式不打印任何错误的提示信息
@ -28,7 +28,7 @@ dhclient(选项)(参数)
### 实例
```
```shell
dhclient -r #释放IP
dhclient #获取IP
```

View File

@ -5,13 +5,13 @@ dhcpd
### 语法
```
```shell
dhcpd [选项] [网络接口]
```
### 选项
```
```shell
-p <端口> 指定dhcpd监听的端口
-f 作为前台进程运行dhcpd
-d 启用调试模式
@ -31,7 +31,7 @@ dhcpd [选项] [网络接口]
对DHCP服务器进行排错。
```bash
```shell
[root@localhost ~]# dhcpd
InternetSystems Consortium DHCP Server 4.1.1-P1
Copyright2004-2010 Internet Systems Consortium.

View File

@ -9,13 +9,13 @@ dhcrelay
### 语法
```
```shell
dhcrelay [选项] [DHCP服务器]
```
### 选项
```
```shell
-c <跳数> 当转发数据包时dhcrelay丢弃已经达到一个最大跳数的数据包。默认值是10最大值是255
-4 运行dhcrelay命令作为DHCPv4/BOOTP中继代理。这是默认操作模式
-6 运行dhcrelay命令作为DHCPv6中继代理
@ -29,7 +29,7 @@ dhcrelay [选项] [DHCP服务器]
指定DHCP服务器的位置。
```bash
```shell
[root@localhost ~]# dhcrelay 192.168.0.2
Internet Systems Consortium DHCP Relay Agent4.1.1-P1
Copyright 2004-2010 Internet SystemsConsortium.

View File

@ -1,6 +1,6 @@
diff
===
比较给定的两个文件的不同
## 补充说明
@ -9,13 +9,13 @@ diff
### 语法
```
```shell
diff(选项)(参数)
```
### 选项
```
```shell
-<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用
-a或——textdiff预设只会逐行比较文本文件
-b或--ignore-space-change不检查空格字符的不同
@ -61,13 +61,13 @@ diff(选项)(参数)
将目录`/usr/li`下的文件"test.txt"与当前目录下的文件"test.txt"进行比较,输入如下命令:
```
```shell
diff /usr/li test.txt #使用diff指令对文件进行比较
```
上面的命令执行后,会将比较后的不同之处以指定的形式列出,如下所示:
```
```shell
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4

View File

@ -1,6 +1,6 @@
diff3
===
比较3个文件不同的地方
## 补充说明
@ -9,13 +9,13 @@ diff3
### 语法
```
```shell
diff3(选项)(参数)
```
### 选项
```
```shell
-a把所有的文件都当做文本文件按照行为单位进行比较即给定的文件不是文本文件
-A合并第2个文件和第3个文件之间的不同到第1个文件中有冲突内容用括号括起来
-B与选项“-A”功能相同但是不显示冲突的内容
@ -27,9 +27,9 @@ diff3(选项)(参数)
### 参数
* 文件1指定要比较的第1个文件
* 文件2指定要比较的第2个文件
* 文件3指定要比较的第3个文件。
* 文件1指定要比较的第1个文件
* 文件2指定要比较的第2个文件
* 文件3指定要比较的第3个文件。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

View File

@ -1,6 +1,6 @@
diffstat
===
显示diff命令输出信息的柱状图
## 补充说明
@ -9,13 +9,13 @@ diffstat
### 语法
```
```shell
diffstat(选项)(参数)
```
### 选项
```
```shell
-n<文件名长度>:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
-p<文件名长度>:与-n参数相同但此处的<文件名长度>包括了文件的路径;
-w指定要输出时栏位的宽度
@ -30,7 +30,7 @@ diffstat(选项)(参数)
将目录"test1"和"test2"下的同名文件"testf.txt"使用diff命令进行比较。然后使用diffstat命令对结果进行统计显示输入如下命令
```
```shell
diff test1 test2 | diffstat #进行比较结果的统计显示
```
@ -38,7 +38,7 @@ diff test1 test2 | diffstat #进行比较结果的统计显示
对于查看文件中的内容用户可以通过cat命令进行查看即可具体操作如下
```
```shell
cat test1/testf.txt #查看test1/testf的内容
abc
def
@ -59,7 +59,7 @@ mno
从上面的文件内容显示,可以看到两个文件内容的差别。现在来运行刚才的命令,对文件比较的结果进行统计显示,结果如下:
```
```shell
testfile | 2 +- #统计信息输出显示
1 file changed, 1 insertion(+), 1 deletion(-)
```

View File

@ -1,6 +1,6 @@
dig
===
域名查询工具
## 补充说明
@ -9,13 +9,13 @@ dig
### 语法
```
```shell
dig(选项)(参数)
```
### 选项
```
```shell
@<服务器地址>:指定进行域名解析的域名服务器;
-b<ip地址>当主机具有多个IP地址指定使用本机的哪个IP地址向域名服务器发送域名查询请求
-f<文件名称>指定dig以批处理的方式运行指定的文件中保存着需要批处理查询的DNS任务信息
@ -36,7 +36,7 @@ dig(选项)(参数)
### 实例
```
```shell
[root@localhost ~]# dig www.jsdig.com
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.1 <<>> www.jsdig.com

View File

@ -1,6 +1,6 @@
dircolors
===
置ls命令在显示目录或文件时所用的色彩
## 补充说明
@ -9,13 +9,13 @@ dircolors
### 语法
```
```shell
dircolors(选项)(参数)
```
### 选项
```
```shell
-b或--sh或--bourne-shell显示在Boume shell中将LS_COLORS设为目前预设置的shell指令
-c或--csh或--c-shell显示在C shell中将LS_COLORS设为目前预设置的shell指令
-p或--print-database显示预设置
@ -29,7 +29,7 @@ dircolors(选项)(参数)
### 实例
```
```shell
[root@localhost ~]# dircolors -p
# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the --color option.

View File

@ -1,6 +1,6 @@
dirname
===
去除文件名中的非目录部分
## 补充说明
@ -9,20 +9,20 @@ dirname
### 语法
```
```shell
dirname(选项)(参数)
```
### 选项
```
```shell
--help显示帮助
--version显示版本号。
```
### 实例
```
```shell
dirname //
结果为 /

View File

@ -1,6 +1,6 @@
dirs
===
显示目录记录
## 补充说明
@ -9,20 +9,19 @@ dirs
### 语法
```
```shell
dirs(选项)(参数)
```
### 选项
```
```shell
-c删除目录栈中的所有记录
-l以完整格式显示
-p一个目录一行的方式显示
-v每行一个目录来显示目录栈的内容每个目录前加上的编号
+N显示从左到右的第n个目录数字从0开始
-N显示从右到左的第n个日录数字从0开始
```
### 参数
@ -31,7 +30,7 @@ dirs(选项)(参数)
### 实例
```
```shell
[root@localhost etc]# dirs
/etc
```

View File

@ -9,13 +9,13 @@ dmesg
### 语法
```
```shell
dmesg(选项)
```
### 选项
```
```shell
-c显示信息后清除ring buffer中的内容
-s<缓冲区大小>预设置为8196刚好等于ring buffer的大小
-n设置记录信息的层级。
@ -23,7 +23,7 @@ dmesg(选项)
### 实例
```
```shell
[root@localhost ~]# dmesg | head
Linux version 2.6.18-348.6.1.el5 (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Tue May 21 15:34:22 EDT 2013
BIOS-provided physical RAM map:
@ -39,7 +39,7 @@ BIOS-provided physical RAM map:
查看硬盘基础信息
```bash
```shell
dmesg | grep sda
[ 2.442555] sd 0:0:0:0: [sda] 488281250 512-byte logical blocks: (250 GB/232 GiB)

View File

@ -13,13 +13,13 @@ DMI充当了管理工具和系统层之间接口的角色。它建立了标准
### 语法
```
```shell
dmidecode [选项]
```
### 选项
```
```shell
-d(default:/dev/mem)从设备文件读取信息,输出内容与不加参数标准输出相同。
-h显示帮助信息。
-s只显示指定DMI字符串的信息。(string)
@ -116,7 +116,7 @@ dmidecode [选项]
### 实例
```bash
```shell
dmidecode -t 1 # 查看服务器信息
dmidecode | grep 'Product Name' # 查看服务器型号
dmidecode |grep 'Serial Number' # 查看主板的序列号
@ -133,7 +133,7 @@ cat /proc/scsi/scsi # 查看服务器硬盘信息
不带选项执行dmidecode命令通常会输出所有的硬件信息。dmidecode命令有个很有用的选项-t可以按指定类型输出相关信息假如要获得处理器方面的信息则可以执行
```
```shell
[root@localhost ~]# dmidecode -t processor
# dmidecode 2.11
SMBIOS 2.5 present.
@ -221,7 +221,7 @@ Processor Information
查看内存的插槽数,已经使用多少插槽。每条内存多大,已使用内存多大
```bash
```shell
dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range
# Size: 2048 MB
@ -232,16 +232,15 @@ dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range
查看内存支持的最大内存容量
```bash
```shell
dmidecode|grep -P 'Maximum\s+Capacity'
# Maximum Capacity: 16 GB
```
查看内存的频率
```bash
```shell
dmidecode|grep -A16 "Memory Device"
# Memory Device
@ -288,7 +287,7 @@ dmidecode|grep -A16 "Memory Device"|grep 'Speed'
# Speed: 1333 MHz
# Speed: Unknown
```
```shell
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

View File

@ -1,6 +1,6 @@
dnf
===
新一代的RPM软件包管理器
## 补充说明
@ -19,293 +19,247 @@ DNF 并未默认安装在 RHEL 或 CentOS 7系统中但是 Fedora 22 已经
在系统中执行以下命令:
```
# yum install epel-release
```shell
yum install epel-release
```
或者
```
# yum install epel-release -y
```shell
yum install epel-release -y
```
其实这里并没有强制使用”-y”的理由相反的在不使用”-y”的情况下用户可以在安装过程中查看到底有哪些东西被安装进了系统。但对于没有这个需求的用户您可以在 YUM 中使用”-y”参数来自动安装所有东西。
2、使用 epel-release 依赖中的 YUM 命令来安装 DNF 包。在系统中执行以下命令:
```
# yum install dnf
```shell
yum install dnf
```
然后, DNF 包管理器就被成功的安装到你的系统中了。接下来是时候开始我们的教程了在这个教程中您将会学到27个用于 DNF 包管理器的命令。使用这些命令,你可以方便有效的管理您系统中的 RPM 软件包。现在,让我们开始学习 DNF 包管理器的27条常用命令吧
**查看 DNF 包管理器版本**
**查看 DNF 包管理器版本**
用处:该命令用于查看安装在您系统中的 DNF 包管理器的版本
```
# dnf version
```shell
dnf version
```
!Check-DNF-Version
**查看系统中可用的 DNF 软件库**
**查看系统中可用的 DNF 软件库**
用处:该命令用于显示系统中可用的 DNF 软件库
```
# dnf repolist
```shell
dnf repolist
```
!Check-All-Enabled-Repositories
**查看系统中可用和不可用的所有的 DNF 软件库**
**查看系统中可用和不可用的所有的 DNF 软件库**
用处:该命令用于显示系统中可用和不可用的所有的 DNF 软件库
```
# dnf repolist all
```shell
dnf repolist all
```
!3
**列出所有 RPM 包**
**列出所有 RPM 包**
用处:该命令用于列出用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
```
# dnf list
```shell
dnf list
```
!4
**列出所有安装了的 RPM 包**
**列出所有安装了的 RPM 包**
用处:该命令用于列出所有安装了的 RPM 包
```
# dnf list installed
```shell
dnf list installed
```
!5
**列出所有可供安装的 RPM 包**
**列出所有可供安装的 RPM 包**
用处:该命令用于列出来自所有可用软件库的可供安装的软件包
```
# dnf list available
```shell
dnf list available
```
!6
**搜索软件库中的 RPM 包**
**搜索软件库中的 RPM 包**
用处当你不知道你想要安装的软件的准确名称时你可以用该命令来搜索软件包。你需要在”search”参数后面键入软件的部分名称来搜索。在本例中我们使用”nano”
```
# dnf search nano
```shell
dnf search nano
```
!7
**查找某一文件的提供者**
**查找某一文件的提供者**
用处:当你想要查看是哪个软件包提供了系统中的某一文件时,你可以使用这条命令。(在本例中,我们将查找”/bin/bash”这个文件的提供者
```
# dnf provides /bin/bash
```shell
dnf provides /bin/bash
```
!8
**查看软件包详情**
**查看软件包详情**
用处当你想在安装某一个软件包之前查看它的详细信息时这条命令可以帮到你。在本例中我们将查看”nano”这一软件包的详细信息
```
# dnf info nano
```shell
dnf info nano
```
!9
**安装软件包**
**安装软件包**
用处使用该命令系统将会自动安装对应的软件及其所需的所有依赖在本例中我们将用该命令安装nano软件
```
# dnf install nano
```shell
dnf install nano
```
!10
**升级软件包**
**升级软件包**
用处该命令用于升级制定软件包在本例中我们将用命令升级”systemd”这一软件包
```
# dnf update systemd
```shell
dnf update systemd
```
!11
**检查系统软件包的更新**
**检查系统软件包的更新**
用处:该命令用于检查系统中所有软件包的更新
```
# dnf check-update
```shell
dnf check-update
```
!12
**升级所有系统软件包**
**升级所有系统软件包**
用处:该命令用于升级系统中所有有可用升级的软件包
```
# dnf update 或 # dnf upgrade
```shell
dnf update 或 dnf upgrade
```
!13
**删除软件包**
**删除软件包**
用处删除系统中指定的软件包在本例中我们将使用命令删除”nano”这一软件包
```
# dnf remove nano 或 # dnf erase nano
```shell
dnf remove nano 或 dnf erase nano
```
!14
**删除无用孤立的软件包**
**删除无用孤立的软件包**
用处:当没有软件再依赖它们时,某一些用于解决特定软件依赖的软件包将会变得没有存在的意义,该命令就是用来自动移除这些没用的孤立软件包。
```
# dnf autoremove
```shell
dnf autoremove
```
!15
**删除缓存的无用软件包**
**删除缓存的无用软件包**
用处:在使用 DNF 的过程中,会因为各种原因在系统中残留各种过时的文件和未完成的编译工程。我们可以使用该命令来删除这些没用的垃圾文件。
```
# dnf clean all
```shell
dnf clean all
```
!16
**获取有关某条命令的使用帮助**
**获取有关某条命令的使用帮助**
用处该命令用于获取有关某条命令的使用帮助包括可用于该命令的参数和该命令的用途说明本例中我们将使用命令获取有关命令”clean”的使用帮助
```
# dnf help clean
```shell
dnf help clean
```
!17
**查看所有的 DNF 命令及其用途**
**查看所有的 DNF 命令及其用途**
用处:该命令用于列出所有的 DNF 命令及其用途
```
# dnf help
```shell
dnf help
```
!18
**查看 DNF 命令的执行历史**
**查看 DNF 命令的执行历史**
用处:您可以使用该命令来查看您系统上 DNF 命令的执行历史。通过这个手段您可以知道在自您使用 DNF 开始有什么软件被安装和卸载。
```
# dnf history
```shell
dnf history
```
!19
**查看所有的软件包组**
**查看所有的软件包组**
用处:该命令用于列出所有的软件包组
```
# dnf grouplist
```shell
dnf grouplist
```
!20
**安装一个软件包组**
**安装一个软件包组**
用处该命令用于安装一个软件包组本例中我们将用命令安装”Educational Software”这个软件包组
```
# dnf groupinstall Educational Software
```shell
dnf groupinstall Educational Software
```
!21
**升级一个软件包组中的软件包**
**升级一个软件包组中的软件包**
用处该命令用于升级一个软件包组中的软件包本例中我们将用命令升级”Educational Software”这个软件包组中的软件
```
# dnf groupupdate Educational Software
```shell
dnf groupupdate Educational Software
```
!22
**删除一个软件包组**
**删除一个软件包组**
用处该命令用于删除一个软件包组本例中我们将用命令删除”Educational Software”这个软件包组
```
# dnf groupremove Educational Software
```shell
dnf groupremove Educational Software
```
!23
**从特定的软件包库安装特定的软件**
**从特定的软件包库安装特定的软件**
用处:该命令用于从特定的软件包库安装特定的软件(本例中我们将使用命令从软件包库 epel 中安装 phpmyadmin 软件包)
```
# dnf enablerepo=epel install phpmyadmin
```shell
dnf enablerepo=epel install phpmyadmin
```
**更新软件包到最新的稳定发行版**
**更新软件包到最新的稳定发行版**
用处:该命令可以通过所有可用的软件源将已经安装的所有软件包更新到最新的稳定发行版
```
# dnf distro-sync
```shell
dnf distro-sync
```
**重新安装特定软件包**
**重新安装特定软件包**
用处该命令用于重新安装特定软件包本例中我们将使用命令重新安装”nano”这个软件包
```
# dnf reinstall nano
```shell
dnf reinstall nano
```
!26
**回滚某个特定软件的版本**
**回滚某个特定软件的版本**
用处该命令用于降低特定软件包的版本如果可能的话本例中我们将使用命令降低”acpid”这个软件包的版本
```
# dnf downgrade acpid
```shell
dnf downgrade acpid
```
样例输出:
```
```shell
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.

View File

@ -1,6 +1,6 @@
dnsdomainname
===
定义DNS系统中FQDN名称的域名
## 补充说明
@ -9,17 +9,19 @@ dnsdomainname
### 语法
```
```shell
dnsdomainname(选项)
```
### 选项
```shell
-v详细信息模式输出指令执行的详细信息。
```
### 实例
```
```shell
[root@AY1307311912260196fcZ ~]# dnsdomainname -v
gethostname()=`AY1307311912260196fcZ'
Resolving `AY1307311912260196fcZ' ...

Some files were not shown because too many files have changed in this diff Show More