Black-Gold 4 years ago
parent 1ee76ca2a9
commit dd709395aa

@ -5,8 +5,6 @@
**basename命令** 用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异 **basename命令** 用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异
的输出文件名称 的输出文件名称
## 选项
```markdown ```markdown
-a, --multiple support multiple arguments and treat each as a NAME -a, --multiple support multiple arguments and treat each as a NAME
-s, --suffix=SUFFIX remove a trailing SUFFIX -s, --suffix=SUFFIX remove a trailing SUFFIX

@ -5,8 +5,6 @@
**bc命令** 是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持但是并不支持浮点运算而bc命令可以 **bc命令** 是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持但是并不支持浮点运算而bc命令可以
很方便的进行浮点运算,当然整数运算也不再话下 很方便的进行浮点运算,当然整数运算也不再话下
## 选项
```markdown ```markdown
-i --interactive 强制进入交互式模式输入quit后回车退出此模式 -i --interactive 强制进入交互式模式输入quit后回车退出此模式
-l --mathlib 定义使用的标准数学库 -l --mathlib 定义使用的标准数学库
@ -28,5 +26,4 @@ echo "sqrt(1000/10) + 1" | bc -l
# 计算平方和平方根 # 计算平方和平方根
echo "10^10" | bc echo "10^10" | bc
echo "sqrt(100)" | bc echo "sqrt(100)" | bc
``` ```

@ -54,4 +54,4 @@ bzip2 -dc dir.tar.bz2 | tar -x # 展开压缩包,对tar.gz文件使用gzip而
bzip2 -c filename # 压缩到标准输出;使用`-c`指定压缩到标准输出不删除原有文件,不同的是,压缩后的文件无法输出到标准输出 bzip2 -c filename # 压缩到标准输出;使用`-c`指定压缩到标准输出不删除原有文件,不同的是,压缩后的文件无法输出到标准输出
bzip2 -- -myfilename # 使用bzip2的时候将所有后面的看作文件(即使文件名以'-'开头);为了防止文件名中`-`产生以为是选项的歧义 bzip2 -- -myfilename # 使用bzip2的时候将所有后面的看作文件(即使文件名以'-'开头);为了防止文件名中`-`产生以为是选项的歧义
``` ```

@ -1,7 +1,5 @@
# **cat** # **cat**
## 选项
```markdown ```markdown
将[文件]或标准输入组合输出到标准输出 将[文件]或标准输入组合输出到标准输出
-A, --show-all 等于-vET,显示不可打印字符,行尾显示“$” -A, --show-all 等于-vET,显示不可打印字符,行尾显示“$”

@ -38,5 +38,3 @@ chattr +i /etc/fstab # 用chattr命令防止系统中某个关键文件被修
chattr +a /data1/user_act.log # 让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作 chattr +a /data1/user_act.log # 让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作
``` ```

@ -9,8 +9,6 @@
在UNIX系统家族里文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组设置方式采用群组名称或 在UNIX系统家族里文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组设置方式采用群组名称或
群组识别码皆可 群组识别码皆可
## 选项
```markdown ```markdown
用法chgrp [选项]... 用户组 文件... 用法chgrp [选项]... 用户组 文件...
 chgrp [选项]... --reference=参考文件 文件...  chgrp [选项]... --reference=参考文件 文件...
@ -47,5 +45,4 @@
```bash ```bash
chgrp -R mengxin /usr/meng # 将`/usr/meng`及其子目录下的所有文件的用户组改为mengxin chgrp -R mengxin /usr/meng # 将`/usr/meng`及其子目录下的所有文件的用户组改为mengxin
chgrp newuser ah # 更改文件ah的组群所有者为newuser chgrp newuser ah # 更改文件ah的组群所有者为newuser
``` ```

@ -6,10 +6,6 @@
另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限设置方式采用文字或数字代号皆可。符号连接的权限无法 另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限设置方式采用文字或数字代号皆可。符号连接的权限无法
变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件 变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件
## 选项
```markdown ```markdown
用法chmod [选项] 模式[,模式] 文件 用法chmod [选项] 模式[,模式] 文件
 chmod [选项] 八进制模式 文件  chmod [选项] 八进制模式 文件
@ -56,4 +52,3 @@ chmod 764 f01
chmod a+x f01 # 对文件f01的u,g,o都设置可执行属性 chmod a+x f01 # 对文件f01的u,g,o都设置可执行属性
chown user:market f01 # 把文件f01给uesr添加到market组 chown user:market f01 # 把文件f01给uesr添加到market组
``` ```

@ -7,8 +7,6 @@
只有文件属主和超级用户才可以便用该命令 只有文件属主和超级用户才可以便用该命令
## 选项
```markdown ```markdown
用法chown [选项]... [所有者][:[组]] 文件... 用法chown [选项]... [所有者][:[组]] 文件...
 chown [选项]... --reference=参考文件 文件...  chown [选项]... --reference=参考文件 文件...
@ -23,30 +21,27 @@ With --reference, change the owner and group of each FILE to those of RFILE.
(仅在可以更改符号链接的所有权的系统上有用) (仅在可以更改符号链接的所有权的系统上有用)
--from=当前所有者:当前所属组 --from=当前所有者:当前所属组
只当每个文件的所有者和组符合选项所指定时才更改所有者和组。其中一个可以省略,这时已省略的属性就不 只当每个文件的所有者和组符合选项所指定时才更改所有者和组。其中一个可以省略,这时已省略的属性就不
需要符合原有的属性 需要符合原有的属性
--no-preserve-root do not treat '/' specially (the default) --no-preserve-root do not treat '/' specially (the default)
--preserve-root fail to operate recursively on '/' --preserve-root fail to operate recursively on '/'
--reference=RFILE 使用RFILE的所有者和组而不是指定OWNERGROUP值 --reference=RFILE 使用RFILE的所有者和组而不是指定OWNERGROUP值
-R, --recursive 对文件和目录递归处理 -R, --recursive 对文件和目录递归处理
指定了-R选项时以下选项将修改遍历层次的方式如果制定了多个只有最后一个生效 指定了-R选项时以下选项将修改遍历层次的方式如果制定了多个只有最后一个生效
-H 如果命令行参数是目录的符号链接,则遍历它 -H 如果命令行参数是目录的符号链接,则遍历它
-L 遍历目录下的没一个符号链接 -L 遍历目录下的没一个符号链接
-P 不遍历任何符号链接(默认) -P 不遍历任何符号链接(默认)
Owner is unchanged if missing. Group is unchanged if missing, but changed Owner is unchanged if missing. Group is unchanged if missing, but changed
to login group if implied by a ':' following a symbolic OWNER. to login group if implied by a ':' following a symbolic OWNER.
OWNER and GROUP may be numeric as well as symbolic. OWNER and GROUP may be numeric as well as symbolic.
``` ```
## 实例 ## 实例
```bash ```bash
chown root /u # 将 /u 的属主更改为"root" chown root /u # 将 /u 的属主更改为"root"
chown root:staff /u # 和上面类似,但同时也将其属组更改为"staff" chown root:staff /u # 和上面类似,但同时也将其属组更改为"staff"
chown -hR root /u # 将 /u 及其子目录下所有文件的属主更改为"root" chown -hR root /u # 将 /u 及其子目录下所有文件的属主更改为"root"
``` ```

@ -7,23 +7,21 @@
chroot命令之后系统读取的目录和文件将不再是系统根下的而是被指定的目录因此它带来的好处大致有以下3个 chroot命令之后系统读取的目录和文件将不再是系统根下的而是被指定的目录因此它带来的好处大致有以下3个
**增加了系统的安全性,限制了用户的权力:** **增加了系统的安全性,限制了用户的权力:**
在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot 在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot
以此达到用户不能访问一些特定的文件 以此达到用户不能访问一些特定的文件
**建立一个与原系统隔离的系统目录结构,方便用户的开发:** **建立一个与原系统隔离的系统目录结构,方便用户的开发:**
使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译 使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译
以及一些与系统不相关的独立开发 以及一些与系统不相关的独立开发
**切换系统的根目录位置,引导 Linux 系统启动以及急救系统等:** **切换系统的根目录位置,引导 Linux 系统启动以及急救系统等:**
chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根 chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根
位置并执行真正的 init。另外当系统出现一些问题时我们也可以使用 chroot 来切换到一个临时的系统 位置并执行真正的 init。另外当系统出现一些问题时我们也可以使用 chroot 来切换到一个临时的系统
## 选项
```markdown ```markdown
--userspec=用户:组 指定所用的用户及用户组(可使用"数字"或"名字") --userspec=用户:组 指定所用的用户及用户组(可使用"数字"或"名字")
--groups=组列表 指定可供选择的用户组列表形如组1组2组3... --groups=组列表 指定可供选择的用户组列表形如组1组2组3...
@ -34,6 +32,4 @@ chroot 的作用就是切换系统的根位置,而这个作用最为明显的
```bash ```bash
chroot target /bin/sh # 将target作为根目录运行其中的`/bin/sh` chroot target /bin/sh # 将target作为根目录运行其中的`/bin/sh`
chroot target /bin/ls # 将target作为根目录(运行其中的`/bin/ls`) chroot target /bin/ls # 将target作为根目录(运行其中的`/bin/ls`)
``` ```

@ -15,5 +15,3 @@
```bash ```bash
cksum testfile1 #对指定文件进行CRC校验 cksum testfile1 #对指定文件进行CRC校验
``` ```

@ -9,4 +9,3 @@
```bash ```bash
clear clear
``` ```

@ -1,6 +1,6 @@
# **column** # **column**
## 选项 列格式化程序。通过在适当位置插入标签
```markdown ```markdown
column [选项] [文件] column [选项] [文件]
@ -10,4 +10,4 @@ column [选项] [文件]
-o, --output-separator <字符串> 表格输出列分隔符,默认为两个空格 -o, --output-separator <字符串> 表格输出列分隔符,默认为两个空格
-x, --fillrows 先填充行,再填充列 -x, --fillrows 先填充行,再填充列
``` ```

@ -5,8 +5,6 @@
**cp命令** 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件 **cp命令** 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件
或一个已经存在的目录下。cp命令还支持同时复制多个文件当一次复制多个文件时目标文件参数必须是一个已经存在的目录否则将出现错误 或一个已经存在的目录下。cp命令还支持同时复制多个文件当一次复制多个文件时目标文件参数必须是一个已经存在的目录否则将出现错误
## 选项
```markdown ```markdown
用法cp [选项]... [-T] 源文件 目标文件 用法cp [选项]... [-T] 源文件 目标文件
 cp [选项]... 源文件... 目录  cp [选项]... 源文件... 目录

@ -4,8 +4,6 @@
**cpio命令** 将归档文件及从包中提取文件cpio命令可以复制文件到归档包中或者从归档包中复制文件 **cpio命令** 将归档文件及从包中提取文件cpio命令可以复制文件到归档包中或者从归档包中复制文件
## 选项
```markdown ```markdown
cpio [OPTION...] [目标目录] cpio [OPTION...] [目标目录]
@ -119,5 +117,3 @@ cpio -icduv < /opt/etc.cpio # 备份包etc.cpio还原到相应的位置如果
示例可以看出cpio无法直接读取文件它需要每个文件或者目录的完整路径名才能识别读取而find命令的输出刚好做到了这点因此cpio命令一般 示例可以看出cpio无法直接读取文件它需要每个文件或者目录的完整路径名才能识别读取而find命令的输出刚好做到了这点因此cpio命令一般
和find命令配合使用 和find命令配合使用
comment comment

@ -9,28 +9,26 @@
当文件较大时文本在屏幕上迅速闪过滚屏用户往往看不清所显示的内容。因此一般用more等命令分屏显示。为了控制滚屏 当文件较大时文本在屏幕上迅速闪过滚屏用户往往看不清所显示的内容。因此一般用more等命令分屏显示。为了控制滚屏
以按Ctrl+S键停止滚屏按Ctrl+Q键可以恢复滚屏。按Ctrl+C中断键可以终止该命令的执行并且返回Shell提示符状态 以按Ctrl+S键停止滚屏按Ctrl+Q键可以恢复滚屏。按Ctrl+C中断键可以终止该命令的执行并且返回Shell提示符状态
## 选项
```markdown ```markdown
Print selected parts of lines from each FILE to standard output. Print selected parts of lines from each FILE to standard output.
Mandatory arguments to long options are mandatory for short options too. Mandatory arguments to long options are mandatory for short options too.
-b, --bytes=列表 只选中指定的这些字节 -b, --bytes=列表 只选中指定的这些字节
-c, --characters=列表 只选中指定的这些字符 -c, --characters=列表 只选中指定的这些字符
-d, --delimiter=分界符 使用指定分界符代替制表符作为区域分界 -d, --delimiter=分界符 使用指定分界符代替制表符作为区域分界
-f, --fields=LIST 只选择这些字段; 除非指定了-s选项否则还会打印任何不包含分隔符的行,即显示指定字段的内容 -f, --fields=LIST 只选择这些字段; 除非指定了-s选项否则还会打印任何不包含分隔符的行,即显示指定字段的内容
-n 与-b选项连用不分割多字节字符 -n 与-b选项连用不分割多字节字符
--complement 补全选中的字节、字符或域 --complement 补全选中的字节、字符或域
-s, --only-delimited 不打印没有包含分界符的行 -s, --only-delimited 不打印没有包含分界符的行
--output-delimiter=字符串 使用指定的字符串作为输出分界符,默认采用输入的分界符 --output-delimiter=string 使用指定的字符串作为输出分界符,默认采用输入的分界符
仅使用f -b, -c 或-f 中的一个。每一个列表都是专门为一个类别作出的,或者您可以用逗号隔 仅使用f -b, -c 或-f 中的一个。每一个列表都是专门为一个类别作出的,或者您可以用逗号隔
开要同时显示的不同类别。您的输入顺序将作为读取顺序,每个仅能输入一次 开要同时显示的不同类别。您的输入顺序将作为读取顺序,每个仅能输入一次
每种参数格式表示范围如下: 每种参数格式表示范围如下:
N 从第1 个开始数的第N 个字节、字符或域 N 从第1 个开始数的第N 个字节、字符或域
N- 从第N 个开始到所在行结束的所有字符、字节或域 N- 从第N 个开始到所在行结束的所有字符、字节或域
N-M 从第N 个开始到第M 个之间(包括第M 个)的所有字符、字节或域 N-M 从第N 个开始到第M 个之间(包括第M 个)的所有字符、字节或域
-M 从第1 个开始到第M 个之间(包括第M 个)的所有字符、字节或域 -M 从第1 个开始到第M 个之间(包括第M 个)的所有字符、字节或域
当没有文件参数,或者文件不存在时,从标准输入读取 当没有文件参数,或者文件不存在时,从标准输入读取
@ -45,7 +43,7 @@ cut -f2 -d";" test2.txt # 使用-d选项指定字段分隔符
pip3 list -o --format columns | cut -d ' ' -f1 | xargs -n1 pip install -U # 一次性升级所有pip包 pip3 list -o --format columns | cut -d ' ' -f1 | xargs -n1 pip install -U # 一次性升级所有pip包
ls /etc/rc3.d/S* | cut -c 15- # 显示运行级别为3开启的服务 ls /etc/rc3.d/S* | cut -c 15- # 显示运行级别为3开启的服务
### 指定字段的字符或者字节范围 ### 指定字段的字符或者字节范围
: << comment : << comment
cut命令可以将一串字符作为列来显示字符字段的记法 cut命令可以将一串字符作为列来显示字符字段的记法

@ -8,8 +8,6 @@
间。日期可以以多种格式去打印也可以使用命令设置固定的格式。在类UNIX系统中日期被存储为一个整数其大小为自世界标准时间 间。日期可以以多种格式去打印也可以使用命令设置固定的格式。在类UNIX系统中日期被存储为一个整数其大小为自世界标准时间
UTC1970年1月1日0时0分0秒起流逝的秒数 UTC1970年1月1日0时0分0秒起流逝的秒数
## 选项
```markdown ```markdown
用法date [选项]... [+格式] 用法date [选项]... [+格式]
 date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
@ -31,7 +29,7 @@
%A 当前locale 的星期名全称 (如:星期日) %A 当前locale 的星期名全称 (如:星期日)
%b 当前locale 的月名缩写 (如:一,代表一月) %b 当前locale 的月名缩写 (如:一,代表一月)
%B 当前locale 的月名全称 (如:一月) %B 当前locale 的月名全称 (如:一月)
%c 当前locale 的日期和时间 (如2005年3月3日 %c 当前locale 的日期和时间 (如2005年3月3日
%C 世纪;比如 %Y通常为省略当前年份的后两位 %C 世纪;比如 %Y通常为省略当前年份的后两位
%d 按月计的日期(例如01) %d 按月计的日期(例如01)
%D 按月计的日期;等于%m/%d/%y %D 按月计的日期;等于%m/%d/%y
@ -96,7 +94,7 @@ date --date='TZ="America/Los_Angeles" 09:00 next Fri'
``` ```
## 实例 ## 实例
```bash ```bash
date +"%Y-%m-%d" # 格式化输出并用-符号连接日期 date +"%Y-%m-%d" # 格式化输出并用-符号连接日期

@ -12,8 +12,6 @@
其次dd命令可以创建一个固定大小的文件如下 其次dd命令可以创建一个固定大小的文件如下
dd if=/dev/zero of=/var/swap/file.swap bs=1024K count=64 linux支持K单位unix不支持 dd if=/dev/zero of=/var/swap/file.swap bs=1024K count=64 linux支持K单位unix不支持
## 选项
```markdown ```markdown
bs=BYTES 一次读写BYTES字节数 bs=BYTES 一次读写BYTES字节数
cbs=BYTES 一次转换BYTES字节数,即指定转换缓冲区大小 cbs=BYTES 一次转换BYTES字节数,即指定转换缓冲区大小
@ -113,12 +111,16 @@ dd if=hdadisk.img of=/dev/hdb # 从硬盘镜像恢复
dd if=/dev/hda1 of=~/partition1.img # 备份分区 dd if=/dev/hda1 of=~/partition1.img # 备份分区
dd if=/dev/cdrom of=tgsservice.iso bs=2048 # 备份CDROM dd if=/dev/cdrom of=tgsservice.iso bs=2048 # 备份CDROM
dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz' # 将硬盘sda压缩并备份到远程机器上 dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz' # 将硬盘sda压缩并备份到远程机器上
dd bs=1 seek=2TB if=/dev/null of=ext4.test # 建立一个大的测试文件(不占用空间)
time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file # 测试所在磁盘的写入速度 time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file # 测试所在磁盘的写入速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null # 测试磁盘的读取速度 dd if=/root/1Gb.file bs=64k | dd of=/dev/null # 测试磁盘的读取速度
dd bs=1 seek=2TB if=/dev/null of=ext4.test # 建立一个大的测试文件(不占用空间)
# 创建一个10M大小的文件两个命令皆可
dd if=/dev/zero of=daygeek2.txt bs=10M count=1
dd if=/dev/zero of=daygeek3.txt bs=1M count=10
# 确定硬盘的最佳块大小 # 确定硬盘的最佳块大小
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.filedd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.filedd \ dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.filedd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.filedd \
if=/dev/zero bs=4096 count=250000 of=/root/1Gb.filedd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file if=/dev/zero bs=4096 count=250000 of=/root/1Gb.filedd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
``` ```

@ -4,8 +4,6 @@
**df命令** 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘占用空间等信息 **df命令** 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘占用空间等信息
## 选项
```markdown ```markdown
-a, --all 包含全部的文件系统 -a, --all 包含全部的文件系统
-B, --block-size=SIZE 在打印之前按size调整大小; 例如:'- BM'以1048576字节为单位打印size;请参阅下面的SIZE格式 -B, --block-size=SIZE 在打印之前按size调整大小; 例如:'- BM'以1048576字节为单位打印size;请参阅下面的SIZE格式
@ -13,10 +11,10 @@
--total produce a grand total --total produce a grand total
-h, --human-readable 以可读性较高的方式来显示信息(e.g., 1K 234M 2G) -h, --human-readable 以可读性较高的方式来显示信息(e.g., 1K 234M 2G)
-H, --si 与-h参数相同但在计算时是以1000 Bytes为换算单位而非1024 Bytes -H, --si 与-h参数相同但在计算时是以1000 Bytes为换算单位而非1024 Bytes
-i, --inodes 显示inode 信息而非块使用量 -i, --inodes 显示inode 信息而非块使用量
-k 即--block-size=1K -k 即--block-size=1K
-l, --local 只显示本机的文件系统 -l, --local 只显示本机的文件系统
--no-sync 取得使用量数据前不进行同步动作(默认) --no-sync 取得使用量数据前不进行同步动作(默认)
--output[=FIELD_LIST] use the output format defined by FIELD_LIST, --output[=FIELD_LIST] use the output format defined by FIELD_LIST,
or print all fields if FIELD_LIST is omitted. or print all fields if FIELD_LIST is omitted.
-P, --portability 使用POSIX的输出格式 -P, --portability 使用POSIX的输出格式
@ -24,14 +22,10 @@
-t, --type=TYPE 仅显示指定文件系统类型的磁盘信息 -t, --type=TYPE 仅显示指定文件系统类型的磁盘信息
-T, --print-type 显示文件系统的类型 -T, --print-type 显示文件系统的类型
-x, --exclude-type=TYPE 不显示指定文件系统类型的磁盘信息 -x, --exclude-type=TYPE 不显示指定文件系统类型的磁盘信息
``` ```
## 实例 ## 实例
```bash ```bash
df # 查看系统磁盘设备默认是KB为单位 df # 查看系统磁盘设备默认是KB为单位
``` ```

@ -1,4 +1,4 @@
# **diff** # diff
## 说明 ## 说明
@ -6,8 +6,6 @@
diff命令是以逐行的方式比较文本文件的异同处。如果该命令指定进行目录的比较则将会比较该目录中具有相同文件名的文件而不 diff命令是以逐行的方式比较文本文件的异同处。如果该命令指定进行目录的比较则将会比较该目录中具有相同文件名的文件而不
会对其子目录文件进行任何比较操作 会对其子目录文件进行任何比较操作
## 选项
```markdown ```markdown
-<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用 -<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用
@ -147,9 +145,9 @@ diff /usr/li/test.txt test.txt # 将目录`/usr/li`下的文件test.txt与
: << comment : << comment
输出详解: 输出详解:
n1 a n3,n4 n1 a n3,n4
n1,n2 d n3 n1,n2 d n3
n1,n2 c n3,n4 n1,n2 c n3,n4
其中,字母"a"、"d"、"c"分别表示添加、删除及修改操作。而"n1"、"n2"表示在文件1中的行号"n3"、"n4"表示在文件2中的行号 其中,字母"a"、"d"、"c"分别表示添加、删除及修改操作。而"n1"、"n2"表示在文件1中的行号"n3"、"n4"表示在文件2中的行号
注意:以上说明指定了两个文件中不同处的行号及其相应的操作。在输出形式中,每一行后面将跟随受到影响的若干行。其中,以<开始 注意:以上说明指定了两个文件中不同处的行号及其相应的操作。在输出形式中,每一行后面将跟随受到影响的若干行。其中,以<开始
@ -157,4 +155,3 @@ n1,n2 c n3,n4
comment comment
``` ```

@ -1,39 +1,25 @@
dirname # **dirname**
===
去除文件名中的非目录部分
## 说明 ## 说明
**dirname命令** 去除文件名中的非目录部分仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个`/`及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个`<cite>/</cite>`后无字符dirname 命令使用倒数第二个`/`并忽略其后的所有字符。dirname 和 basename 通常在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差异的输出文件名 **dirname命令** 去除文件名中的非目录部分仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个`/`及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个`<cite>/</cite>`后无字符dirname 命令使用倒数第二个`/`并忽略其后的所有字符。dirname 和 basename 通常在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差异的输出文件名
## 选项 ```markdown
-z, --zero 每行以斜杠/结束,而不是换行符
```
dirname(选项)(参数)
```
```
--help显示帮助
--version显示版本号
``` ```
## 实例 ## 实例
```bash
dirname // # 输出为 /
dirname /a/b/ # 输出为 /a
dirname a # 输出为 .
dirname a/b # 输出为路径名 a
dirname dir1/str dir2/str
: << comment
# 输出为:
dir1
dir2
comment
``` ```
dirname //
结果为 /
dirname /a/b/
结果为:/a
dirname a
结果为 .
dirname a/b
结果为路径名 a
```

@ -3,17 +3,15 @@
## 说明 ## 说明
**dirs命令** 显示当前目录栈中的所有记录不带参数的dirs命令显示当前目录栈中的记录。dirs始终显示当然目录, 再是堆栈中的内容; **dirs命令** 显示当前目录栈中的所有记录不带参数的dirs命令显示当前目录栈中的记录。dirs始终显示当然目录, 再是堆栈中的内容;
即使目录堆栈为空, dirs命令仍然只显示当然目录 即使目录堆栈为空, dirs命令仍然只显示当然目录使用pushd命令将目录添加到列表中该 popd命令从列表中删除目录当前目录始终是堆栈中的第一个目录
## 选项
```markdown ```markdown
-c删除目录栈中的所有记录 -c 删除目录栈中的所有记录
-l:以完整格式显示 -l 以完整格式显示;默认列表格式使用波浪号表示主目录
-p一个目录一行的方式显示 -p 一个目录一行的方式显示
-v:每行一个目录来显示目录栈的内容,每个目录前加上的编号 -v 每行一个目录来显示目录栈的内容,每个目录前加上索引
+N显示从左到右的第n个目录数字从0开始 +N 显示从左到右的第n个目录数字从0开始
-N显示从右到左的第n个日录数字从0开始 -N 显示从右到左的第n个日录数字从0开始
``` ```
@ -22,5 +20,3 @@
```bash ```bash
dirs dirs
``` ```

@ -5,8 +5,6 @@
**dmesg命令** 被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息可利用dmesg来查看。 **dmesg命令** 被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息可利用dmesg来查看。
开机信息保存在`/var/log/dmesg`文件里 开机信息保存在`/var/log/dmesg`文件里
## 选项
```markdown ```markdown
-C, --clear 清除内核环形缓冲区(ring butter) -C, --clear 清除内核环形缓冲区(ring butter)
-c, --read-clear 读取并清除所有消息 -c, --read-clear 读取并清除所有消息
@ -58,5 +56,4 @@
```bash ```bash
dmesg | grep sda # 查看硬盘基础信息 dmesg | grep sda # 查看硬盘基础信息
``` ```

@ -28,6 +28,7 @@ dpkg -l #列出当前已安装的包
dpkg -c package.deb #列出deb包的内容 dpkg -c package.deb #列出deb包的内容
dpkg --configure package #配置包 dpkg --configure package #配置包
echo -e "$(( $(dpkg -l | wc -l) -5 ))" # 所有已安装的包总数 echo -e "$(( $(dpkg -l | wc -l) -5 ))" # 所有已安装的包总数
```
# 清理debian旧内核
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/-/\1/")"'/d;s/^[^ ]* [^ ]* .*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
```

@ -4,8 +4,6 @@
**du命令** 也是查看使用空间的但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看还是和df命令有一些区别 **du命令** 也是查看使用空间的但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看还是和df命令有一些区别
## 选项
```markdown ```markdown
-a或-all 显示目录中个别文件的大小 -a或-all 显示目录中个别文件的大小
-b或-bytes 显示目录或文件大小时以byte为单位 -b或-bytes 显示目录或文件大小时以byte为单位
@ -32,6 +30,3 @@ du -sh * | sort -k1,1rh | head -n 10 # 当前目录下所占空间倒序排
# 统计目录下文件的大小按M打印显示 # 统计目录下文件的大小按M打印显示
du $1 --max-depth=1 | sort -n|awk '{printf "%7.2fM ----> %s\n",$1/1024,$2}'|sed 's:/.*/\([^/]\{1,\}\)$:\1:g' du $1 --max-depth=1 | sort -n|awk '{printf "%7.2fM ----> %s\n",$1/1024,$2}'|sed 's:/.*/\([^/]\{1,\}\)$:\1:g'
``` ```

@ -48,6 +48,7 @@ openssl rand -base64 4 # 方法二
cat /proc/sys/kernel/random/uuid | cut -c 1-8 # 方法三 cat /proc/sys/kernel/random/uuid | cut -c 1-8 # 方法三
< /dev/urandom tr -dc A-Za-z0-9 | head -c8;echo # 方法四 < /dev/urandom tr -dc A-Za-z0-9 | head -c8;echo # 方法四
date +%s | sha256sum | base64 | head -c 8;echo # 方法五 date +%s | sha256sum | base64 | head -c 8;echo # 方法五
tr -dc "[:alnum:]" < /dev/urandom | head -c 8 # 方法六
# 获取8位随机数字 # 获取8位随机数字
echo $RANDOM | cksum | cut -c 1-8 # 方法一 echo $RANDOM | cksum | cut -c 1-8 # 方法一

@ -4,8 +4,6 @@
**expr命令** 是一款表达式计算工具,使用它完成表达式的求值操作 **expr命令** 是一款表达式计算工具,使用它完成表达式的求值操作
## 选项
```markdown ```markdown
将表达式的值列印到标准输出,分隔符下面的空行可提升算式优先级 将表达式的值列印到标准输出,分隔符下面的空行可提升算式优先级
可用的表达式有: 可用的表达式有:
@ -58,5 +56,3 @@ result=`expr 2 + 3`
result=$(expr $no1 + 5) result=$(expr $no1 + 5)
``` ```

@ -7,8 +7,6 @@
统管理任务只是为了找出一个知道存放在哪里的文件find可以遍历当前目录甚至整个文件系统查找文件或目录。即使系统中含有网络 统管理任务只是为了找出一个知道存放在哪里的文件find可以遍历当前目录甚至整个文件系统查找文件或目录。即使系统中含有网络
文件系统(NFS)find命令在该文件系统中同样有效只要你具有相应的权限 文件系统(NFS)find命令在该文件系统中同样有效只要你具有相应的权限
## 选项
```markdown ```markdown
用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] 用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

@ -4,17 +4,13 @@
**fmt命令** 读取文件的内容,根据选项的设置对文件格式进行简单的优化处理,并将结果送到标准输出设备 **fmt命令** 读取文件的内容,根据选项的设置对文件格式进行简单的优化处理,并将结果送到标准输出设备
## 选项
```markdown ```markdown
-c --crown-margin 保持前两行的缩进 -c --crown-margin 保持前两行的缩进
-p, --prefix=字符串 只对以指定字符串开头的行重新格式化,将前缀重新附着到被重新格式化的行上 -p, --prefix=字符串 只对以指定字符串开头的行重新格式化,将前缀重新附着到被重新格式化的行上
-s, --split-only 分割过长的行,但不自动补足 -s, --split-only 分割过长的行,但不自动补足
-t, --tagged-paragraph indentation of first line different from second -t, --tagged-paragraph indentation of first line different from second
-u, --uniform-spacing one space between words, two after sentences -u, --uniform-spacing one space between words, two after sentences
-w, --width=WIDTH maximum line width (default of 75 columns) -w, --width=WIDTH maximum line width (default of 75 columns)
-g, --goal=WIDTH goal width (default of 93% of width) -g, --goal=WIDTH goal width (default of 93% of width)
``` ```

@ -4,8 +4,6 @@
**free命令** 可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区 **free命令** 可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区
## 选项
```markdown ```markdown
-b, --bytes Bytes为单位显示内存使用 -b, --bytes Bytes为单位显示内存使用
-k, --kilo KB为单位显示内存使用(默认) -k, --kilo KB为单位显示内存使用(默认)
@ -26,7 +24,6 @@
-s, --seconds seconds 间隔几秒显示结果,实际上可以指定任意浮点数 -s, --seconds seconds 间隔几秒显示结果,实际上可以指定任意浮点数
--si Use power of 1000 not 1024 --si Use power of 1000 not 1024
-t, --total 在一行以总和的形式显示内存的使用信息 -t, --total 在一行以总和的形式显示内存的使用信息
``` ```
## 实例 ## 实例
@ -36,7 +33,7 @@ free -t # 以总和的形式显示内存的使用信息
free -s 10 # 周期性的查询内存使用信息每10s 执行一次命令 free -s 10 # 周期性的查询内存使用信息每10s 执行一次命令
``` ```
## free输出解释 ## free输出解释
```markdown ```markdown
total 安装的总内存 (MemTotal and SwapTotal in /proc/meminfo) total 安装的总内存 (MemTotal and SwapTotal in /proc/meminfo)
@ -74,4 +71,3 @@ Buffer cache是针对磁盘块的缓存也就是在没有文件系统的情
如果直接采用dd等工具对磁盘进行读写那么数据会缓存到buffer cache 如果直接采用dd等工具对磁盘进行读写那么数据会缓存到buffer cache
``` ```

@ -5,8 +5,6 @@
**ftp命令** 用来设置文件系统相关功能。ftp服务器在网上较为常见Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件 **ftp命令** 用来设置文件系统相关功能。ftp服务器在网上较为常见Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件
这里详细介绍Linux ftp命令的一些经常使用的命令相信掌握了这些使用Linux进行ftp操作将会非常容易 这里详细介绍Linux ftp命令的一些经常使用的命令相信掌握了这些使用Linux进行ftp操作将会非常容易
## 选项
```markdown ```markdown
-d详细显示指令执行过程便于排错或分析程序执行的情况 -d详细显示指令执行过程便于排错或分析程序执行的情况
-i关闭互动模式不询问任何问题 -i关闭互动模式不询问任何问题
@ -54,6 +52,3 @@ ftp> ? [command] # 同HELP. [command]指定需要帮助的命令名称。如果
ftp> ! # 从 ftp 子系统退出到外壳 ftp> ! # 从 ftp 子系统退出到外壳
``` ```

@ -7,14 +7,12 @@
每个进程号后面都跟随一个字母,该字母指示进程如何使用文件 每个进程号后面都跟随一个字母,该字母指示进程如何使用文件
* c指示进程的工作目录 * c指示进程的工作目录
* e指示该文件为进程的可执行文件(即进程由该文件拉起) * e指示该文件为进程的可执行文件(即进程由该文件拉起)
* f指示该文件被进程打开默认情况下f字符不显示 * f指示该文件被进程打开默认情况下f字符不显示
* F指示该文件被进程打开进行写入默认情况下F字符不显示 * F指示该文件被进程打开进行写入默认情况下F字符不显示
* r指示该目录为进程的根目录 * r指示该目录为进程的根目录
* m指示进程使用该文件进行内存映射抑或该文件为共享库文件被进程映射进内存 * m指示进程使用该文件进行内存映射抑或该文件为共享库文件被进程映射进内存
## 选项
```markdown ```markdown
-a显示命令行中指定的所有文件 -a显示命令行中指定的所有文件
@ -42,5 +40,4 @@ fuser -kxuc /home
comment comment
fuser -d /usr文件 # 要列出正在使用已从给定文件系统删除的文件的全部进程 fuser -d /usr文件 # 要列出正在使用已从给定文件系统删除的文件的全部进程
``` ```

@ -4,8 +4,6 @@
**groupmod命令** 更改群组识别码或名称。需要更改群组的识别码或名称时可用groupmod指令来完成这项工作 **groupmod命令** 更改群组识别码或名称。需要更改群组的识别码或名称时可用groupmod指令来完成这项工作
## 选项
```markdown ```markdown
用法groupmod [选项] 组 用法groupmod [选项] 组
@ -23,5 +21,4 @@
```bash ```bash
groupmod -n cisco web # 将组名web改成cisco groupmod -n cisco web # 将组名web改成cisco
groupmod -g 9999 web # 创建web组的同时指定gid为9999 groupmod -g 9999 web # 创建web组的同时指定gid为9999
``` ```

@ -1,36 +1,11 @@
groups # groups
===
用来打印指定用户所属的工作组
## 说明 ## 说明
**groups命令** 在标准输入输出上输出指定用户所在组的组成员,每个用户属于`/etc/passwd`中指定的一个组和在`/etc/group`中指定的其他组 **groups命令** 在标准输入输出上输出指定用户所在组的组成员,每个用户属于`/etc/passwd`中指定的一个组和在`/etc/group`中指定的其他组
## 选项
```
groups(选项)(参数)
```
```
-help显示命令的帮助信息
--version显示命令的版本信息
```
### 参数
用户名:指定要打印所属工作组的用户名
## 实例 ## 实例
显示linux用户所属的组 ```bash
groups ops # 显示ops用户所属的组
``` ```
groups linux
linux : linux adm dialout cdrom plugdev lpadmin admin sambashare
```

@ -1 +1,24 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> # **gzip**
```markdown
-c, --stdout ????????????????????
-d, --decompress ????
-f, --force ??????????????????
-k, --keep keep (don't delete) input files
-l, --list ??????????
-L, --license display software license
-n, --no-name ???????????????????
-N, --name ??????????????????
-q, --quiet ???????
-r, --recursive ????
--rsyncable make rsync-friendly archive
-S, --suffix=SUF use suffix SUF on compressed files
--synchronous synchronous output (safer if system crashes, but slower)
-t, --test ?????????
-v, --verbose ????????
-V, --version display version number
-1, --fast ????
-9, --best ????
????????? - ??????????
```

@ -4,8 +4,6 @@
**hdparm命令** 提供了一个命令行的接口用于读取和设置IDE或SCSI硬盘参数 **hdparm命令** 提供了一个命令行的接口用于读取和设置IDE或SCSI硬盘参数
## 选项
```markdown ```markdown
-a<快取分区>:设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定 -a<快取分区>:设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定
-A<01>:启动或关闭读取文件时的快取功能 -A<01>:启动或关闭读取文件时的快取功能

@ -21,4 +21,5 @@ GB 1000*1000*1000, G 1024*1024*1024, 对于T, P, E, Z, Y 同样适用
```bash ```bash
head -1 file # 显示file文件第一行 head -1 file # 显示file文件第一行
head -n1 /etc/issue # 查看操作系统版本,不一定每个系统都能看到 head -n1 /etc/issue # 查看操作系统版本,不一定每个系统都能看到
head -c 10MB /dev/zero > daygeek4.txt # 创建10M大小的文件
``` ```

@ -22,6 +22,3 @@
```bash ```bash
history -c # 清空历史记录 history -c # 清空历史记录
``` ```

@ -4,8 +4,6 @@
**host命令** 是常用的分析域名查询工具,可以用来测试域名系统工作是否正常 **host命令** 是常用的分析域名查询工具,可以用来测试域名系统工作是否正常
## 选项
```markdown ```markdown
-a显示详细的DNS信息 -a显示详细的DNS信息
-c<类型>指定查询类型默认值为IN -c<类型>指定查询类型默认值为IN
@ -22,6 +20,5 @@
## 实例 ## 实例
```bash ```bash
host www.jsdig.com host www.jsdig.com
``` ```

@ -6,8 +6,6 @@
统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改`/etc/hosts`和 统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改`/etc/hosts`和
`/etc/sysconfig/network`的相关内容 `/etc/sysconfig/network`的相关内容
## 选项
```markdown ```markdown
Usage: hostname [-b] {hostname|-F file} set host name (from file) Usage: hostname [-b] {hostname|-F file} set host name (from file)
hostname [-a|-A|-d|-f|-i|-I|-s|-y] display formatted name hostname [-a|-A|-d|-f|-i|-I|-s|-y] display formatted name
@ -32,7 +30,6 @@ Program name:
-I, --all-ip-addresses all addresses for the host -I, --all-ip-addresses all addresses for the host
-s, --short 显示短主机名称,在第一个点处截断 -s, --short 显示短主机名称,在第一个点处截断
-y, --yp, --nis 显示NIS/YP域名 -y, --yp, --nis 显示NIS/YP域名
``` ```
## 实例 ## 实例
@ -40,5 +37,3 @@ Program name:
```bash ```bash
hostname -i # 查寻本地主机的IP地址同等于host `hostname` hostname -i # 查寻本地主机的IP地址同等于host `hostname`
``` ```

@ -11,8 +11,6 @@ RTC是电脑内建的硬件时间执行这项指令可以显示现在时刻
指kernel中的时钟。当Linux启动时系统时钟会去读取硬件时钟的设定之后系统时钟即独立运作。所有Linux相关指令与函数都是读取 指kernel中的时钟。当Linux启动时系统时钟会去读取硬件时钟的设定之后系统时钟即独立运作。所有Linux相关指令与函数都是读取
系统时钟的设定 系统时钟的设定
## 选项
```markdown ```markdown
clock命令和hwclock相同 clock命令和hwclock相同

@ -1,4 +1,4 @@
# iconv # **iconv**
## 说明 ## 说明
@ -6,8 +6,6 @@
Linux下的iconv开发库包括iconv_open,iconv_close,iconv等C函数可以用来在C/C++程序中很方便的转换字符编码,这在抓取网页的程序中很有用处, Linux下的iconv开发库包括iconv_open,iconv_close,iconv等C函数可以用来在C/C++程序中很方便的转换字符编码,这在抓取网页的程序中很有用处,
而iconv命令在调试此类程序时用得着 而iconv命令在调试此类程序时用得着
## 选项
```markdown ```markdown
输入/输出格式规范: 输入/输出格式规范:
-f, --from-code=名称 原始文本编码 -f, --from-code=名称 原始文本编码
@ -21,7 +19,6 @@ Linux下的iconv开发库包括iconv_open,iconv_close,iconv等C函数可以
-o, --output=FILE 输出文件 -o, --output=FILE 输出文件
-s, --silent 关闭警告 -s, --silent 关闭警告
--verbose 打印进度信息 --verbose 打印进度信息
``` ```
## 实例 ## 实例
@ -30,5 +27,3 @@ Linux下的iconv开发库包括iconv_open,iconv_close,iconv等C函数可以
iconv -l # 列出当前支持的字符编码 iconv -l # 列出当前支持的字符编码
iconv file1 -f EUC-JP-MS -t UTF-8 -o file2 # 将文件file1转码转后文件输出到fil2中。没`-o`那么会输出到标准输出 iconv file1 -f EUC-JP-MS -t UTF-8 -o file2 # 将文件file1转码转后文件输出到fil2中。没`-o`那么会输出到标准输出
``` ```

@ -8,8 +8,6 @@
当我们想知道某个用户的UID和GID时id命令是非常有用的。一些程序可能需要UID/GID来运行。id使我们更加容易地找出用户的UID以GID而不必在 当我们想知道某个用户的UID和GID时id命令是非常有用的。一些程序可能需要UID/GID来运行。id使我们更加容易地找出用户的UID以GID而不必在
`/etc/group`文件中搜寻。如往常一样,你可以在控制台输入`man id`进入id的手册页来获取更多的详情 `/etc/group`文件中搜寻。如往常一样,你可以在控制台输入`man id`进入id的手册页来获取更多的详情
## 选项
```markdown ```markdown
-a ignore, for compatibility with other versions -a ignore, for compatibility with other versions
-Z, --context print only the security context of the current user -Z, --context print only the security context of the current user
@ -27,7 +25,4 @@
```bash ```bash
id id
``` ```

@ -5,8 +5,6 @@
**join命令** 用来将两个文件中,制定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到 **join命令** 用来将两个文件中,制定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到
标准输出设备 标准输出设备
## 选项
```markdown ```markdown
-a FILENUM 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行 -a FILENUM 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行
-e EMPTY 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串 -e EMPTY 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串
@ -14,13 +12,13 @@
-j FIELD equivalent to '-1 FIELD -2 FIELD' -j FIELD equivalent to '-1 FIELD -2 FIELD'
-o FORMAT 按照指定的格式来显示结果 -o FORMAT 按照指定的格式来显示结果
-t CHAR 使用栏位的分割字符 -t CHAR 使用栏位的分割字符
-v 文件编号 类似 -a 文件编号,但禁止组合输出行 -v 文件编号 类似 -a 文件编号,但禁止组合输出行
-1 域 在文件1 的此域组合 -1 域 在文件1 的此域组合
-2 域 在文件2 的此域组合 -2 域 在文件2 的此域组合
--check-order 检查输入行是否正确排序,即使所有输入行均是成对的 --check-order 检查输入行是否正确排序,即使所有输入行均是成对的
--nocheck-order 不检查输入是否正确排序 --nocheck-order 不检查输入是否正确排序
--header 将首行视作域的头部,直接输出而不对其进行匹配 --header 将首行视作域的头部,直接输出而不对其进行匹配
-z, --zero-terminated 以0 字节而非新行作为行尾标志 -z, --zero-terminated 以0 字节而非新行作为行尾标志
``` ```

@ -7,8 +7,6 @@
**lastb命令** Lastb与last相同但默认情况下它显示文件/var/log/btmp的日志其中包含所有错误的登录尝试 **lastb命令** Lastb与last相同但默认情况下它显示文件/var/log/btmp的日志其中包含所有错误的登录尝试
## 选项
```markdown ```markdown
-f file 让last指定记录文件替代默认的/var/log/wtmp -f file 让last指定记录文件替代默认的/var/log/wtmp
-num 指定last命令显示的行数 -num 指定last命令显示的行数
@ -30,5 +28,3 @@
```bash ```bash
last reboot # 显示上次用户登录列表 last reboot # 显示上次用户登录列表
``` ```

@ -5,11 +5,9 @@
**let命令** 是bash中用于计算的工具提供常用运算符还提供了方幂`**`运算符。在变量的房屋计算中不需要加上`$`来表示变量, **let命令** 是bash中用于计算的工具提供常用运算符还提供了方幂`**`运算符。在变量的房屋计算中不需要加上`$`来表示变量,
如果表达式的值是非0那么返回的状态值是0否则返回的状态值是1 如果表达式的值是非0那么返回的状态值是0否则返回的状态值是1
## 选项
```markdown ```markdown
自加操作`let no++` 自加操作`let no++`
自减操作`let no--` 自减操作`let no--`
简写形式`let no+=10``let no-=20`,分别等同于`let no=no+10``let no=no-20` 简写形式`let no+=10``let no-=20`,分别等同于`let no=no+10``let no=no-20`
``` ```
@ -24,5 +22,3 @@ echo $a $b
let "t1 = ((a = 5 + 3, b = 7 - 1, c = 15 - 4))" let "t1 = ((a = 5 + 3, b = 7 - 1, c = 15 - 4))"
echo "t1 = $t1, a = $a, b = $b" echo "t1 = $t1, a = $a, b = $b"
``` ```

@ -13,8 +13,6 @@
* 源文件和链接文件同步更新 * 源文件和链接文件同步更新
* 支持跨文件系统创建链接文件 * 支持跨文件系统创建链接文件
## 选项
```markdown ```markdown
用法ln [选项] [-T] 目标 链接名 (第一种格式) 用法ln [选项] [-T] 目标 链接名 (第一种格式)
 ln [选项] 目标 (第二种格式)  ln [选项] 目标 (第二种格式)
@ -29,10 +27,10 @@
创建硬链接时每个TARGET必须存在。 符号链接可以包含任意文本; 如果以后解析,则会相对于其父目录解释相对链接 创建硬链接时每个TARGET必须存在。 符号链接可以包含任意文本; 如果以后解析,则会相对于其父目录解释相对链接
Mandatory arguments to long options are mandatory for short options too. Mandatory arguments to long options are mandatory for short options too.
--backup[=CONTROL] 为每个已存在的目标文件创建备份文件 --backup[=CONTROL] 为每个已存在的目标文件创建备份文件
-b 类似--backup但不接受任何参数 -b 类似--backup但不接受任何参数
-d, -F, --directory 创建指向目录的硬链接(只适用于超级用户) -d, -F, --directory 创建指向目录的硬链接(只适用于超级用户)
-f, --force 强行删除任何已存在的目标文件 -f, --force 强行删除任何已存在的目标文件
-i, --interactive 删除已存在文件之前先询问用户 -i, --interactive 删除已存在文件之前先询问用户
-L, --logical dereference TARGETs that are symbolic links -L, --logical dereference TARGETs that are symbolic links
-n, --no-dereference 如果符号链接是一个目录也将其链接名称视作一个普通文件 -n, --no-dereference 如果符号链接是一个目录也将其链接名称视作一个普通文件
@ -72,8 +70,7 @@ ln -s /usr/mengqc/mub1 /usr/liu/abc
``` ```
## 扩展知识
## 扩展知识
文件链接有两种形式,即硬链接和符号链接 文件链接有两种形式,即硬链接和符号链接
@ -99,10 +96,10 @@ Linux具有为一个文件起多个名字的功能称为链接。被链接的
对硬链接有如下限制: 对硬链接有如下限制:
* 不能对目录文件做硬链接 * 不能对目录文件做硬链接
* 不能在不同的文件系统之间做硬链接。就是说,链接文件和被链接文件必须位于同一个文件系统中 * 不能在不同的文件系统之间做硬链接。就是说,链接文件和被链接文件必须位于同一个文件系统中
### 软,硬链接不同点 ### 软,硬链接不同点
如果源文件被删除的话,软连接文件只是一个符号链接,因此软连接文件不可访问。硬链接文件是可以访问的,相当于源文件的一个拷贝 如果源文件被删除的话,软连接文件只是一个符号链接,因此软连接文件不可访问。硬链接文件是可以访问的,相当于源文件的一个拷贝
大小内容是一样的,同步更新 大小内容是一样的,同步更新
@ -116,7 +113,7 @@ Linux具有为一个文件起多个名字的功能称为链接。被链接的
切记inode是内核调用的数字标识 切记inode是内核调用的数字标识
### 符号链接 ### 符号链接
符号链接也称为软链接是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。事实上它只是一个文本文件如图中的abc文件 符号链接也称为软链接是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。事实上它只是一个文本文件如图中的abc文件
其中包含它提供链接的另一个文件的路径名,如图中虚线箭头所示。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于 其中包含它提供链接的另一个文件的路径名,如图中虚线箭头所示。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于
@ -131,12 +128,9 @@ Linux具有为一个文件起多个名字的功能称为链接。被链接的
符号链接保持了链接与源文件或目录之间的区别: 符号链接保持了链接与源文件或目录之间的区别:
* 删除源文件或目录,只删除了数据,不会删除链接。一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据 * 删除源文件或目录,只删除了数据,不会删除链接。一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据
* 在目录长列表中符号链接作为一种特殊的文件类型显示出来其第一个字母是l * 在目录长列表中符号链接作为一种特殊的文件类型显示出来其第一个字母是l
* 符号链接的大小是其链接文件的路径名中的字节数 * 符号链接的大小是其链接文件的路径名中的字节数
* 当用`ln -s`命令列出文件时,可以看到符号链接名后有一个箭头指向源文件或目录,例如: * 当用`ln -s`命令列出文件时,可以看到符号链接名后有一个箭头指向源文件或目录,例如:
lrwxrwxrwx … 14 jun 20 10:20 /etc/motd->/original_file其中表示“文件大小”的数字“14”恰好说明源文件名original_file lrwxrwxrwx … 14 jun 20 10:20 /etc/motd->/original_file其中表示“文件大小”的数字“14”恰好说明源文件名original_file
由14个字符构成 由14个字符构成

@ -13,4 +13,3 @@ login [ -p ] [ -h 主机 ] [ -H ] [ -f 用户名 | 用户名 ]
-p 告诉login指令不销毁环境变量 -p 告诉login指令不销毁环境变量
-h 指定远程服务器的主机名 -h 指定远程服务器的主机名
``` ```

@ -1,22 +1,13 @@
lsmod # lsmod
===
显示已载入系统的模块
## 说明 ## 说明
**lsmod命令** 用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性应此在编译核心时务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块待需要时再分别载入 **lsmod命令** 用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性应此在编译核心时务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块待需要时再分别载入
## 选项
```
lsmod
```
## 实例 ## 实例
``` ```markdown
[root@LinServ-1 ~]# lsmod [root@server-1 ~]# lsmod
Module Size Used by Module Size Used by
ipv6 272801 15 ipv6 272801 15
xfrm_nalgo 13381 1 ipv6 xfrm_nalgo 13381 1 ipv6
@ -92,11 +83,9 @@ ohci_hcd 24937 0
ehci_hcd 34509 0 ehci_hcd 34509 0
``` ```
* 第1列表示模块的名称 * 第1列表示模块的名称
* 第2列表示模块的大小 * 第2列表示模块的大小
* 第3列表示依赖模块的个数 * 第3列表示依赖模块的个数
* 第4列表示依赖模块的内容 * 第4列表示依赖模块的内容
通常在使用lsmod命令时都会采用类似`lsmod | grep -i ext3`这样的命令来查询当前系统是否加载了某些模块 通常在使用lsmod命令时都会采用类似`lsmod | grep -i ext3`这样的命令来查询当前系统是否加载了某些模块

@ -35,9 +35,9 @@ Defaults in parentheses; comma-separated set (s) items; dash-separated ranges.
-s list file size -t terse listing -T disable TCP/TPI info -s list file size -t terse listing -T disable TCP/TPI info
-U select Unix socket -v list version info -V verbose search -U select Unix socket -v list version info -V verbose search
+|-w Warnings (+) -X skip TCP&UDP* files -Z Z context [Z] +|-w Warnings (+) -X skip TCP&UDP* files -Z Z context [Z]
-- end option scan -- end option scan
+f|-f +filesystem or -file names +|-f[gG] flaGs +f|-f +filesystem or -file names +|-f[gG] flaGs
-F [f] select fields; -F? for help -F [f] select fields; -F? for help
+|-L [l] list (+) suppress (-) link counts < l (0 = all; default = 0) +|-L [l] list (+) suppress (-) link counts < l (0 = all; default = 0)
+m [m] use|create mount supplement +m [m] use|create mount supplement
+|-M portMap registration (-) -o o o 0t offset digits (8) +|-M portMap registration (-) -o o o 0t offset digits (8)
@ -53,7 +53,6 @@ Defaults in parentheses; comma-separated set (s) items; dash-separated ranges.
-x [fl] cross over +d|+D File systems or symbolic Links -x [fl] cross over +d|+D File systems or symbolic Links
names select named files or files on named file systems names select named files or files on named file systems
Anyone can list all files; /dev warnings disabled; kernel ID check disabled. Anyone can list all files; /dev warnings disabled; kernel ID check disabled.
``` ```
## 详解 ## 详解
@ -127,5 +126,4 @@ lsof输出各列信息的意义如下:
lsof -i # 列出所有的网络连接或端口 lsof -i # 列出所有的网络连接或端口
lsof ~ # 查看打开用户目录的进程 lsof ~ # 查看打开用户目录的进程
lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh # 杀掉80端口相关的进程 lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh # 杀掉80端口相关的进程
``` ```

@ -4,8 +4,6 @@
**lspci命令** 用于显示当前主机的所有PCI总线信息以及所有已连接的PCI设备信息 **lspci命令** 用于显示当前主机的所有PCI总线信息以及所有已连接的PCI设备信息
## 选项
```markdown ```markdown
-n以数字方式显示PCI厂商和设备代码 -n以数字方式显示PCI厂商和设备代码
-t以树状结构显示PCI设备的层次关系包括所有的总线、桥、设备以及它们之间的联接 -t以树状结构显示PCI设备的层次关系包括所有的总线、桥、设备以及它们之间的联接
@ -18,42 +16,40 @@
Usage: lspci [<switches>] Usage: lspci [<switches>]
Basic display modes: Basic display modes:
-mm Produce machine-readable output (single -m for an obsolete format) -mm Produce machine-readable output (single -m for an obsolete format)
-t Show bus tree -t Show bus tree
Display options: Display options:
-v Be verbose (-vv for very verbose) -v Be verbose (-vv for very verbose)
-k Show kernel drivers handling each device -k Show kernel drivers handling each device
-x Show hex-dump of the standard part of the config space -x Show hex-dump of the standard part of the config space
-xxx Show hex-dump of the whole config space (dangerous; root only) -xxx Show hex-dump of the whole config space (dangerous; root only)
-xxxx Show hex-dump of the 4096-byte extended config space (root only) -xxxx Show hex-dump of the 4096-byte extended config space (root only)
-b Bus-centric view (addresses and IRQ's as seen by the bus) -b Bus-centric view (addresses and IRQ's as seen by the bus)
-D Always show domain numbers -D Always show domain numbers
Resolving of device ID's to names: Resolving of device ID's to names:
-n Show numeric ID's -n Show numeric ID's
-nn Show both textual and numeric ID's (names & numbers) -nn Show both textual and numeric ID's (names & numbers)
-q Query the PCI ID database for unknown ID's via DNS -q Query the PCI ID database for unknown ID's via DNS
-qq As above, but re-query locally cached entries -qq As above, but re-query locally cached entries
-Q Query the PCI ID database for all ID's via DNS -Q Query the PCI ID database for all ID's via DNS
Selection of devices: Selection of devices:
-s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]] Show only devices in selected slots -s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]] Show only devices in selected slots
-d [<vendor>]:[<device>][:<class>] Show only devices with specified ID's -d [<vendor>]:[<device>][:<class>] Show only devices with specified ID's
Other options: Other options:
-i <file> Use specified ID database instead of /usr/share/hwdata/pci.ids -i <file> Use specified ID database instead of /usr/share/hwdata/pci.ids
-p <file> Look up kernel modules in a given file instead of default modules.pcimap -p <file> Look up kernel modules in a given file instead of default modules.pcimap
-M Enable `bus mapping' mode (dangerous; root only) -M Enable `bus mapping' mode (dangerous; root only)
PCI access options: PCI access options:
-A <method> Use the specified PCI access method (see `-A help' for a list) -A <method> Use the specified PCI access method (see `-A help' for a list)
-O <par>=<val> Set PCI access parameter (see `-O help' for a list) -O <par>=<val> Set PCI access parameter (see `-O help' for a list)
-G Enable PCI access debugging -G Enable PCI access debugging
-H <mode> Use direct hardware access (<mode> = 1 or 2) -H <mode> Use direct hardware access (<mode> = 1 or 2)
-F <file> Read PCI configuration dump from a given file -F <file> Read PCI configuration dump from a given file
``` ```
## 实例 ## 实例
@ -62,7 +58,4 @@ PCI access options:
lspci -tv # 显示PCI信息 lspci -tv # 显示PCI信息
lspci | grep Ethernet # 显示网卡信息 lspci | grep Ethernet # 显示网卡信息
lspci | grep VGA lspci | grep VGA
``` ```

@ -7,8 +7,6 @@
lsusb命令是一个学习USB驱动开发认识USB设备的助手推荐大家使用如果您的开发板中或者产品中没有lsusb命令可以自己移植 lsusb命令是一个学习USB驱动开发认识USB设备的助手推荐大家使用如果您的开发板中或者产品中没有lsusb命令可以自己移植
一个,放到文件系统里面 一个,放到文件系统里面
## 选项
```markdown ```markdown
-v显示USB设备的详细信息 -v显示USB设备的详细信息
-s<总线:设备号>仅显示指定的总线和(或)设备号的设备 -s<总线:设备号>仅显示指定的总线和(或)设备号的设备
@ -22,46 +20,40 @@ lsusb命令是一个学习USB驱动开发认识USB设备的助手推荐大
```bash ```bash
: << comment : << comment
插入usb鼠标后执行lsusb的输出内容如下: 插入usb鼠标后执行lsusb的输出内容如下:
Bus 005 Device 001: id 0000:0000 Bus 005 Device 001: id 0000:0000
Bus 001 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000 Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000 Bus 003 Device 001: ID 0000:0000
Bus 002 Device 006: ID 15d9:0a37 Bus 002 Device 006: ID 15d9:0a37
Bus 002 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000
comment comment
``` ```
解释: 解释:
**Bus 005** * Bus 005
表示第五个usb主控制器(机器上总共有5个usb主控制器 -- 可以通过命令lspci | grep USB查看) 表示第五个usb主控制器(机器上总共有5个usb主控制器 -- 可以通过命令lspci | grep USB查看)
**Device 006** * Device 006
表示系统给usb鼠标分配的设备号(devnum)同时也可以看到该鼠标是插入到了第二个usb主控制器 表示系统给usb鼠标分配的设备号(devnum)同时也可以看到该鼠标是插入到了第二个usb主控制器
```
006 usb_device.devnum 006 usb_device.devnum
/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2/devnum /sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2/devnum
```
**ID 15d9:0a37** ID 15d9:0a37
表示usb设备的ID这个ID由芯片制造商设置可以唯一表示该设备 表示usb设备的ID这个ID由芯片制造商设置可以唯一表示该设备
```
15d9 usb_device_descriptor.idVendor 15d9 usb_device_descriptor.idVendor
0a37 usb_device_descriptor.idProduct 0a37 usb_device_descriptor.idProduct
/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2/idVendor /sys/devices/pci0000:00/0000:00:1d.1/usb2/2-2/idVendor
```
**Bus 002 Device 006: ID 15d9:0a37 **Bus 002 Device 006: ID 15d9:0a37
Bus 002 Device 001: ID 0000:0000** Bus 002 Device 001: ID 0000:0000**
表示002号usb主控制器上接入了两个设备: 表示002号usb主控制器上接入了两个设备:
* 一个是usb根Hub -- 001  * 一个是usb根Hub -- 001
* 一个是usb鼠标  -- 006 * 一个是usb鼠标  -- 006

@ -1,21 +1,10 @@
ltrace # ltrace
===
用来跟踪进程调用库函数的情况
## 说明 ## 说明
**ltrace命令** 是用来跟踪进程调用库函数的情况 **ltrace命令** 是用来跟踪进程调用库函数的情况
## 选项 ```markdown
```
ltrace [option ...] [command [arg ...]]
```
```
-a 对齐具体某个列的返回值 -a 对齐具体某个列的返回值
-c 计算时间和调用,并在程序退出时打印摘要 -c 计算时间和调用,并在程序退出时打印摘要
-C 解码低级别名称(内核级)为用户级名称 -C 解码低级别名称(内核级)为用户级名称
@ -43,45 +32,7 @@ ltrace [option ...] [command [arg ...]]
最基本应用,不带任何参数: 最基本应用,不带任何参数:
```bash
ltrace -T ./a.out # 输出调用时间开销
ltrace -S ./a.out # 显示系统调用
``` ```
[guest@localhost tmp]$ ltrace ./a.out
__libc_start_main(0x80484aa, 1, 0xbfc07744, 0x8048550, 0x8048540 <unfinished ...>
printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10 no2:6 diff:4 ) = 24
printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9 no2:7 diff:2 ) = 23
printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8 no2:8 diff:0 ) = 23
--- SIGFPE (Floating point exception) ---
+++ killed by SIGFPE +++
```
输出调用时间开销:
```
[guest@localhost tmp]$ ltrace -T ./a.out
__libc_start_main(0x80484aa, 1, 0xbf81d394, 0x8048550, 0x8048540 <unfinished ...>
printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10 no2:6 diff:4 ) = 24 <0.000972>
printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9 no2:7 diff:2 ) = 23 <0.000155>
printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8 no2:8 diff:0 ) = 23 <0.000153>
--- SIGFPE (Floating point exception) ---
+++ killed by SIGFPE +++
```
显示系统调用:
```
[guest@localhost tmp]$ ltrace -S ./a.out
SYS_brk(NULL) = 0x9e20000
SYS_access(0xa4710f, 4, 0xa4afc0, 0, 0xa4b644) = 0
SYS_open("/etc/ld.so.preload", 0, 02) = 3
SYS_fstat64(3, 0xbfbd7a94, 0xa4afc0, -1, 3) = 0
SYS_mmap2(0, 17, 3, 2, 3) = 0xb7f2a000
SYS_close(3) = 0
SYS_open("/lib/libcwait.so", 0, 00) = 3
SYS_read(3, "\177ELF\001\001\001", 512) = 512
SYS_fstat64(3, 0xbfbd76fc, 0xa4afc0, 4, 0xa4b658) = 0
SYS_mmap2(0, 4096, 3, 34, -1) = 0xb7f29000
SYS_mmap2(0, 5544, 5, 2050, 3) = 0x423000
SYS_mmap2(0x424000, 4096, 3, 2066, 3) = 0x424000
.............省去若干行
```

@ -47,8 +47,7 @@
-Z, --ditroff 使用 groff 并强制它生成 ditroff -Z, --ditroff 使用 groff 并强制它生成 ditroff
``` ```
## 数字所代表内容
### 数字所代表内容
1. 用户在shell环境可操作的命令或执行文件 1. 用户在shell环境可操作的命令或执行文件
2. 系统内核可调用的函数与工具等 2. 系统内核可调用的函数与工具等
@ -60,7 +59,6 @@
8. 系统管理员可用的管理命令 8. 系统管理员可用的管理命令
9. 跟kernel有关的文件 9. 跟kernel有关的文件
## 实例 ## 实例
```bash ```bash

@ -7,15 +7,13 @@
MD5算法常常被用来验证网络文件传输的完整性防止文件被人篡改。MD5 全称是报文摘要算法Message-Digest Algorithm 5此算法对任意长度的 MD5算法常常被用来验证网络文件传输的完整性防止文件被人篡改。MD5 全称是报文摘要算法Message-Digest Algorithm 5此算法对任意长度的
信息逐位进行计算产生一个二进制长度为128位十六进制长度就是32位的“指纹”或称“报文摘要”不同的文件产生相同的报文摘要极小可能性存在 信息逐位进行计算产生一个二进制长度为128位十六进制长度就是32位的“指纹”或称“报文摘要”不同的文件产生相同的报文摘要极小可能性存在
## 选项
```markdown ```markdown
若没有文件选项,或者文件处为"-",则从标准输入读取 若没有文件选项,或者文件处为"-",则从标准输入读取
-b, --binary 以二进制模式读取 -b, --binary 以二进制模式读取
-c, --check 从文件中读取MD5 的校验值并予以检查 -c, --check 从文件中读取MD5 的校验值并予以检查
--tag create a BSD-style checksum --tag create a BSD-style checksum
-t, --text 以纯文本模式读取(默认)[注意GNU系统上的二进制和文本模式选项没有区别] -t, --text 以纯文本模式读取(默认)[注意GNU系统上的二进制和文本模式选项没有区别]
以下四个选项对于验证校验和非常有用 以下四个选项对于验证校验和非常有用
--quiet don't print OK for each successfully verified file --quiet don't print OK for each successfully verified file
@ -32,4 +30,3 @@ md5sum insert.sql # 生成一个文件insert.sql的md5值
md5sum file -c file.md # 检查file是否被修改file.md包含file文件的原始md5值 md5sum file -c file.md # 检查file是否被修改file.md包含file文件的原始md5值
``` ```

@ -4,8 +4,6 @@
**mkdir命令** 用来创建目录 **mkdir命令** 用来创建目录
## 选项
```markdown ```markdown
用法mkdir [选项]... 目录... 用法mkdir [选项]... 目录...

@ -1,7 +1,4 @@
mke2fs # mke2fs
===
创建磁盘分区上的“etc2/etc3”文件系统
## 说明 ## 说明
@ -9,13 +6,7 @@ mke2fs
## 选项 ## 选项
``` ```markdwon
mke2fs(选项)(参数)
```
```
-b<区块大小>:指定区块大小,单位为字节 -b<区块大小>:指定区块大小,单位为字节
-c检查是否有损坏的区块 -c检查是否有损坏的区块
-f<不连续区段大小>:指定不连续区段的大小,单位为字节 -f<不连续区段大小>:指定不连续区段的大小,单位为字节
@ -31,20 +22,10 @@ mke2fs(选项)(参数)
-R=<区块数>:设置磁盘阵列参数 -R=<区块数>:设置磁盘阵列参数
-S仅写入superblock与group descriptors而不更改inode able inode bitmap以及block bitmap -S仅写入superblock与group descriptors而不更改inode able inode bitmap以及block bitmap
-v执行时显示详细信息 -v执行时显示详细信息
-V显示版本信息
``` ```
### 参数
* 设备文件:指定要创建的文件系统的分区设备文件名
* 块数:指定要创建的文件系统的磁盘块数量
## 实例 ## 实例
创建指定的ext2文件系统 ```bash
mke2fs -q /dev/hda1 # 创建指定的ext2文件系统
``` ```
mke2fs -q /dev/hda1
```

@ -5,8 +5,6 @@
**mkswap命令** 用于在一个文件或者设备上建立交换分区。在建立完之后要使用sawpon命令开始使用这个交换区。最后一个选择性参数指定了交换区的 **mkswap命令** 用于在一个文件或者设备上建立交换分区。在建立完之后要使用sawpon命令开始使用这个交换区。最后一个选择性参数指定了交换区的
大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般都将整个文件或者设备作为交换区 大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般都将整个文件或者设备作为交换区
## 选项
```markdown ```markdown
-c建立交换区前先检查是否有损坏的区块 -c建立交换区前先检查是否有损坏的区块
-f在SPARC电脑上建立交换区时要加上此参数 -f在SPARC电脑上建立交换区时要加上此参数
@ -18,23 +16,16 @@
```bash ```bash
swapon -s # 查看当前的swap空间(file(s)/partition(s)),等价于cat /proc/swaps swapon -s # 查看当前的swap空间(file(s)/partition(s)),等价于cat /proc/swaps
```
```bash
# 添加交换空间
mkswap /dev/sdb2
# 启用交换分区 mkswap /dev/sdb2 # 添加交换空间
swapon /dev/sdb2 swapon /dev/sdb2 # 启用交换分区
# 写入`/etc/fstab`,以便在引导时启用 # 写入`/etc/fstab`以下内容,以便在引导时启用
/dev/sdb2 swap swap defaults 0 0 /dev/sdb2 swap swap defaults 0 0
# 添加一个交换文件步骤如下创建大小为512M的交换文件 # 添加一个交换文件步骤如下创建大小为512M的交换文件
dd if=/dev/zero of=/swapfile1 bs=1024 count=524288 dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
```
```bash
# 添加交换文件 # 添加交换文件
# 使用mkswap命令来设置交换文件 # 使用mkswap命令来设置交换文件
mkswap /swapfile1 mkswap /swapfile1
@ -42,17 +33,12 @@ mkswap /swapfile1
启用交换分区 启用交换分区
swapon /swapfile1 swapon /swapfile1
# 写入`/etc/fstab`,以便在引导时启用: # 写入`/etc/fstab`以下内容,以便在引导时启用:
/swapfile1 swap swap defaults 0 0 /swapfile1 swap swap defaults 0 0
# 新添了交换分区并启用它之后,查看`cat /proc/swaps`或free命令的输出来确保交换分区已被启用了 # 新添了交换分区并启用它之后,查看`cat /proc/swaps`或free命令的输出来确保交换分区已被启用了
```
```bash
# 删除交换空间,禁用交换分区:从`/etc/fstab`中删除项目使用fdisk或yast工具删除分区 # 删除交换空间,禁用交换分区:从`/etc/fstab`中删除项目使用fdisk或yast工具删除分区
swapoff /dev/sdb2 swapoff /dev/sdb2
``` ```

@ -4,8 +4,6 @@
**mktemp命令** 被用来创建临时文件供shell脚本使用 **mktemp命令** 被用来创建临时文件供shell脚本使用
## 选项
```markdown ```markdown
-d, --directory 创建一个目录而非文件 -d, --directory 创建一个目录而非文件
-u, --dry-run 不创建任何东西,仅打印出名字。(仅供测试) -u, --dry-run 不创建任何东西,仅打印出名字。(仅供测试)
@ -16,5 +14,3 @@
slashes, but mktemp creates only the final component slashes, but mktemp creates only the final component
``` ```

@ -4,8 +4,6 @@
**mount命令** Linux mount命令是经常会使用到的命令它用于挂载Linux系统外的文件 **mount命令** Linux mount命令是经常会使用到的命令它用于挂载Linux系统外的文件
## 选项
```markdown ```markdown
mount [-lhV] mount [-lhV]
mount -a [选项] mount -a [选项]
@ -67,5 +65,4 @@ mount | column -t # 以表格形式输出
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share # 挂载一个windows共享 mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share # 挂载一个windows共享
mount -o ro /dev/hda1 /mnt 将/dev/hda1用只读模式挂在/mnt之下 mount -o ro /dev/hda1 /mnt 将/dev/hda1用只读模式挂在/mnt之下
mount -o loop /tmp/image.iso /mnt/cdrom # 将/tmp/image.iso光碟的image使用loop模式挂在/mnt/cdrom下。可不烧录检视光碟 mount -o loop /tmp/image.iso /mnt/cdrom # 将/tmp/image.iso光碟的image使用loop模式挂在/mnt/cdrom下。可不烧录检视光碟
``` ```

@ -14,8 +14,6 @@ mv命令可以用来将源文件移至一个目标文件中或将一组文件
注意事项mv与cp的结果不同mv好像文件"搬家"文件个数并未增加。而cp对文件进行复制文件个数增加了 注意事项mv与cp的结果不同mv好像文件"搬家"文件个数并未增加。而cp对文件进行复制文件个数增加了
## 选项
```markdown ```markdown
用法mv [选项]... [-T] 源文件 目标文件 用法mv [选项]... [-T] 源文件 目标文件
 mv [选项]... 源文件... 目录  mv [选项]... 源文件... 目录

@ -1,55 +1,21 @@
newusers # newusers
===
用于批处理的方式一次创建多个命令
## 说明 ## 说明
**newusers命令** 用于批处理的方式一次创建多个命令 **newusers命令** 用于批处理的方式一次创建多个命令
## 选项 ```markdown
-r, --system create system accounts
``` -R, --root CHROOT_DIR directory to chroot into
newusers(参数)
``` ```
### 参数
用户文件:指定包含用户信息的文本文件,文件的格式要与`/etc/passwd`相同
## 实例 ## 实例
实用newusers命令批量添加用户 ```bash
# newusers命令批量添加用户newusers后面直接跟一个文件文件格式和`/etc/passwd`的格式相同
用法很简单newusers后面直接跟一个文件文件格式和`/etc/passwd`的格式相同 :<< comment
```
用户名1:x:UID:GID:用户说明:用户的家目录:所用SHELL 用户名1:x:UID:GID:用户说明:用户的家目录:所用SHELL
```
举例:
```
jingang0:x:520:520::/home/jingang0:/sbin/nologin jingang0:x:520:520::/home/jingang0:/sbin/nologin
jingang1:x:521:521::/home/jingang1:/sbin/nologin jingang1:x:521:521::/home/jingang1:/sbin/nologin
...... comment
```
值得一提的是关于SHELL类型查看主机上所有SHELL可以通过chsh来查看
``` ```
[root@localhost beinan]# chsh --list
/bin/sh
/bin/bash
/sbin/nologin
/bin/ksh
/bin/tcsh
/bin/csh
/bin/zsh
```
其中除了`/sbin/nologin`其它类型的SHELL都能登录系统nologin大多是虚拟用户用的SHELL也就是说虽然他是系统用户但他并无登录系统的权限如果您想添加这类用户就把他的SHELL设置成`/sbin/nologin`,比如上面的例子
关于用户名、UID、GID及用户的家目录是怎么回事您可以读相应的参考文档

@ -8,8 +8,6 @@
到`$HOME/nohup.out`文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。如果标准错误是一个终端,那么把 到`$HOME/nohup.out`文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。如果标准错误是一个终端,那么把
指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符 指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符
## 选项
```markdown ```markdown
If standard input is a terminal, redirect it from /dev/null If standard input is a terminal, redirect it from /dev/null
If standard output is a terminal, append output to 'nohup.out' if possible,'$HOME/nohup.out' otherwise If standard output is a terminal, append output to 'nohup.out' if possible,'$HOME/nohup.out' otherwise
@ -21,5 +19,4 @@ To save output to FILE, use 'nohup COMMAND > FILE
```bash ```bash
nohup command > myout.file 2>&1 & nohup command > myout.file 2>&1 &
``` ```

@ -1,4 +1,4 @@
# nslookup # **nslookup**
## 说明 ## 说明
@ -10,8 +10,6 @@ nslookup4有两种工作模式即“交互模式”和“非交互模式”
输入nslookup命令直接进入交互模式此时nslookup会连接到默认的域名服务器即`/etc/resolv.conf`的第一个dns地址。或者输入 输入nslookup命令直接进入交互模式此时nslookup会连接到默认的域名服务器即`/etc/resolv.conf`的第一个dns地址。或者输入
`nslookup -nameserver/ip`。进入非交互模式,就直接输入`nslookup 域名`就可以 `nslookup -nameserver/ip`。进入非交互模式,就直接输入`nslookup 域名`就可以
## 选项
```markdown ```markdown
-sil不显示任何警告信息 -sil不显示任何警告信息
``` ```
@ -20,7 +18,4 @@ nslookup4有两种工作模式即“交互模式”和“非交互模式”
```bash ```bash
nslookup www.jsdig.com nslookup www.jsdig.com
``` ```

@ -5,8 +5,6 @@
**passwd命令** 用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可 **passwd命令** 用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可
以指定用户名称,一般用户只能变更自己的密码 以指定用户名称,一般用户只能变更自己的密码
## 选项
```markdown ```markdown
用法: passwd [选项...] <帐号名称> 用法: passwd [选项...] <帐号名称>
-k, --keep-tokens 保持身份验证令牌不过期 -k, --keep-tokens 保持身份验证令牌不过期
@ -70,5 +68,5 @@ comment
passwd -l linuxde # 锁定用户linuxde不能更改密码 passwd -l linuxde # 锁定用户linuxde不能更改密码
passwd -d linuxde # 清除linuxde用户密码,注意:当我们清除一个用户的密码时,登录时就无需密码,这一点要加以注意 passwd -d linuxde # 清除linuxde用户密码,注意:当我们清除一个用户的密码时,登录时就无需密码,这一点要加以注意
echo "666666" | passwd --stdin ww &> /dev/null # 设置用户ww密码为666666
``` ```

@ -4,13 +4,8 @@
**paste命令** 用于将多个文件按照列队列进行合并 **paste命令** 用于将多个文件按照列队列进行合并
## 选项
```markdown ```markdown
-d, --delimiters=列表 改用指定列表里的字符替代制表分隔符 -d, --delimiters=列表 改用指定列表里的字符替代制表分隔符
-s, --serial 不使用平行的行目输出模式,而是每个文件占用一行 -s, --serial 不使用平行的行目输出模式,而是每个文件占用一行
``` ```

@ -3,9 +3,6 @@
## 说明 ## 说明
**perl命令** 是perl语言解释器负责解释执行perl语言程序 **perl命令** 是perl语言解释器负责解释执行perl语言程序
## 选项
```markdown ```markdown
-w输出有用的警告信息 -w输出有用的警告信息
-U允许不安全的操作 -U允许不安全的操作

@ -4,8 +4,6 @@
**pidof命令** 用于查找指定名称的进程的进程号id号 **pidof命令** 用于查找指定名称的进程的进程号id号
## 选项
```markdown ```markdown
-s仅返回一个进程pid号 -s仅返回一个进程pid号
-c仅显示具有相同“root”目录的进程 -c仅显示具有相同“root”目录的进程
@ -13,7 +11,7 @@
-o指定不显示的进程ID -o指定不显示的进程ID
``` ```
## 实例 ## 实例
```bash ```bash
pidof nginx # 查询nginx进程pid pidof nginx # 查询nginx进程pid

@ -5,8 +5,6 @@
**ping命令** 用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议发出要求回应的信息若远端主机的网络功能没有问题就会回应 **ping命令** 用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议发出要求回应的信息若远端主机的网络功能没有问题就会回应
该信息,因而得知该主机运作正常 该信息,因而得知该主机运作正常
## 选项
```markdown ```markdown
-d使用Socket的SO_DEBUG功能 -d使用Socket的SO_DEBUG功能
-c<完成次数>:设置完成要求回应的次数 -c<完成次数>:设置完成要求回应的次数
@ -28,11 +26,5 @@
```bash ```bash
ping -q -i0 -c 256 -l 4096 -s 1450 -S 10485760 -W 1 hostname # 使用-i0选项以尽可能快的速度发送ICMP数据包必须时root用户 ping -q -i0 -c 256 -l 4096 -s 1450 -S 10485760 -W 1 hostname # 使用-i0选项以尽可能快的速度发送ICMP数据包必须时root用户
traceroute --icmp 198.124.42.201 # 使用traceroute查找路径中的跃点
ping -q -i0 -c 256 -l 4096 -s 1450 -S 10485760 -W 1 198.124.238.153 # 测试每一跳,看看损失从哪里开始 ping -q -i0 -c 256 -l 4096 -s 1450 -S 10485760 -W 1 198.124.238.153 # 测试每一跳,看看损失从哪里开始
``` ```

@ -1,40 +1,19 @@
popd # popd
===
用于删除目录栈中的记录
## 说明 ## 说明
**popd命令** 用于删除目录栈中的记录如果popd命令不加任何参数则会先删除目录栈最上面的记录然后切换到删除过后的目录栈中的最上面的目录 **popd命令** 用于删除目录栈中的记录如果popd命令不加任何参数则会先删除目录栈最上面的记录然后切换到删除过后的目录栈中的最上面的目录
## 选项 ```markdown
+N 将第N个目录删除从左边数起数字从0开始
``` -N 将第N个目录删除从右边数起数字从0开始
pushd(选项)(参数) -n 将目录出栈时,不切换目录
```
```
+N将第N个目录删除从左边数起数字从0开始
-N将第N个目录删除从右边数起数字从0开始
-n将目录出栈时不切换目录
``` ```
## 实例 ## 实例
```bash
# 当前目录/tmp/dir4
popd +1 # 输出:/tmp/dir4 /tmp/dir2 /tmp/dir1 ~
popd -2 # 输出:/tmp/dir4 /tmp/dir1 ~
``` ```
root@Mylinux:/tmp/dir4# popd相当于popd +0
/tmp/dir3 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir3# pushd /tmp/dir4
/tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# popd +1
/tmp/dir4 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# popd -2
/tmp/dir4 /tmp/dir1 ~
```

@ -4,61 +4,59 @@
**pr命令** 用来将文本文件转换成适合打印的格式,它可以把较大的文件分割成多个页面进行打印,并为每个页面添加标题 **pr命令** 用来将文本文件转换成适合打印的格式,它可以把较大的文件分割成多个页面进行打印,并为每个页面添加标题
## 选项
```markdown ```markdown
用法pr [选项] [文件] 用法pr [选项] [文件]
Mandatory arguments to long options are mandatory for short options too. Mandatory arguments to long options are mandatory for short options too.
+首页[:末页], --pages=首页[:末页] 在指定的首页/末页处开始/停止打印 +首页[:末页], --pages=首页[:末页] 在指定的首页/末页处开始/停止打印
-列数, --columns=列数 输出指定的列数。如果指定了-a 选项,则从上到下列印 程序会自动在每一页均衡每列占用的行数 -列数, --columns=列数 输出指定的列数。如果指定了-a 选项,则从上到下列印 程序会自动在每一页均衡每列占用的行数
-a, --across 设置每列从上到下输出,配合"-列数"选项一起使用 -a, --across 设置每列从上到下输出,配合"-列数"选项一起使用
-c, --show-control-chars -c, --show-control-chars
使用头标(^G)和八进制反斜杠标记 使用头标(^G)和八进制反斜杠标记
-d, --double-space 加倍输出空白区域 -d, --double-space 加倍输出空白区域
-D, --date-format=格式 -D, --date-format=格式
使用遵循指定格式的页眉日期 使用遵循指定格式的页眉日期
-e[字符[宽度]], --expand-tabs[=字符[宽度]] -e[字符[宽度]], --expand-tabs[=字符[宽度]]
扩展输入的字符(制表符) 到制表符宽度(8) 扩展输入的字符(制表符) 到制表符宽度(8)
-F, -f, --form-feed 使用出纸页页标代替新行作为页面间的分隔符 -F, -f, --form-feed 使用出纸页页标代替新行作为页面间的分隔符
(使用-F 选项时报头为3 行,不使用时为5 行) (使用-F 选项时报头为3 行,不使用时为5 行)
-h, --header=页眉 在页眉中使用居中的指定字符代替文件名,-h "" 输出一个空行,不要使用 -h"" 即为页指定标题 -h, --header=页眉 在页眉中使用居中的指定字符代替文件名,-h "" 输出一个空行,不要使用 -h"" 即为页指定标题
-i[字符[宽度]], --output-tabs[=字符[宽度]] -i[字符[宽度]], --output-tabs[=字符[宽度]]
使用指定字符(或制表符)代替空格不足到指定制表符宽度(默认8) 使用指定字符(或制表符)代替空格不足到指定制表符宽度(默认8)
-J, --join-lines 合并整个行,关闭-W 选项的行截断,不使用栏调整,使用 -J, --join-lines 合并整个行,关闭-W 选项的行截断,不使用栏调整,使用
--sep-string[=字符串] 设置分隔符 --sep-string[=字符串] 设置分隔符
-l, --length=页长 使用指定页长的行数(默认66)(默认文本行数为56当启用-F 时为 63) -l, --length=页长 使用指定页长的行数(默认66)(默认文本行数为56当启用-F 时为 63)
-m, --merge 在同一行显示所有文件,每个文件占用一栏,分割行,但是当 -m, --merge 在同一行显示所有文件,每个文件占用一栏,分割行,但是当
使用-J 时将行合并到完整长度 使用-J 时将行合并到完整长度
-n[分隔符[位数]], --number-lines[=分隔符[位数]] -n[分隔符[位数]], --number-lines[=分隔符[位数]]
显示行号,使用指定(默认5) 位数,后接分隔符(默认TAB) 显示行号,使用指定(默认5) 位数,后接分隔符(默认TAB)
默认从输入文件的第一行开始计数 默认从输入文件的第一行开始计数
-N, --first-line-number=数字 -N, --first-line-number=数字
从首页的首行以指定数字开始计数(参看"+首页") 从首页的首行以指定数字开始计数(参看"+首页")
-o, --indent=缩进量 -o, --indent=缩进量
将每行缩进(默认0)个空格,不影响-w 或-W 参数 将每行缩进(默认0)个空格,不影响-w 或-W 参数
缩进亮的值将被加入页面宽度 缩进亮的值将被加入页面宽度
-r, --no-file-warnings -r, --no-file-warnings
当文件无法打开时忽略警告 当文件无法打开时忽略警告
-s[CHAR], --separator[=CHAR] -s[CHAR], --separator[=CHAR]
由单个字符分隔各列,未附加-w 时默认为制表符,否则为空 由单个字符分隔各列,未附加-w 时默认为制表符,否则为空
另外除非-w 选项被指定,否则"-s[CHAR]"会屏蔽三个列相关 另外除非-w 选项被指定,否则"-s[CHAR]"会屏蔽三个列相关
的截行选项(-COLUMN|-a -COLUMN|-m) 的截行选项(-COLUMN|-a -COLUMN|-m)
-S[STRING], --sep-string[=STRING] -S[STRING], --sep-string[=STRING]
separate columns by STRING, separate columns by STRING,
without -S: Default separator <TAB> with -J and <space> without -S: Default separator <TAB> with -J and <space>
otherwise (same as -S" "), no effect on column options otherwise (same as -S" "), no effect on column options
-t, --omit-header omit page headers and trailers -t, --omit-header omit page headers and trailers
-T, --omit-pagination -T, --omit-pagination
按照输入文件中的设置忽略页眉和页脚并除去所有分页记号 按照输入文件中的设置忽略页眉和页脚并除去所有分页记号
-v, --show-nonprinting -v, --show-nonprinting
使用八进制反斜杠标记 使用八进制反斜杠标记
-w, --width=页面宽度 -w, --width=页面宽度
为多栏页面输出将设置为指定的字符数(默认72) 为多栏页面输出将设置为指定的字符数(默认72)
仅当-s[char] 选项不启用时有效(即保持默认值 72) 仅当-s[char] 选项不启用时有效(即保持默认值 72)
-W, --page-width=页宽 -W, --page-width=页宽
总是将页宽设置为指定的(默认72)字符数 总是将页宽设置为指定的(默认72)字符数
除非-J 选项启用总是截断行,此参数与-S 或-s 冲突 除非-J 选项启用总是截断行,此参数与-S 或-s 冲突
如果页长<=10 则使用-t 选项。如果FILE 没有定义或者FILE 是"-",则从标准输入读入 如果页长<=10 则使用-t 选项。如果FILE 没有定义或者FILE 是"-",则从标准输入读入

@ -4,8 +4,6 @@
**printf命令** 格式化并输出结果到标准输出 **printf命令** 格式化并输出结果到标准输出
## 选项
```markdown ```markdown
和C语言printf一样FORMAT控制输出转义序列如下 和C语言printf一样FORMAT控制输出转义序列如下
@ -31,20 +29,20 @@
``` ```
**格式替代符** ## 格式替代符
* %b 相对应的参数被视为含有要被处理的转义序列之字符串 * %b 相对应的参数被视为含有要被处理的转义序列之字符串
* %c ASCII字符。显示相对应参数的第一个字符 * %c ASCII字符。显示相对应参数的第一个字符
* %d, %i 十进制整数 * %d, %i 十进制整数
* %e, %E, %f 浮点格式 * %e, %E, %f 浮点格式
* %g %e或%f转换看哪一个较短则删除结尾的零 * %g %e或%f转换看哪一个较短则删除结尾的零
* %G %E或%f转换看哪一个较短则删除结尾的零 * %G %E或%f转换看哪一个较短则删除结尾的零
* %o 不带正负号的八进制值 * %o 不带正负号的八进制值
* %s 字符串 * %s 字符串
* %u 不带正负号的十进制值 * %u 不带正负号的十进制值
* %x 不带正负号的十六进制值使用a至f表示10至15 * %x 不带正负号的十六进制值使用a至f表示10至15
* %X 不带正负号的十六进制值使用A至F表示10至15 * %X 不带正负号的十六进制值使用A至F表示10至15
* %% 字面意义的% * %% 字面意义的%
## 实例 ## 实例

@ -6,11 +6,7 @@
查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等, 查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,
总之大部分信息都是可以通过执行该命令得到的 总之大部分信息都是可以通过执行该命令得到的
## 选项 ```markdown
Usage: ps [options]
```bash
基本选项 基本选项
-A, -e all processes -A, -e all processes
-a all with tty, except session leaders -a all with tty, except session leaders
@ -139,7 +135,6 @@ jstack pid |grep tid -A 30 # 打印线程的堆栈信息
# java进程占用内存过高排查 # java进程占用内存过高排查
jmap -histo:live [pid] # 分析具体的对象数目和占用内存大小,从而定位代码 jmap -histo:live [pid] # 分析具体的对象数目和占用内存大小,从而定位代码
jmap -dump:live,format=b,file=xxx.hprof [pid] # 利用MAT工具分析是否存在内存泄漏等 jmap -dump:live,format=b,file=xxx.hprof [pid] # 利用MAT工具分析是否存在内存泄漏等
``` ```
## linux进程5种状态 ## linux进程5种状态

@ -4,26 +4,19 @@
**pushd命令** 是将目录加入命令堆叠中。如果指令没有指定目录名称,则会将当前的工作目录置入目录堆叠的最顶端。置入目录如果没有指定堆叠的位置,也会置入目录堆叠的最顶端,同时工作目录会自动切换到目录堆叠最顶端的目录去 **pushd命令** 是将目录加入命令堆叠中。如果指令没有指定目录名称,则会将当前的工作目录置入目录堆叠的最顶端。置入目录如果没有指定堆叠的位置,也会置入目录堆叠的最顶端,同时工作目录会自动切换到目录堆叠最顶端的目录去
```markdown
```bash
-n 只加入目录到堆叠中不进行cd操作 -n 只加入目录到堆叠中不进行cd操作
+N 删除从左到右的第n个目录数字从0开始 +N 删除从左到右的第n个目录数字从0开始
-N 删除从右到左的第n个目录数字从0开始 -N 删除从右到左的第n个目录数字从0开始
``` ```
## 实例 ## 实例
```bash ```bash
# 当前目录/tmp/dir4
# 参数--目录:需要压入堆栈的目录 # 参数--目录:需要压入堆栈的目录
root@Mylinux:/tmp/dir4# pushd /tmp/dir3 pushd /tmp/dir3 # 输出:/tmp/dir3 /tmp/dir4 /tmp/dir1 ~
/tmp/dir3 /tmp/dir4 /tmp/dir1 ~
root@Mylinux:/tmp/dir3# pushd /tmp/dir2
/tmp/dir2 /tmp/dir3 /tmp/dir4 /tmp/dir1 ~
root@Mylinux:/tmp/dir2# pushd -1 # 当前目录/tmp/dir2 注意:最左边表示栈顶,最右边表示栈底
/tmp/dir1 ~ /tmp/dir2 /tmp/dir3 /tmp/dir4 pushd -1 # 输出:/tmp/dir1 ~ /tmp/dir2 /tmp/dir3 /tmp/dir4
# 注意:最左边表示栈顶,最右边表示栈底
``` ```

@ -12,8 +12,6 @@ read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数]
存放在 REPLY 变量中 存放在 REPLY 变量中
``` ```
## 选项
```markdown ```markdown
-a array 将词语赋值给 ARRAY 数组变量的序列下标成员,从零开始 -a array 将词语赋值给 ARRAY 数组变量的序列下标成员,从零开始
-d delim 持续读取直到读入 DELIM 变量中的第一个字符,而不是换行符 -d delim 持续读取直到读入 DELIM 变量中的第一个字符,而不是换行符
@ -36,7 +34,7 @@ read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数]
```bash ```bash
read name # 从标准输入读取输入并赋值给变量name read name # 从标准输入读取输入并赋值给变量name
read one two three # 在控制台输入1 2 3它们之间用空格隔开。等待一组输入每个单词之间使用空格隔开直到回车结束并分别 read one two three # 在控制台输入1 2 3它们之间用空格隔开。等待一组输入每个单词之间使用空格隔开直到回车结束并分别
# 将单词依次赋值给这三个读入变量 # 将单词依次赋值给这三个读入变量

@ -9,8 +9,6 @@
否真要删除。rm命令可以用-i选项这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项系统会要求你逐一确定是 否真要删除。rm命令可以用-i选项这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项系统会要求你逐一确定是
否要删除。这时必须输入y并按Enter键才能删除文件。如果仅按Enter键或其他字符文件不会被删除 否要删除。这时必须输入y并按Enter键才能删除文件。如果仅按Enter键或其他字符文件不会被删除
## 选项
```markdown ```markdown
-f, --force 忽略不存在的文件和参数,不提示直接强制删除 -f, --force 忽略不存在的文件和参数,不提示直接强制删除

@ -7,8 +7,6 @@
注意子目录被删除之前应该是空目录。就是说该目录中的所有文件必须用rm命令全部另外当前工作目录必须在被删除目录之上不能是被删除目录 注意子目录被删除之前应该是空目录。就是说该目录中的所有文件必须用rm命令全部另外当前工作目录必须在被删除目录之上不能是被删除目录
本身,也不能是被删除目录的子目录 本身,也不能是被删除目录的子目录
## 选项
```markdown ```markdown
--ignore-fail-on-non-empty 忽略仅由目录非空产生的所有错误 --ignore-fail-on-non-empty 忽略仅由目录非空产生的所有错误
-p, --parents 删除目录,若该目录删除后上层目录变为空目录一并删除; 例如:'rmdir -p a/b/c' 和 'rmdir a/b/c a/b a'相同 -p, --parents 删除目录,若该目录删除后上层目录变为空目录一并删除; 例如:'rmdir -p a/b/c' 和 'rmdir a/b/c a/b a'相同
@ -22,5 +20,3 @@
rmdir -p bin/os_1 # 删除子目录os_1,若bin目录为空则删除否则保留 rmdir -p bin/os_1 # 删除子目录os_1,若bin目录为空则删除否则保留
``` ```

@ -5,8 +5,6 @@
**rpm命令** 是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序由于它遵循GPL规则且功能强大方便 **rpm命令** 是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序由于它遵循GPL规则且功能强大方便
因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现让Linux易于安装升级间接提升了Linux的适用度 因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现让Linux易于安装升级间接提升了Linux的适用度
## 选项
```markdown ```markdown
用法: rpm [选项...] 用法: rpm [选项...]
@ -171,4 +169,3 @@ rpm -qf /usr/bin/ftptop
rpm -qf /var/log/dmesg rpm -qf /var/log/dmesg
``` ```

@ -1,26 +1,16 @@
rpm2cpio # rpm2cpio
===
将RPM软件包转换为cpio格式的文件
## 说明 ## 说明
**rpm2cpio命令** 用于将rpm软件包转换为cpio格式的文件 从RPM软件包提取cpio格式的文件
## 选项
``` ```markdown
rpm2cpio(参数) rpm2cpio(参数)
``` ```
### 参数
文件指定要转换的rpm包的文件名
## 实例 ## 实例
``` ```bash
rpm2cpio ../libstdc++-4.3.0-8.i386.rpm | cpio -idv rpm2cpio ../libstdc++-4.3.0-8.i386.rpm | cpio -idv
``` ```

@ -7,8 +7,6 @@
占资源不会提高多少系统负荷在这一点上rsync就远远不及它了。虽然 rsync比scp会快一点但当小文件众多的情况下rsync会 占资源不会提高多少系统负荷在这一点上rsync就远远不及它了。虽然 rsync比scp会快一点但当小文件众多的情况下rsync会
导致硬盘I/O非常高而scp基本不影响系统正常使用 导致硬盘I/O非常高而scp基本不影响系统正常使用
## 选项
```markdown ```markdown
scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program] [-l limit] [-o ssh_option] [-P port] [-S program]

@ -35,7 +35,7 @@ sed脚本。其他非选项参数被视为输入文件如果没有输入文
```markdown ```markdown
a\ 在当前行下面插入文本 a\ 在当前行下面插入文本
i\ 在当前行上面插入文本 i\ 在当前行上面插入文本
c\ 把选定的行改为新的文本 c\ 用新的文本替换选定的行
d 删除,删除选择的行 d 删除,删除选择的行
D 删除模板块的第一行 D 删除模板块的第一行
s 替换指定字符 s 替换指定字符
@ -113,6 +113,8 @@ sed -i '5i\test line' file # 在file文件第5行插入test line
sed '/test/{ n; s/aa/bb/; }' file # 若匹配到test则移动到匹配行的下一行替换这行的aa为bb并打印接着继续执行 sed '/test/{ n; s/aa/bb/; }' file # 若匹配到test则移动到匹配行的下一行替换这行的aa为bb并打印接着继续执行
sed '1,10y/abcde/ABCDE/' file # y变形命令将1至10行所有abcde转为大写但正则表达式元字符不能使用该命令 sed '1,10y/abcde/ABCDE/' file # y变形命令将1至10行所有abcde转为大写但正则表达式元字符不能使用该命令
sed '10q' file # q退出命令打印完第10行后退出sed命令 sed '10q' file # q退出命令打印完第10行后退出sed命令
sed 's/$/EOL/' file # 在file文件末尾插入字符此例为末尾插入EOL字符
sed -e 's/erors/errors/g' -e 's/last/final/g' file # 查找多个并替换此例为查找erors替换为errors,查找last替换为final
# 关闭selinux # 关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 方法一 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 方法一
@ -380,7 +382,7 @@ sed '1,/^$/d' # 删除第一行空行之前的所有内容,可用
sed '/^Subject: */!d; s///;q' # 从邮件头提取“Subject”标题栏字段并移除开头的“Subject:”字样 sed '/^Subject: */!d; s///;q' # 从邮件头提取“Subject”标题栏字段并移除开头的“Subject:”字样
sed '/^Reply-To:/q; /^From:/h; /./d;g;q' # 从邮件头获得回复地址 sed '/^Reply-To:/q; /^From:/h; /./d;g;q' # 从邮件头获得回复地址
sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//' # 获取邮件地址。在上一个脚本所产生的那一行邮件头的基础上进一步的将非电邮地址的部分剃除。(见上一脚本) sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//' # 获取邮件地址。在上一个脚本所产生的那一行邮件头的基础上进一步的将非电邮地址的部分剃除。(见上一脚本)
sed 's/^/> /' # 在每一行开头加上一个尖括号和空格(引用信息) sed 's/^/> /' # 在每一行开头加上一个尖括号和空格(引用信息)
sed 's/^> //' # 将每一行开头处的尖括号和空格删除(解除引用) sed 's/^> //' # 将每一行开头处的尖括号和空格删除(解除引用)
sed -e :a -e 's/<[^>]*>//g;/</N;//ba' # 移除大部分的HTML标签包括跨行标签 sed -e :a -e 's/<[^>]*>//g;/</N;//ba' # 移除大部分的HTML标签包括跨行标签

@ -4,8 +4,6 @@
**seq命令** 用于产生从某个数到另外一个数之间的所有整数 **seq命令** 用于产生从某个数到另外一个数之间的所有整数
## 选项
```markdown ```markdown
用法seq [选项]... 尾数 用法seq [选项]... 尾数
 seq [选项]... 首数 尾数  seq [选项]... 首数 尾数

@ -6,8 +6,6 @@
的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量可以使用declare命令以变量名= 的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量可以使用declare命令以变量名=
值的格式进行定义即可 值的格式进行定义即可
## 选项
```markdown ```markdown
-a 标示已修改的变量,以供输出至环境变量 -a 标示已修改的变量,以供输出至环境变量
-b 使被中止的后台程序立刻回报执行状态 -b 使被中止的后台程序立刻回报执行状态

@ -1,87 +1,82 @@
setfacl # setfacl
===
设置文件访问控制列表
## 说明 ## 说明
**setfacl命令** 是用来在命令行里设置ACL访问控制列表。在命令行里一系列的命令跟随以一系列的文件名 **setfacl命令** 是用来在命令行里设置ACL访问控制列表。在命令行里一系列的命令跟随以一系列的文件名
```markdown
-b,--remove-all 删除所有扩展的acl规则基本的acl规则(所有者,群组,其他)将被保留
``` -k,--remove-default 删除缺省的acl规则。如果没有缺省规则将不提示
-b,--remove-all删除所有扩展的acl规则基本的acl规则(所有者,群组,其他)将被保留 -n--no-mask 不要重新计算有效权限。setfacl默认会重新计算ACL mask除非mask被明确的制定
-k,--remove-default删除缺省的acl规则。如果没有缺省规则将不提示 --mask 重新计算有效权限即使ACL mask被明确指定
-n--no-mask不要重新计算有效权限。setfacl默认会重新计算ACL mask除非mask被明确的制定 -d--default 设定默认的acl规则
--mask重新计算有效权限即使ACL mask被明确指定 --restore=file 从文件恢复备份的acl规则这些文件可由getfacl -R产生。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行
-d--default设定默认的acl规则 --test 测试模式不会改变任何文件的acl规则操作后的acl规格将被列出
--restore=file从文件恢复备份的acl规则这些文件可由getfacl -R产生。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行 -R--recursive 递归的对所有文件及目录进行操作
--test测试模式不会改变任何文件的acl规则操作后的acl规格将被列出 -L--logical 跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录
-R--recursive递归的对所有文件及目录进行操作 -P--physical 跳过所有符号链接,包括符号链接文件
-L--logical跟踪符号链接默认情况下只跟踪符号链接文件跳过符号链接目录 --version 输出setfacl的版本号并退出
-P--physical跳过所有符号链接包括符号链接文件 --help 输出帮助信息
--version输出setfacl的版本号并退出 -- 标识命令行参数结束,其后的所有参数都将被认为是文件名
--help输出帮助信息 - 如果文件名是-则setfacl将从标准输入读取文件名
--:标识命令行参数结束,其后的所有参数都将被认为是文件名
-:如果文件名是-则setfacl将从标准输入读取文件名 ```
``` * 选项`-m`和`-x`后边跟以acl规则。多条acl规则以逗号(,)隔开。选项`-M`和`-X`用来从文件或标准输入读取acl规则
* 选项`--set`和`--set-file`用来设置文件或目录的acl规则先前的设定将被覆盖
* 选项`-m`和`-x`后边跟以acl规则。多条acl规则以逗号(,)隔开。选项`-M`和`-X`用来从文件或标准输入读取acl规则 * 选项`-m(--modify)`和`-M(--modify-file)`选项修改文件或目录的acl规则
* 选项`--set`和`--set-file`用来设置文件或目录的acl规则先前的设定将被覆盖 * 选项`-x(--remove)`和`-X(--remove-file)`选项删除acl规则
* 选项`-m(--modify)`和`-M(--modify-file)`选项修改文件或目录的acl规则
* 选项`-x(--remove)`和`-X(--remove-file)`选项删除acl规则
当使用-M-X选项从文件中读取规则时setfacl接受getfacl命令输出的格式。每行至少一条规则以#开始的行将被视为注释 当使用-M-X选项从文件中读取规则时setfacl接受getfacl命令输出的格式。每行至少一条规则以#开始的行将被视为注释
当在不支持ACLs的文件系统上使用setfacl命令时setfacl将修改文件权限位。如果acl规则并不完全匹配文件权限位setfacl将会修改文件权限位使其尽可能的反应acl规则并会向standard error发送错误消息以大于0的状态返回 当在不支持ACLs的文件系统上使用setfacl命令时setfacl将修改文件权限位。如果acl规则并不完全匹配文件权限位setfacl将会修改文件权限位使其尽可能的反应acl规则并会向standard error发送错误消息以大于0的状态返回
**权限** ## 权限
文件的所有者以及有`CAP_FOWNER`的用户进程可以设置一个文件的acl。在目前的linux系统上root用户是唯一有`CAP_FOWNER`能力的用户) 文件的所有者以及有`CAP_FOWNER`的用户进程可以设置一个文件的acl。在目前的linux系统上root用户是唯一有`CAP_FOWNER`能力的用户)
**ACL规则** ## ACL规则
setfacl命令可以识别以下的规则格式 setfacl命令可以识别以下的规则格式
``` ```markdown
[d[efault]:] [u[ser]:]uid [:perms] 指定用户的权限文件所有者的权限如果uid没有指定 [d[efault]:] [u[ser]:]uid [:perms] 指定用户的权限文件所有者的权限如果uid没有指定
[d[efault]:] g[roup]:gid [:perms] 指定群组的权限文件所有群组的权限如果gid未指定 [d[efault]:] g[roup]:gid [:perms] 指定群组的权限文件所有群组的权限如果gid未指定
[d[efault]:] m[ask][:] [:perms] 有效权限掩码 [d[efault]:] m[ask][:] [:perms] 有效权限掩码
[d[efault]:] o[ther] [:perms] 其他的权限 [d[efault]:] o[ther] [:perms] 其他的权限
``` ```
恰当的acl规则被用在修改和设定的操作中对于uid和gid可以指定一个数字也可指定一个名字。perms域是一个代表各种权限的字母的组合读`-r`写`-w`执行`-x`执行只适合目录和一些可执行的文件。pers域也可设置为八进制格式 恰当的acl规则被用在修改和设定的操作中对于uid和gid可以指定一个数字也可指定一个名字。perms域是一个代表各种权限的字母的组合 读`-r`写`-w`执行`-x`执行只适合目录和一些可执行的文件。pers域也可设置为八进制格式
**自动创建的规则** ## 自动创建的规则
最初的文件目录仅包含3个基本的acl规则。为了使规则能正常执行需要满足以下规则 最初的文件目录仅包含3个基本的acl规则。为了使规则能正常执行需要满足以下规则
* 3个基本规则不能被删除 * 3个基本规则不能被删除
* 任何一条包含指定的用户名或群组名的规则必须包含有效的权限组合 * 任何一条包含指定的用户名或群组名的规则必须包含有效的权限组合
* 任何一条包含缺省规则的规则在使用时,缺省规则必须存在 * 任何一条包含缺省规则的规则在使用时,缺省规则必须存在
**ACL的名词定义** ## ACL的名词定义
先来看看在ACL里面每一个名词的定义这些名词我大多从man page上摘下来虽然有些枯燥,但是对于理解下面的内容还是很有帮助的 先来看看在ACL里面每一个名词的定义这些名词我大多从man page上摘下来虽然有些枯燥,但是对于理解下面的内容还是很有帮助的
ACL是由一系列的Access Entry所组成的每一条Access Entry定义了特定的类别可以对文件拥有的操作权限。Access Entry有三个组成部分Entry tag type, qualifier (optional), permission ACL是由一系列的Access Entry所组成的每一条Access Entry定义了特定的类别可以对文件拥有的操作权限。Access Entry有三个组成部分 Entry tag type, qualifier (optional), permission
我们先来看一下最重要的Entry tag type它有以下几个类型 我们先来看一下最重要的Entry tag type它有以下几个类型
```markdown
ACL_USER_OBJ 相当于Linux里file_owner的permission
ACL_USER 定义了额外的用户可以对此文件拥有的permission
ACL_GROUP_OBJ 相当于Linux里group的permission
ACL_GROUP 定义了额外的组可以对此文件拥有的permission
ACL_MASK 定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限 (这个我下面还会专门讨论)
ACL_OTHER 相当于Linux里other的permission
``` ```
ACL_USER_OBJ相当于Linux里file_owner的permission
ACL_USER定义了额外的用户可以对此文件拥有的permission
ACL_GROUP_OBJ相当于Linux里group的permission
ACL_GROUP定义了额外的组可以对此文件拥有的permission
ACL_MASK定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限 (这个我下面还会专门讨论)
ACL_OTHER相当于Linux里other的permission
```
让我们来据个例子说明一下下面我们就用getfacl命令来查看一个定义好了的ACL文件
``` ```bash
[root@localhost ~]# getfacl ./test.txt # 用getfacl命令来查看一个定义好了的ACL文件
getfacl ./test.txt
# 输出如下:
# file: test.txt # file: test.txt
# owner: root # owner: root
# group: admin # group: admin
@ -94,7 +89,7 @@ mask::rw- other::r--
前面三个以#开头的定义了文件名file owner和group。这些信息没有太大的作用接下来我们可以用`--omit-header`来省略掉 前面三个以#开头的定义了文件名file owner和group。这些信息没有太大的作用接下来我们可以用`--omit-header`来省略掉
``` ```markdown
user::rw- 定义了ACL_USER_OBJ, 说明file owner拥有read and write permission user::rw- 定义了ACL_USER_OBJ, 说明file owner拥有read and write permission
user:john:rw- 定义了ACL_USER,这样用户john就拥有了对文件的读写权限,实现了我们一开始要达到的目的 user:john:rw- 定义了ACL_USER,这样用户john就拥有了对文件的读写权限,实现了我们一开始要达到的目的
group::rw- 定义了ACL_GROUP_OBJ,说明文件的group拥有read and write permission group::rw- 定义了ACL_GROUP_OBJ,说明文件的group拥有read and write permission
@ -103,13 +98,13 @@ mask::rw- 定义了ACL_MASK的权限为read and write
other::r-- 定义了ACL_OTHER的权限为read other::r-- 定义了ACL_OTHER的权限为read
``` ```
从这里我们就可以看出ACL提供了我们可以定义特定用户和用户组的功能那么接下来我们就来看一下如何设置一个文件的ACL 从这里我们就可以看出ACL提供了我们可以定义特定用户和用户组的功能那么接下来我们就来看一下如何设置一个文件的ACL
**如何设置ACL文件** ## 如何设置ACL文件
首先我们还是要讲一下设置ACL文件的格式从上面的例子中我们可以看到每一个Access Entry都是由三个被号分隔开的字段所组成第一个就是Entry tag type 首先我们还是要讲一下设置ACL文件的格式从上面的例子中我们可以看到每一个Access Entry都是由三个被 号分隔开的字段所组成第一个就是Entry tag type
``` ```markdown
user 对应了ACL_USER_OBJ和ACL_USER user 对应了ACL_USER_OBJ和ACL_USER
group 对应了ACL_GROUP_OBJ和ACL_GROUP group 对应了ACL_GROUP_OBJ和ACL_GROUP
mask 对应了ACL_MASK mask 对应了ACL_MASK
@ -120,7 +115,7 @@ other 对应了ACL_OTHER
下面我们就来看一下怎么设置test.txt这个文件的ACL让它来达到我们上面的要求 下面我们就来看一下怎么设置test.txt这个文件的ACL让它来达到我们上面的要求
一开始文件没有ACL的额外属性 一开始文件没有ACL的额外属性
``` ```
[root@localhost ~]# ls -l [root@localhost ~]# ls -l
@ -130,7 +125,7 @@ other 对应了ACL_OTHER
user::rw- group::rw- other::r-- user::rw- group::rw- other::r--
``` ```
我们先让用户john拥有对test.txt文件的读写权限 我们先让用户john拥有对test.txt文件的读写权限
``` ```
[root@localhost ~]# setfacl -m user:john:rw- ./test.txt [root@localhost ~]# setfacl -m user:john:rw- ./test.txt
@ -151,7 +146,7 @@ other::r--
在文件permission的最后多了一个+号当任何一个文件拥有了ACL_USER或者ACL_GROUP的值以后我们就可以称它为ACL文件这个+号就是用来提示我们的。我们还可以发现当一个文件拥有了`ACL_USER`或者`ACL_GROUP`的值时`ACL_MASK`同时也会被定义 在文件permission的最后多了一个+号当任何一个文件拥有了ACL_USER或者ACL_GROUP的值以后我们就可以称它为ACL文件这个+号就是用来提示我们的。我们还可以发现当一个文件拥有了`ACL_USER`或者`ACL_GROUP`的值时`ACL_MASK`同时也会被定义
接下来我们来设置dev组拥有read permission 接下来我们来设置dev组拥有read permission
``` ```
[root@localhost ~]# setfacl -m group:dev:r-- ./test.txt [root@localhost ~]# setfacl -m group:dev:r-- ./test.txt
@ -166,11 +161,11 @@ other::r--
到这里就完成了我们上面讲到的要求,是不是很简单呢 到这里就完成了我们上面讲到的要求,是不是很简单呢
**ACL_MASK和Effective permission** **ACL_MASK和Effective permission**
这里需要重点讲一下`ACL_MASK`因为这是掌握ACL的另一个关键在Linux file permission里面大家都知道比如对于`rw-rw-r--`来说, 当中的那个`rw-`是指文件组的permission. 但是在ACL里面这种情况只是在`ACL_MASK`不存在的情况下成立。如果文件有ACL_MASK值那么当中那个`rw-`代表的就是mask值而不再是group permission了 这里需要重点讲一下`ACL_MASK`因为这是掌握ACL的另一个关键在Linux file permission里面大家都知道比如对于`rw-rw-r--`来说, 当中的那个`rw-`是指文件组的permission. 但是在ACL里面这种情况只是在`ACL_MASK`不存在的情况下成立。如果文件有ACL_MASK值那么当中那个`rw-`代表的就是mask值而不再是group permission了
让我们来看下面这个例子 让我们来看下面这个例子
``` ```
[root@localhost ~]# ls -l [root@localhost ~]# ls -l
@ -188,7 +183,7 @@ mask::rwx
other::r-- other::r--
``` ```
这里我们看到john已经拥有了rwx的permissionmask值也被设定为rwx那是因为它规定了`ACL_USER``ACL_GROUP`和`ACL_GROUP_OBJ`的最大值现在我们再来看test.sh的Linux permission它已经变成了 这里我们看到john已经拥有了rwx的permissionmask值也被设定为rwx那是因为它规定了`ACL_USER``ACL_GROUP`和`ACL_GROUP_OBJ`的最大值现在我们再来看test.sh的Linux permission它已经变成了
``` ```
[root@localhost ~]# ls -l [root@localhost ~]# ls -l
@ -220,11 +215,11 @@ other::r--
-rwxr--r--+ 1 root admin 0 Jul 3 23:10 test.sh -rwxr--r--+ 1 root admin 0 Jul 3 23:10 test.sh
``` ```
**Default ACL** **Default ACL**
上面我们所有讲的都是Access ACL也就是对文件而言。下面我简单讲一下Default ACL。Default ACL是指对于一个目录进行Default ACL设置并且在此目录下建立的文件都将继承此目录的ACL 上面我们所有讲的都是Access ACL也就是对文件而言。下面我简单讲一下Default ACL。Default ACL是指对于一个目录进行Default ACL设置并且在此目录下建立的文件都将继承此目录的ACL
同样我们来做一个试验说明比如现在root用户建立了一个dir目录 同样我们来做一个试验说明比如现在root用户建立了一个dir目录
``` ```
[root@localhost ~]# mkdir dir [root@localhost ~]# mkdir dir
@ -262,20 +257,18 @@ other::r--
这里我们看到在dir下建立的文件john用户自动就有了read and write permission 这里我们看到在dir下建立的文件john用户自动就有了read and write permission
**ACL相关命令** **ACL相关命令**
前面的例子中我们都注意到了getfacl命令是用来读取文件的ACLsetfacl是用来设定文件的Acess ACL。这里还有一个chacl是用来改变文件和目录的Access ACL and Default ACL它的具体参数大家可以去看man page。我只想提及一下`chacl -B`。它可以彻底删除文件或者目录的ACL属性(包括Default ACL),比如你即使用了`setfacl -x`删除了所有文件的ACL属性那个+号还是会出现在文件的末尾,所以正确的删除方法应该是用`chacl -B`用cp来复制文件的时候我们现在可以加上`-p`选项。这样在拷贝文件的时候也将拷贝文件的ACL属性对于不能拷贝的ACL属性将给出警告 前面的例子中我们都注意到了getfacl命令是用来读取文件的ACLsetfacl是用来设定文件的Acess ACL。这里还有一个chacl是用来改变文件和目录的Access ACL and Default ACL它的具体参数大家可以去看man page。我只想提及一下`chacl -B`。它可以彻底删除文件或者目录的ACL属性(包括Default ACL),比如你即使用了`setfacl -x`删除了所有文件的ACL属性那个+号还是会出现在文件的末尾,所以正确的删除方法应该是用`chacl -B`用cp来复制文件的时候我们现在可以加上`-p`选项。这样在拷贝文件的时候也将拷贝文件的ACL属性对于不能拷贝的ACL属性将给出警告
mv命令将会默认地移动文件的ACL属性同样如果操作不允许的情况下会给出警告 mv命令将会默认地移动文件的ACL属性同样如果操作不允许的情况下会给出警告
**需要注意的几点** **需要注意的几点**
如果你的文件系统不支持ACL的话你也许需要重新mount你的file system 如果你的文件系统不支持ACL的话你也许需要重新mount你的file system
``` ```
mount -o remount, acl [mount point] mount -o remount, acl [mount point]
``` ```
如果用chmod命令改变Linux file permission的时候相应的ACL值也会改变反之改变ACL的值相应的file permission也会改变 如果用chmod命令改变Linux file permission的时候相应的ACL值也会改变反之改变ACL的值相应的file permission也会改变

@ -4,8 +4,6 @@
**sleep命令** 暂停指定的时间 **sleep命令** 暂停指定的时间
## 选项
```markdown ```markdown
时间长度,后面可接 s、m、h 或 d其中 s 为秒m 为 分钟h 为小时d 为日数 时间长度,后面可接 s、m、h 或 d其中 s 为秒m 为 分钟h 为小时d 为日数
``` ```
@ -24,5 +22,3 @@ for ((i=0;$i<=100;i++))
b==#$b b==#$b
done done
``` ```

@ -4,8 +4,6 @@
**ssh命令** 是openssh套件中的客户端连接工具可以给予ssh加密协议实现安全的远程登录服务器 **ssh命令** 是openssh套件中的客户端连接工具可以给予ssh加密协议实现安全的远程登录服务器
## 选项
```markdown ```markdown
ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char] [-D [bind_address:]port] [-E log_file] [-e escape_char]
@ -42,9 +40,6 @@ ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
```bash ```bash
ssh $USER@$HOST command # 在$Host主机上以$User用户运行命令默认命令为Shell ssh $USER@$HOST command # 在$Host主机上以$User用户运行命令默认命令为Shell
ssh -f -Y $USER@$HOSTNAME xeyes # 在名为$HOSTNAME的主机上以$USER用户运行GUI命令 ssh -f -Y $USER@$HOSTNAME xeyes # 在名为$HOSTNAME的主机上以$USER用户运行GUI命令
scp -p -r $USER@$HOST: file dir/ # 拷贝到$HOST主机$USER'用户的目录下
ssh -g -L 8080:localhost:80 root@$HOST # 由本地主机的8080端口转发到$HOST主机的80端口 ssh -g -L 8080:localhost:80 root@$HOST # 由本地主机的8080端口转发到$HOST主机的80端口
ssh -R 1434:imap:143 root@$HOST # 由主机的1434端口转发到imap的143端口 ssh -R 1434:imap:143 root@$HOST # 由主机的1434端口转发到imap的143端口
``` ```

@ -4,8 +4,6 @@
**stat命令** 用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细 **stat命令** 用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细
## 选项
```markdown ```markdown
-L支持符号连接 -L支持符号连接
-f显示文件系统状态而非文件状态 -f显示文件系统状态而非文件状态

@ -9,8 +9,6 @@
strace的最简单的用法就是执行一个指定的命令在指定的命令结束之后它也就退出了。在命令执行的过程中strace会记录和解析命令 strace的最简单的用法就是执行一个指定的命令在指定的命令结束之后它也就退出了。在命令执行的过程中strace会记录和解析命令
进程的所有系统调用以及这个进程所接收到的所有的信号值 进程的所有系统调用以及这个进程所接收到的所有的信号值
## 选项
```markdown ```markdown
-c 统计每一系统调用的所执行的时间,次数和出错的次数等 -c 统计每一系统调用的所执行的时间,次数和出错的次数等
-d 输出strace关于标准错误的调试信息 -d 输出strace关于标准错误的调试信息

@ -4,8 +4,6 @@
**su命令** 用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码 **su命令** 用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码
## 选项
```markdown ```markdown
su [选项] [-] [USER [参数]...] su [选项] [-] [USER [参数]...]
@ -30,5 +28,4 @@ su [选项] [-] [USER [参数]...]
su -c ls root # 变更帐号为root并在执行ls指令后退出变回原使用者 su -c ls root # 变更帐号为root并在执行ls指令后退出变回原使用者
su root -f # 变更帐号为root并传入`-f`选项给新执行的shell su root -f # 变更帐号为root并传入`-f`选项给新执行的shell
su -test # 变更帐号为test并改变工作目录至test的家目录 su -test # 变更帐号为test并改变工作目录至test的家目录
``` ```

@ -4,8 +4,6 @@
**sum命令** 用于计算并显示指定文件的校验和与文件所占用的磁盘块数 **sum命令** 用于计算并显示指定文件的校验和与文件所占用的磁盘块数
## 选项
```markdown ```markdown
-r使用BSD的校验和算法块大小为1k -r使用BSD的校验和算法块大小为1k
-s使用system V的校验和算法块大小为512字节 -s使用system V的校验和算法块大小为512字节
@ -16,5 +14,3 @@
```bash ```bash
sum insert.sql # 计算文件校验码 sum insert.sql # 计算文件校验码
``` ```

@ -21,4 +21,4 @@ sync命令用来flush文件系统buffer这样数据才会真正的写到磁
```bash ```bash
sync; echo 3 > /proc/sys/vm/drop_caches # 清空Linux Buffer Cache sync; echo 3 > /proc/sys/vm/drop_caches # 清空Linux Buffer Cache
``` ```

@ -6,17 +6,15 @@
一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入 一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入
注意如果表示bytes或lines的K值之前有一个”+”号则从文件开头的第K项开始显示 注意如果表示bytes或lines的K值之前有一个”+”号则从文件开头的第K项开始显示
K值后缀b表示512b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,GB 1000*1000*1000, K值后缀b表示512b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,GB 1000*1000*1000,
G 1024*1024*1024, and so on for T, P, E, Z, Y G 1024*1024*1024, and so on for T, P, E, Z, Y
## 选项
```markdown ```markdown
-c, --bytes=K 输出最后K个字节或使用-c + K输出从每个文件的第K个字节开始的字节 -c, --bytes=K 输出最后K个字节或使用-c + K输出从每个文件的第K个字节开始的字节
-f, --follow[={name|descriptor}] 随着文件的增长输出附加的数据;缺少的选项参数意味着“描述符”与--follow = name --retry相同 -f, --follow[={name|descriptor}] 随着文件的增长输出附加的数据;缺少的选项参数意味着“描述符”与--follow = name --retry相同
-n, --lines=K output the last K lines, instead of the last 10;or use -n +K to output starting with the Kth -n, --lines=K output the last K lines, instead of the last 10;or use -n +K to output starting with the Kth
--max-unchanged-stats=N with --follow=name, reopen a FILE which has not changed size after N (default 5) --max-unchanged-stats=N with --follow=name, reopen a FILE which has not changed size after N (default 5)
iterations to see if it has been unlinked or renamed (this is the usual case of iterations to see if it has been unlinked or renamed (this is the usual case of
rotated log files);with inotify, this option is rarely useful rotated log files);with inotify, this option is rarely useful
--pid=PID with -f, terminate after process ID, PID dies --pid=PID with -f, terminate after process ID, PID dies
-q, --quiet, --silent never output headers giving file names -q, --quiet, --silent never output headers giving file names

@ -5,8 +5,6 @@
**tcpdump命令** 是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用`-w`选项将数据包保存到文件 **tcpdump命令** 是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用`-w`选项将数据包保存到文件
中,方便以后分析 中,方便以后分析
## 选项
```markdown ```markdown
-a尝试将网络和广播地址转换成名称 -a尝试将网络和广播地址转换成名称
-c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作 -c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作
@ -57,5 +55,4 @@ tcpdump net ucb-ether # 监视指定网络的数据包,打印网络地址为uc
tcpdump 'gateway snup and (port ftp or ftp-data)' # 打印所有通过网关snup的ftp数据包,gateway后必须是网关名称 tcpdump 'gateway snup and (port ftp or ftp-data)' # 打印所有通过网关snup的ftp数据包,gateway后必须是网关名称
tcpdump ip and not net localnet # 打印所有源地址或目标地址是本地主机的IP数据包 tcpdump ip and not net localnet # 打印所有源地址或目标地址是本地主机的IP数据包
tcpdump -i any port 80 -A # 抓取80端口的HTTP报文并以文本形式展示 tcpdump -i any port 80 -A # 抓取80端口的HTTP报文并以文本形式展示
``` ```

@ -5,8 +5,6 @@
**top命令** 可以实时动态地查看系统的整体运行情况是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提 **top命令** 可以实时动态地查看系统的整体运行情况是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提
供的互动式界面,用热键可以管理 供的互动式界面,用热键可以管理
## 选项
```markdown ```markdown
-b 以批处理模式操作 -b 以批处理模式操作
-c 显示完整的治命令 -c 显示完整的治命令

@ -5,8 +5,6 @@
**touch命令** 有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地 **touch命令** 有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地
保留下来;二是用来创建新的空文件 保留下来;二是用来创建新的空文件
## 选项
```markdown ```markdown
用法touch [选项]... 文件.. 用法touch [选项]... 文件..
@ -27,5 +25,5 @@
## 实例 ## 实例
```bash ```bash
touch -c -t 0304050607 file # 改变文件file的时间标签 touch -c -t 0304050607 file # 改变文件file的时间
``` ```

@ -2,47 +2,44 @@
## 说明 ## 说明
**tr命令** 可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令 **tr命令** 字符转换过滤器,可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令
## 选项
```markdown ```markdown
用法tr [选项]... SET1 [SET2] 用法tr [选项]... SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出 从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出
-c, -C, --complement 首先补足SET1,即取代所有不属于第一字符集的字符 -c, -C, --complement 首先补足SET1,即取代所有不属于第一字符集的字符
-d, --delete 删除匹配SET1 的内容,并不作替换 -d, --delete 删除匹配SET1 的内容,并不作替换
-s, --squeeze-repeats 如果匹配于SET1 的字符在输入序列中存在连续的重复,在替换时会被统一缩为一个字符的长度 -s, --squeeze-repeats 如果匹配于SET1 的字符在输入序列中存在连续的重复,在替换时会被统一缩为一个字符的长度
-t, --truncate-set1 先将SET1 的长度截为和SET2 相等 -t, --truncate-set1 先将SET1 的长度截为和SET2 相等
SET 是一组字符串,一般都可按照字面含义理解。解析序列如下: SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:
\NNN 八进制值为NNN 的字符(1 至3 个数位) \NNN 八进制值为NNN 的字符(1 至3 个数位)
\\ 反斜杠 \\ 反斜杠
\a 终端鸣响 \a 终端鸣响
\b 退格 \b 退格
\f 换页 \f 换页
\n 换行 \n 换行
\r 回车 \r 回车
\t 水平制表符 \t 水平制表符
\v 垂直制表符 \v 垂直制表符
字符1-字符2 从字符1 到字符2 的升序递增过程中经历的所有字符 字符1-字符2 从字符1 到字符2 的升序递增过程中经历的所有字符
[字符*] 在SET2 中适用指定字符会被连续复制直到吻合设置1 的长度 [字符*] 在SET2 中适用指定字符会被连续复制直到吻合设置1 的长度
[字符*次数] 对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数 [字符*次数] 对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
[:alnum:] 所有的字母和数字 [:alnum:] 所有的字母和数字
[:alpha:] 所有的字母 [:alpha:] 所有的字母
[:blank:] 所有呈水平排列的空白字符 [:blank:] 所有呈水平排列的空白字符
[:cntrl:] 所有的控制字符 [:cntrl:] 所有的控制字符
[:digit:] 所有的数字 [:digit:] 所有的数字
[:graph:] 所有的可打印字符,不包括空格 [:graph:] 所有的可打印字符,不包括空格
[:lower:] 所有的小写字母 [:lower:] 所有的小写字母
[:print:] 所有的可打印字符,包括空格 [:print:] 所有的可打印字符,包括空格
[:punct:] 所有的标点字符 [:punct:] 所有的标点字符
[:space:] 所有呈水平或垂直排列的空白字符 [:space:] 所有呈水平或垂直排列的空白字符
[:upper:] 所有的大写字母 [:upper:] 所有的大写字母
[:xdigit:] 所有的十六进制数 [:xdigit:] 所有的十六进制数
[=字符=] 所有和指定字符相等的字符 [=字符=] 所有和指定字符相等的字符
使用方式: tr '[:lower:]' '[:upper:]' 使用方式: tr '[:lower:]' '[:upper:]'
仅在SET1 和SET2 都给出,同时没有-d 选项的时候才会进行替换 仅在SET1 和SET2 都给出,同时没有-d 选项的时候才会进行替换

@ -1,25 +1,14 @@
traceroute # **traceroute**
===
显示数据包到主机间的路径
## 说明 ## 说明
**traceroute命令** 用于追踪数据包在网络上的传输时的全部路径它默认发送的数据包大小是40字节 **traceroute命令** 跟踪发送到远程主机的数据包所采用的路由。此命令可在LANWAN或Internet上运行。远程主机可以由IP地址指定
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点source到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的 通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点source到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的
traceroute通过发送小的数据包到目的设备直到其返回来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称如有的话及其ip地址 traceroute通过发送小的数据包到目的设备直到其返回来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称如有的话及其ip地址
## 选项 ```markdown
```
traceroute(选项)(参数)
```
```
-d使用Socket层级的排错功能 -d使用Socket层级的排错功能
-f<存活数值>设置第一个检测数据包的存活数值TTL的大小 -f<存活数值>设置第一个检测数据包的存活数值TTL的大小
-F设置勿离断位 -F设置勿离断位
@ -37,27 +26,10 @@ traceroute(选项)(参数)
-x开启或关闭数据包的正确性检验 -x开启或关闭数据包的正确性检验
``` ```
### 参数
主机指定目的主机IP地址或主机名
## 实例 ## 实例
``` ```bash
traceroute www.58.com traceroute www.58.com
traceroute to www.58.com (211.151.111.30), 30 hops max, 40 byte packets
1 unknown (192.168.2.1) 3.453 ms 3.801 ms 3.937 ms
2 221.6.45.33 (221.6.45.33) 7.768 ms 7.816 ms 7.840 ms
3 221.6.0.233 (221.6.0.233) 13.784 ms 13.827 ms 221.6.9.81 (221.6.9.81) 9.758 ms
4 221.6.2.169 (221.6.2.169) 11.777 ms 122.96.66.13 (122.96.66.13) 34.952 ms 221.6.2.53 (221.6.2.53) 41.372 ms
5 219.158.96.149 (219.158.96.149) 39.167 ms 39.210 ms 39.238 ms
6 123.126.0.194 (123.126.0.194) 37.270 ms 123.126.0.66 (123.126.0.66) 37.163 ms 37.441 ms
7 124.65.57.26 (124.65.57.26) 42.787 ms 42.799 ms 42.809 ms
8 61.148.146.210 (61.148.146.210) 30.176 ms 61.148.154.98 (61.148.154.98) 32.613 ms 32.675 ms
9 202.106.42.102 (202.106.42.102) 44.563 ms 44.600 ms 44.627 ms
10 210.77.139.150 (210.77.139.150) 53.302 ms 53.233 ms 53.032 ms
11 211.151.104.6 (211.151.104.6) 39.585 ms 39.502 ms 39.598 ms
12 211.151.111.30 (211.151.111.30) 35.161 ms 35.938 ms 36.005 ms
``` ```
记录按序列号从1开始每个纪录就是一跳 每跳表示一个网关我们看到每行有三个时间单位是ms其实就是`-q`的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用`traceroute -q 4 www.58.com`表示向每个网关发送4个数据包 记录按序列号从1开始每个纪录就是一跳 每跳表示一个网关我们看到每行有三个时间单位是ms其实就是`-q`的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用`traceroute -q 4 www.58.com`表示向每个网关发送4个数据包
@ -68,26 +40,8 @@ traceroute to www.58.com (211.151.111.30), 30 hops max, 40 byte packets
如果在局域网中的不同网段之间我们可以通过traceroute 来排查问题所在是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时我们用到traceroute 追踪数据包所经过的网关提交IDC服务商也有助于解决问题但目前看来在国内解决这样的问题是比较困难的就是我们发现问题所在IDC服务商也不可能帮助我们解决 如果在局域网中的不同网段之间我们可以通过traceroute 来排查问题所在是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时我们用到traceroute 追踪数据包所经过的网关提交IDC服务商也有助于解决问题但目前看来在国内解决这样的问题是比较困难的就是我们发现问题所在IDC服务商也不可能帮助我们解决
**跳数设置** ```bash
traceroute --icmp 198.124.42.201 # 使用traceroute查找路径中的跃点
```
[root@localhost ~]# traceroute -m 10 www.baidu.com
traceroute to www.baidu.com (61.135.169.105), 10 hops max, 40 byte packets
1 192.168.74.2 (192.168.74.2) 1.534 ms 1.775 ms 1.961 ms
2 211.151.56.1 (211.151.56.1) 0.508 ms 0.514 ms 0.507 ms
3 211.151.227.206 (211.151.227.206) 0.571 ms 0.558 ms 0.550 ms
4 210.77.139.145 (210.77.139.145) 0.708 ms 0.729 ms 0.785 ms
5 202.106.42.101 (202.106.42.101) 7.978 ms 8.155 ms 8.311 ms
6 bt-228-037.bta.net.cn (202.106.228.37) 772.460 ms bt-228-025.bta.net.cn (202.106.228.25) 2.152 ms 61.148.154.97 (61.148.154.97) 772.107 ms
7 124.65.58.221 (124.65.58.221) 4.875 ms 61.148.146.29 (61.148.146.29) 2.124 ms 124.65.58.221 (124.65.58.221) 4.854 ms
8 123.126.6.198 (123.126.6.198) 2.944 ms 61.148.156.6 (61.148.156.6) 3.505 ms 123.126.6.198 (123.126.6.198) 2.885 ms
9 * * *
10 * * *
```
其它一些实例
```
traceroute -m 10 www.baidu.com # 跳数设置 traceroute -m 10 www.baidu.com # 跳数设置
traceroute -n www.baidu.com # 显示IP地址不查主机名 traceroute -n www.baidu.com # 显示IP地址不查主机名
traceroute -p 6888 www.baidu.com # 探测包使用的基本UDP端口设置6888 traceroute -p 6888 www.baidu.com # 探测包使用的基本UDP端口设置6888
@ -95,5 +49,3 @@ traceroute -q 4 www.baidu.com # 把探测包的个数设置为值4
traceroute -r www.baidu.com # 绕过正常的路由表,直接发送到网络相连的主机 traceroute -r www.baidu.com # 绕过正常的路由表,直接发送到网络相连的主机
traceroute -w 3 www.baidu.com # 把对外发探测包的等待响应时间设置为3秒 traceroute -w 3 www.baidu.com # 把对外发探测包的等待响应时间设置为3秒
``` ```

@ -1,5 +1,4 @@
trap # trap
===
指定在接收到信号后将要采取的动作 指定在接收到信号后将要采取的动作
@ -7,19 +6,15 @@ trap
**trap命令** 用于指定在接收到信号后将要采取的动作常见的用途是在脚本程序被中断时完成清理工作。当shell接收到sigspec指定的信号时arg参数命令将会被读取并被执行。例如 **trap命令** 用于指定在接收到信号后将要采取的动作常见的用途是在脚本程序被中断时完成清理工作。当shell接收到sigspec指定的信号时arg参数命令将会被读取并被执行。例如
``` trap -[lp] [[arg] sigspec ...]
trap "exit 1" HUP INT PIPE QUIT TERM
```
表示当shell收到HUP INT PIPE QUIT TERM这几个命令时当前执行的程序会读取参数“exit 1”并将它作为命令执行
## 选项 ```bash
# 表示当shell收到HUP INT PIPE QUIT TERM这几个命令时当前执行的程序会读取参数“exit 1”并将它作为命令执行
trap "exit 1" HUP INT PIPE QUIT TERM
```
trap -[lp] [[arg] sigspec ...]
``` ```
参数说明 参数说明
如果arg参数缺省或者为“-”每个接收到的sigspec信号都将会被重置为它们进入shell时的值 如果arg参数缺省或者为“-”每个接收到的sigspec信号都将会被重置为它们进入shell时的值
@ -39,13 +34,13 @@ trap -[lp] [[arg] sigspec ...]
如果sigspec是ERRarg参数指定的命令将会在任何简单命名执行完后返回值为非零值时执行但是也有以下例外情况 如果sigspec是ERRarg参数指定的命令将会在任何简单命名执行完后返回值为非零值时执行但是也有以下例外情况
1. 如果执行失败的命令是紧跟在while或者until关键字之后的一组命令中的一部分时 1. 如果执行失败的命令是紧跟在while或者until关键字之后的一组命令中的一部分时
2. 如果执行失败的命令是if测试语句的一部分时&& 和 ||连接的列表中的一部分时 2. 如果执行失败的命令是if测试语句的一部分时&& 和 ||连接的列表中的一部分时
3. 如果执行失败的命令的返回值是被取反过的(通过!操作符) 3. 如果执行失败的命令的返回值是被取反过的(通过!操作符)
在以上情况中如果sigspec是ERRarg命令不会执行这些规则同样适用于errexit选项。如果sigspec是RETURNarg指定的命令在每次shell函数或者脚本用"."或者内置的命令执行完成后执行在shell入口处被忽略的命令 是没法被trap和reset的被trap的信号在创建的子进程中使用时会在子进程被创建时被重置为原始的值。如果trap使用的sigspec信号 是invalid的信号则trap命令返回false失败否则返回成功true 在以上情况中如果sigspec是ERRarg命令不会执行这些规则同样适用于errexit选项。如果sigspec是RETURNarg指定的命令在每次shell函数或者脚本用"."或者内置的命令执行完成后执行在shell入口处被忽略的命令 是没法被trap和reset的被trap的信号在创建的子进程中使用时会在子进程被创建时被重置为原始的值。如果trap使用的sigspec信号 是invalid的信号则trap命令返回false失败否则返回成功true
### 信号 ### 信号
信号是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程序活终端发送的命令(即信号)。应用程序收到信号后有三种处理方式忽略默认或捕捉。进程收到一个信号后会检查对该信号的处理机制。如果是SIG_IGN就忽略该信号如果是SIG_DFT则会采用系统默认的处理动作通常是终止进程或忽略该信号如果给该信号指定了一个处理函数(捕捉),则会中断当前进程正在执行的任务,转而去执行该信号的处理函数,返回后再继续执行被中断的任务 信号是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程序活终端发送的命令(即信号)。应用程序收到信号后有三种处理方式忽略默认或捕捉。进程收到一个信号后会检查对该信号的处理机制。如果是SIG_IGN就忽略该信号如果是SIG_DFT则会采用系统默认的处理动作通常是终止进程或忽略该信号如果给该信号指定了一个处理函数(捕捉),则会中断当前进程正在执行的任务,转而去执行该信号的处理函数,返回后再继续执行被中断的任务
@ -141,7 +136,7 @@ trap -[lp] [[arg] sigspec ...]
</table> </table>
### 捕获信号 ### 捕获信号
当你按下 Ctrl + C 键或 Break 键在终端一个shell程序的执行过程中正常程序将立即终止并返回命令提示符。这可能并不总是可取的。例如你可能最终留下了一堆临时文件将不会清理 当你按下 Ctrl + C 键或 Break 键在终端一个shell程序的执行过程中正常程序将立即终止并返回命令提示符。这可能并不总是可取的。例如你可能最终留下了一堆临时文件将不会清理
@ -155,10 +150,10 @@ $ trap commands signals
在shell脚本中的陷阱有三种常见的用途 在shell脚本中的陷阱有三种常见的用途
1. 清理临时文件 1. 清理临时文件
2. 忽略信号 2. 忽略信号
**1、清理临时文件** **1、清理临时文件**
trap命令作为一个例子下面展示了如何可以删除一些文件然后退出如果有人试图从终端中止程序 trap命令作为一个例子下面展示了如何可以删除一些文件然后退出如果有人试图从终端中止程序
@ -188,7 +183,7 @@ WORKDIR 值 $$ 所以在前面的例子中,将被取代 trap 命令执行的
$ trap 'rm $WORKDIR/work1$ $WORKDIR/dataout$; exit' 1 2 $ trap 'rm $WORKDIR/work1$ $WORKDIR/dataout$; exit' 1 2
``` ```
**2、忽略信号** **2、忽略信号**
如果陷阱列出的命令是空的,指定的信号接收时,将被忽略。例如,下面的命令: 如果陷阱列出的命令是空的,指定的信号接收时,将被忽略。例如,下面的命令:
@ -210,7 +205,7 @@ $ trap 2
如果你忽略了一个信号所有的子shell也忽略该信号。不过如果指定要采取的行动在收到的信号所有的子shell仍然会在收到该信号的默认操作 如果你忽略了一个信号所有的子shell也忽略该信号。不过如果指定要采取的行动在收到的信号所有的子shell仍然会在收到该信号的默认操作
**3、重设陷阱** **3、重设陷阱**
当你改变了默认在收到信号后应采取的动作,你可以改变它回来的陷阱,如果你只是省略第一个参数; 当你改变了默认在收到信号后应采取的动作,你可以改变它回来的陷阱,如果你只是省略第一个参数;
@ -219,5 +214,3 @@ $ trap 1 2
``` ```
复位应采取的动作收到信号1或2返回默认 复位应采取的动作收到信号1或2返回默认

@ -18,8 +18,6 @@ ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类
作为临时限制ulimit 可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。而对 作为临时限制ulimit 可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。而对
于长期的固定限制ulimit 命令语句又可以被添加到由登录 shell 读取的文件中,作用于特定的 shell 用户 于长期的固定限制ulimit 命令语句又可以被添加到由登录 shell 读取的文件中,作用于特定的 shell 用户
## 选项
```markdown ```markdown
-a显示目前资源限制的设定 -a显示目前资源限制的设定
-c <core>设定core文件的最大值单位为区块 -c <core>设定core文件的最大值单位为区块
@ -59,7 +57,4 @@ max user processes (-u) 98304 #当前用户同时打开的进
virtual memory (kbytes, -v) unlimited #没有限制进程的最大地址空间 virtual memory (kbytes, -v) unlimited #没有限制进程的最大地址空间
file locks (-x) unlimited #所能锁住的文件的最大个数没有限制 file locks (-x) unlimited #所能锁住的文件的最大个数没有限制
comment comment
``` ```

@ -1,79 +1,24 @@
umount # **umount**
===
用于卸载已经加载的文件系统
## 说明 ## 说明
**umount命令** 用于卸载已经加载的文件系统。利用设备名或挂载点都能umount文件系统不过最好还是通过挂载点卸载以免使用绑定挂载一个设备多个挂载点时产生混乱 **umount命令** 用于卸载已经加载的文件系统。利用设备名或挂载点都能umount文件系统不过最好还是通过挂载点卸载以免使用绑定挂载一个设备多个挂载点时产生混乱
## 选项 ```markdown
-a 卸除/etc/mtab中记录的所有文件系统
``` -h 显示帮助
umount(选项)(参数) -n 卸除时不要将信息存入/etc/mtab文件中
-r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统
-t<文件系统类型> 仅卸除选项中所指定的文件系统
-v 执行时显示详细的信息
``` ```
```
-a卸除/etc/mtab中记录的所有文件系统
-h显示帮助
-n卸除时不要将信息存入/etc/mtab文件中
-r若无法成功卸除则尝试以只读的方式重新挂入文件系统
-t<文件系统类型>:仅卸除选项中所指定的文件系统
-v执行时显示详细的信息
-V显示版本信息
```
### 参数
文件系统:指定要卸载的文件系统或者其对应的设备文件名
## 实例 ## 实例
下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息: ```bash
umount -v /dev/sda1 # 通过设备名卸载
通过设备名卸载 umount -v /mnt/mymount/ # 通过挂载点卸载
umount -vl /mnt/mymount/ # 延迟卸载,对付系统文件正忙的另一种方法是执行延迟卸载
```
umount -v /dev/sda1
/dev/sda1 umounted
```
通过挂载点卸载
```
umount -v /mnt/mymount/
/tmp/diskboot.img umounted
```
如果设备正忙卸载即告失败。卸载失败的常见原因是某个打开的shell当前目录为挂载点里的某个目录
```
umount -v /mnt/mymount/
umount: /mnt/mymount: device is busy
umount: /mnt/mymount: device is busy
```
有时导致设备忙的原因并不好找。碰到这种情况时可以用lsof列出已打开文件然后搜索列表查找待卸载的挂载点
eject /dev/cdrom 卸载并弹出CD
``` ```
lsof | grep mymount 查找mymount分区里打开的文件
bash 9341 francois cwd DIR 8,1 1024 2 /mnt/mymount
```
从上面的输出可知mymount分区无法卸载的原因在于francois运行的PID为9341的bash进程
对付系统文件正忙的另一种方法是执行延迟卸载:
```
umount -vl /mnt/mymount/ 执行延迟卸载
```
延迟卸载lazy unmount会立即卸载目录树里的文件系统等到设备不再繁忙时才清理所有相关资源。卸载可移动存储介质还可以用eject命令。下面这条命令会卸载cd并弹出CD
```
eject /dev/cdrom 卸载并弹出CD
```

@ -4,21 +4,18 @@
**uname命令** 用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等) **uname命令** 用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)
## 选项
```markdown ```markdown
用法uname [选项] 用法uname [选项]
输出一组系统信息。如果不跟随选项,则视为只附加-s 选项 输出一组系统信息。如果不跟随选项,则视为只附加-s 选项
-a, --all 以如下次序输出所有信息。其中若-p 和-i 的探测结果不可知则被省略 -a, --all 以如下次序输出所有信息。其中若-p 和-i 的探测结果不可知则被省略
-s, --kernel-name 输出内核名称 -s, --kernel-name 输出内核名称
-n, --nodename 输出网络节点上的主机名 -n, --nodename 输出网络节点上的主机名
-r, --kernel-release 输出内核发行号 -r, --kernel-release 输出内核发行号
-v, --kernel-version 输出内核版本 -v, --kernel-version 输出内核版本
-m, --machine 输出主机的硬件架构名称 -m, --machine 输出主机的硬件架构名称
-p, --processor 输出处理器类型或"unknown" -p, --processor 输出处理器类型或"unknown"
-i, --hardware-platform 输出硬件平台或"unknown" -i, --hardware-platform 输出硬件平台或"unknown"
-o, --operating-system 输出操作系统名称 -o, --operating-system 输出操作系统名称
``` ```
## 实例 ## 实例

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

Loading…
Cancel
Save