一、常用指令说明 #打印test1.txt文件内容,一屏输出,如果内容上千行,开头的行看不了 cat test1.txt

#查看系统版本号 cat /etc/redhat-release

#查看系统内核版本号 uname -r

#查看系统磁盘使用情况 df -h

#查看系统内存使用情况 free -m

#切换用户 su - cudo

#以超级用户权限执行 sudo ls /root/

#删除文件或目录 rm /tmp/test1.log

#创建文件 touch /tmp/test1.txt

#创建目录 mkdir -p /tmp/test1/{a,b,c}

#输出追加重定向 echo “123” >> /tmp/test1.txt

#输入追加重定向 cat >> /tmp/test <<EOF

123 456 EOF

#查看服务进程 ps -ef

#查看系统服务进程使用情况 top

#查看系统登录的账号信息 w

#打印文件内容前5行 head -n5 test1.txt

#打印文件内容后5行 tail -n5 test1.txt

#实时显示文件内容信息 tail -f test1.txt

#过滤关键字“root” grep “root” passwd

#过滤关键字“2017-1[0-2]”,日期以2017年10~12月的行 grep "2017-1[0-2]" test 2017-10-10 2017-12-10 2017-11-19 2017-12-20

#过滤关键字“10|12”,10或者12的行 grep -E "10|12" test 2017-10-09 2017-12-23 2017-12-10

#过滤注释的行和空行 grep -v "^#" test |grep -v "^$"

#过滤”28/Dec/2017“关键字,并将结果输出给后面的命令统计行数 grep "28/Dec/2017" yeah100_wechat_web_prd.access_28.log |wc -l

#替换文件内容,将”2017-00-09“替换为”2017-00-10“ sed -i "s#2017-00-09#2017-00-10#g" test

#以”-“为分隔符,打印第一段数据 awk -F '-' '{print $1}' test

#以”-“为分隔符,打印最后一段数据 awk -F '-' '{print $NF}' test

#访问日志过滤,以”28/Dec/2017“关键字,取第二段IP地址,统计 IP地址访问量 grep "28/Dec/2017" yeah100_wechat_web_prd.access_28.log |awk -F'|' '{print $2}' |sort -nr|uniq -c|sort -r 877 112.124.127.64 557 121.43.105.176

#查看一个月前大小为100M以上的文件,名为”test.” find / -name “test.” -type f -mtime +30 +size +100M

#批量替换文件内容 sed -i "s#333#111#g" grep "333" -rl /tmp/123/

#centos6 启动服务 service crond start

#centos7启动服务 systemctl start crond

二、指令详细说明 1、yum命令-用于安装软件包,解决依赖包关系 yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。 基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。 yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum语法格式: yum [options] [command] [package ...] ●options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为“yes”—),-q(不显示安装的过程)等等。 ●command:要进行的操作。 ●package:操作的对象。

yum常用命令 ●1.列出所有可更新的软件清单命令:yum check-update ●2.更新所有软件命令:yum update ●3.仅安装指定的软件命令:yum install <package_name> ●4.仅更新指定的软件命令:yum update <package_name> ●5.列出所有可安裝的软件清单命令:yum list ●6.删除软件包命令:yum remove <package_name> ●7.查找软件包 命令:yum search <keyword> ●8.清除缓存命令: ○yum clean packages: 清除缓存目录下的软件包 ○yum clean headers: 清除缓存目录下的 headers ○yum clean oldheaders: 清除缓存目录下旧的 headers ○yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers 实例1:安装git

yum install -y git

2、man命令-用于命令的帮助 实例1:查看yum命令的帮助文档

man yum #查看yum命令的帮助文档

yum(8) yum(8)

NAME yum - Yellowdog Updater Modified

SYNOPSIS yum [options] [command] [package ...]

3、ls命令-用于显示指定工作目录之内容(列出目前工作目录所含之文件及子目录) ls语法格式: ls [-alrtAFR] [name...] 参数说明: -a:显示所有文件及目录,包含隐藏文件及目录 -l:列出文件权限、拥有者、文件大小、日期等详细信息 -r:将文件以相反次序显示(原定依英文字母次序) -t:将文件依建立时间之后次序列出

实例1:

ls -lrta

-rw-------. 1 root root 0 Dec 4 02:57 yum.log drwxr-xr-x 3 root root 4096 Dec 18 06:34 123 dr-xr-xr-x. 24 root root 4096 Dec 25 01:35 .. drwxrwxrwt. 5 root root 4096 Dec 27 09:11 .

4、cat命令-用于连接文件并打印到标准输出设备上 cat语法格式: cat [-AbeEnstTuv] [--help] [--version] fileName 参数说明: -b 或 --number:由1开始对所有输出的行数编号 -n 或 --number-nonblank:和-n相似,只不过对空白行不编号

实例1:

cat -n test1

 1	dfkljdlfjldjfldjlkjl
 2	dfkljdljfl
 3

实例2:

cat -b test1

 1	dfkljdlfjldjfldjlkjl
 2	dfkljdljfl

5、touch命令-用于修改文件或目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件 touch语法格式: touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…] 参数说明: -a:更改文件的读取时间记录 -c:假如目的文件不存在,不会建立新的文件。与--no-create的效果一样 -m:更改文件的修改时间记录

实例1:

touch testfile

6、mkdir命令-用于创建目录之子目录 mkdir语法格式: mkdir [-p] dirName 参数说明: -p:目录不存在 ,递归创建目录及子目录

实例1:

mkdir -p /test1/{a,b,c} #创建test1目录及a,b,c子目录

/test1/ ├── a ├── b └── c

7、file命令-用于辨识文件类型 file语法格式: file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...] 参数说明: -b:列出辨识结果时,不显示文件名称 -v:显示版本信息

实例1:

file /tmp

/tmp: sticky directory

8、chattr命令-用于改变文件属性 这项指令可以改变存放在ext2文件系统上的文件或目录属性民,这些属性共有以下8种模式: a:让文件或目录仅花附加用途 b:不更新文件或目录 的最后存取时间 c:将文件或目录压缩后存放 d:将文件或目录排除在倾倒操作之外 i:不得任意更改文件或目录 s:保密性删除文件或目录 S:即时更新文件或目录 u:预防意外删除

chattr语法格式: chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...] 参数说明: -R:递归处理,将指定目录下的所有文件及子目录一并处理 -v<版本编号>:设置文件或目录版本 -V:显示指令执行过程 +<属性>:开启文件或目录的该项属性 -<属性>:关闭文件或目录的该项属性 =<属性>:指定文件或目录的该项属性

实例1:

lsattr /test1/resolv.conf

-------------e- /test1/resolv.conf

chattr +i /test1/resolv.conf #防止系统中某个关键文件被修改或删除

lsattr /test1/resolv.conf

----i--------e- /test1/resolv.conf

rm -f /test1/resolv.conf

rm: cannot remove `/test1/resolv.conf': Operation not permitted

9、diff命令-用于比较文件的差异 diff语法格式: diff [-C <行数>][文件或目录1][文件或目录2] 参数说明: -c:显示全部内容,并标出不同之处

实例1:

diff testfile1 testfile2

10、more命令-用于查看文件内容,类似于cat,不过会以一页一页的形式显示,更方便使用逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按b键就往回(back)一页显示,而且还有搜寻字串的功能(与vi相似),使用中的说明文件,请按h more语法格式: more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..] 参数说明: -s:当遇到有连续现行以上的空白行,就代换为一行的空白行

实例1:

more -s testfile

11、less命令-与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件 less语法格式: less [参数] 文件 参数说明: -i:忽略搜索时的大小写 -m:显示类似more命令的百分比 -N:显示每行的行号 -s:显示连续空行为一行 /字符串:向下搜索“字符串”的功能 ?字符串:向上搜索“字符串”的功能 n:重复前一个搜索(与/或?有关) N:反向重复前一个搜索(与/或?有关) b:向后翻一页 d:向后翻半页 h:显示帮助界面 Q:退出less命令 空格键:滚动一行 回车键:滚动一页

实例1:

less testfile1

附加备注 1.全屏导航 ●ctrl + F - 向前移动一屏 ●ctrl + B - 向后移动一屏 ●ctrl + D - 向前移动半屏 ●ctrl + U - 向后移动半屏 2.单行导航 ●j - 向前移动一行 ●k - 向后移动一行 3.其它导航 ●G - 移动到最后一行 ●g - 移动到第一行 ●q / ZZ - 退出 less 命令 4.其它有用的命令 ●v - 使用配置的编辑器编辑当前文件 ●h - 显示 less 的帮助文档 ●&pattern - 仅显示匹配模式的行,而不是整个文件 5.标记导航 当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置: ●ma - 使用 a 标记文本的当前位置 ●'a - 导航到标记 a 处

12、chgrp命令-用于文件或目录的所属组 chgrp语法格式: chgrp [-cfhRv][文件或目录...] 参数说明: -v或--verbose:显示指令执行过程 -R或--recursive:递归处理,将指定目录下的所有文件及子目录一并处理

实例1:

chgrp -v cudo testfile1 #改变文件的属组

实例2:

chgrp -R cudo dirName1 #递归改变目录下所有的文件及子目录的属组

13、chmod命令-用于文件或目录的拥有者、属组、其他 chmod语法格式: chmod [-cfvR] mode file... 参数说明: mode:权限设定字串,格式如下: [ugoa…] [[+-=][rwxX]...][,...] 其中: u:表示该 文件的拥有者,g表示与该文件的拥有者属于同一个组(group),o表示其他以外的人,a表示所有(ugo) +:表示增加权限,-表示取消权限,=表示唯一设定权限 r:表示可读取,w表示可写入,x表示可执行,X表示人有当该文件是个子目录或者该文件已经被设定过为可执行 其他参数说明: -v:显示权限变更的详细信息 -R:对目前目录下的所有文件与子目录进行相同的权限变更

实例1:

chmod ugo+r testfile1.txt #testfile1.txt文件拥有者、属组、其他人增加可读取权限

实例2:

chmod u+x,o-w testfile2.txt #testfile2.txt文件拥有者增加可执行权限,其他人取消可读取权限

14、chown命令-用于将文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以是组名或者组ID,文件是以空格分开的要改变权限的文件列表,支持通配符 chown语法格式: chown [-cfhvR] user[:group] file... 参数说明: -v:显示拥有者变更的详细资料 -R:对目前目录下的所有文件与子目录进行相同的拥有者变更 user:新的文件拥有者的使用者ID或用户名 group:新的文件拥有者的使用者组ID或组名

实例1: chown -R user1:group1 *

15、find命令-用于在指定目录下查找文件 find语法格式: find path -option [ -print ] [ -exec -ok command ] {} ; 参数说明: find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。 expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。 -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 -amin n : 在过去 n 分钟内被读取过 -anewer file : 比文件 file 更晚被读取过的文件 -atime n : 在过去 n 天过读取过的文件 -cmin n : 在过去 n 分钟内被修改过 -cnewer file :比文件 file 更新的文件 -ctime n : 在过去 n 天过修改过的文件 -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写 -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写 -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。 d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket -pid n : process id 是 n 的文件 你可以使用 ( ) 将运算式分隔,并使用下列运算。 exp1 -and exp2 ! expr -not expr exp1 -or exp2 exp1, exp2

实例1:

find . -name “*.c” #查找当前目录及其子目录下所有文件名后缀为c的文件列出来

实例2:

find . -type f #查找当前目录及其子目录下所有文件

实例3:

find . -mtime +30 #查找当前目录及其子目录下一个月前的目录和文件

实例4:

find /var/logs -type f -mtime +7 -ok rm {} ; #查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们

实例5:

find . -type f -perm 644 -exec ls -l {} ; #查找当前目录及其子目录文件属主具有读、写权限,并且文件所性组的用户和其他用户具有读取权限的文件

16、cut命令-用于显示每行从开头算起 num1 到 num2 的文字 cut语法格式: cut [-bn] [file] cut [-c] [file] cut [-df] [file] 参数说明: -b:以字节为单位进行分割。这些字节位置将忽略多字节符边界,除非也指定了-n标志 -n:取消分割多字节字符。仅和-b标志一起使用 -c:以字符为单位进行分割 -d:自定义分隔符,默认为制表符 -f:与-d标志一起使用,指定显示哪个区域

实例1:

who |cut -b 3 #提取每一行的第3个字节

17、ln命令-用于链接文件或目录(link),类似于windows的快捷方式 ln语法格式: ln [参数][源文件或目录][目标文件或目录] 参数说明: -s:软链接(符号链接) -v:显示详细的处理过程

命令功能: Linux文件系统中,有所谓的链接(link),而链接又可分为两种:硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨不同的文件系统。 不论是硬链接或者是软链接都不会将原本的档案复制一份,只会占用非常少量的磁盘空间。 软链接: ●软链接,以路径的形式存在,类似于windows操作系统中的快捷方式 ●软链接可以跨文件系统,硬链接不可以 ●软链接可以对一个不存在的文件进行链接 ●软链接可以对目录进行链接 硬链接: ●硬链接,以文件副本的形式存在 ,但不占用实际磁盘空间 ●不允许给目录创建硬链接 ●硬链接只有在同一个文件系统中才能创建

注意:当创建了软链接目录时,要删除软链接目录需要注意 ln -sv dirname1/ hard_dirname1 rm -rf hard_dirname1 #直接删除硬链接,不删除硬链接内容 rm -rf hard_dirname1/ #删除硬链接内容,不删除硬链接

实例1:

ln -sv file1 link1 #为file1文件创建软链接link1,如果file1丢失,link1将失效

18、mv命令-用于文件或目录重命名、或将文件或目录移动到其它位置 mv语法格式: mv [options] source dest mv [options] source... directory 参数说明: -i:指定目录已有同名文件,则先询问是否覆盖旧文件 -f:在mv操作要覆盖某已有的目标文件时不给任何提示

mv参数设置与运行结果 命令格式 运行结果 mv 文件名 文件名 将源文件名改为目标文件名 mv 文件名 目录名 将文件移动到目标目录 mv 目录名 目录名 目标目录已存在,将源目录 移动到目标目录;目标 目录不存在则改名 mv 目录名 文件名 出错

实例1:

mv aaa bbb #将文件aaa重命名为bbb

19、rm命令-用于删除一个文件或目录 rm语法格式: rm [options] name... 参数说明: -i:删除前询问确认 -f:直接删除,不提示 -r:将目录及以下所有文件及子目录全部删除

实例1:

rm test.txt

实例2:

rm -r /test1

20、split命令-用于将一个文件分割成数个 split语法格式: split [-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名] 参数说明: -b<字节>:指定每多少字节切成一个小文件 -C<字节>:与参数”-b“相似,但是在切割时尽量维持每行的完整性 [输出文件名]:设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号

实例1:

split -6 test1 test1_split #将test1文件每6行进行切割一个文件,切割后的文件名前置为test1_splitxx

21、cp命令-用于复制文件或目录 cp语法格式: cp [options] source dest 参数说明: -a:复制目录时使用,它保留链接、文件属性、并复制目录下的所有内容 -d:复制时保留链接 -f:覆盖已经存在的目标文件而不给出提示 -i:与-f相反 -p:除复制文件的内容外,两袖清风把修改时间和访问权限也复制到新文件中 -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件

实例1:

cp -rp dirname1/ newname1 #将当前目录”dirname1“下的所有文件复制到新目录”newname1”下

22、which命令-用于查找命令的绝对路径 which语法格式: which [文件...]

实例1:

which touch

/bin/touch

23、tree命令-用于以树状图形列出目录的内容 tree语法格式: tree [-aACdDfFgilnNpqstux][目录...] 参数说明: -a:显示所有文件和目录

实例1:

tree -a /test1/

/test1/ ├── a │ ├── resolv.conf │ ├── splitaa │ └── splitab ├── b │ └── resolv.conf ├── c └── resolv.conf

24、scp命令-用于基于ssh登录进行远程拷贝文件或目录(secure copy) scp语法格式: scp [可选参数] file_source file_target 参数说明: -r:递归复制整个目录 -p:保留原文件的修改时间,访问时间和访问权限 -P port:注意是大写的P,port是指定数据传输用到的端口号

实例1: scp -rp dir_source dir_target

实例2: scp -P 22 file_source file_target

25、cd命令-用于切换目录 cd语法格式: cd [dirName]

实例1: cd /tmp

26、grep命令-用于查找文件里符合条件的字符串 grep语法格式: grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][文件或目录...] 参数说明: -A<显示列数>:符合条件后,显示该列之后的内容 -B<显示列数>:符合条件后,显示该列之前的内容 -C<显示列数>:符合条件后,显示该列之前、之后的内容 -i:忽略大小写 -E或--extended-regexp:将范本样式为延伸的普通表示法来使用 -r:递归查找文件内容 -l:列出文件内容符合指定的范本样式的文件名称

实例1:

grep -r dirname1

实例2:

ps -ef |grep 22 # “|”管道过滤,将前面的结果输出给后面的命令

27、sort命令-用于将文本文件内容加以排序 sort语法格式: sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][文件] 参数说明: -n:依照数值的大小排序 -r:以相反的顺序来排序

实例1:

sort -nr testfile #反向排序

28、uniq命令-用于检查及删除文本文件中重复出现的行列 uniq语法格式: uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][输入文件][输出文件] 参数说明: -c:在每列旁边显示该行重复出现的次数 -u:仅显示出一次的行列

实例1:

sort -nr test.txt |uniq -c #uniq命令要结合sort排序命令一起使用

29、wc命令-用于计算字数 wc语法格式: wc [-clw] [文件...] 参数说明: -c:只显示Bytes数 -l:只显示行数 -w:只显示字数

实例1:

wc -wcl testfile1

30、df命令-用于查看显示当前在Linux系统上的文件系统的磁盘使用情况统计 df语法格式: df [选项]... [FILE]... 参数说明: -i:列出inode,不列出已使用的block -h:以k、m、g单位显示 -T:显示文件系统类型

实例1:

df -h

Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_ever225pythontest-lv_root 50G 11G 37G 23% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 477M 40M 412M 9% /boot /dev/mapper/vg_ever225pythontest-lv_home 45G 52M 43G 1% /home

31、du命令-用于显示目录或文件的大小 du语法格式: du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][目录或文件] -s:仅显示总计 -h:以K、M、G为单位

实例1:

du -sh /tmp

32、pwd命令-用于打印当前路径 实例1:

pwd

33、mount命令-用于挂载Linux系统外的文件 mount语法格式: mount [-hV] mount -a [-fFnrsvw] [-t vfstype] mount [-fnrsvw] [-o options [,...]] device | dir mount [-fnrsvw] [-t vfstype] [-o options] device dir 参数说明: -a:将/etc/fstab中定义的所有档案系统挂载上 -t:指定档案系统文件类型,通常不必指定,mount会自动选择正确的文件类型

实例1:

mount /dev/sda1 /mnt

34、umount命令-用于卸载Linux目录中的文件系统 umount语法格式: umount [-ahnrvV][-t <文件系统类型>][文件系统] 参数说明: -a:卸载/etc/fstab中记录的所有文件系统 -t<文件系统类型>:仅卸载选项中所指定的文件系统

实例1: umount /mnt

35、stat命令-用于显示inode内容 stat语法格式: stat [文件或目录]

实例1:

stat test.txt

File: `test.txt' Size: 19 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 917515 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-12-28 15:53:38.738836486 +0800 Modify: 2017-12-28 15:53:36.347837130 +0800 Change: 2017-12-28 15:53:36.348837183 +080

36、tar命令-用于备份文件 tar语法格式: tar [参数] [压缩文件] [文件或目录] 参数说明: -z或--gzip或--ungzip:通过gzip指令处理备份文件 -j:通过bzip2指令处理备份文件 -c或--create:建立新的备份文件 -x或--extract或--get:从备份文件中还原文件 -v或--verbose:显示指令执行过程 -f<备份文件>或--file=<备份文件>:指定备份文件

实例1:

tar -zcvf test.tar.gz test #压缩文件

实例2:

tar -zxvf test.tar.gz #解压文件

37、useradd命令-用于建立用户账号 UID分配方法: 0:root用户ID 1~499:大多是系统服务或软件厂商自定义的ID 500开始往后为普通用户ID

useradd语法格式: useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号] 参数说明: -c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中 -d<登录目录>:指定用户登入时的启始目录 -D:变更预设值 -e<有效期限>:指定账号的有效期限 -f<缓冲天数>:指定在密码过期后多少天即关闭该账号 -g<群组>:指定用户所属的群组 -G<群组>:指定用户所属的附加群组 -m:自动建立用户的登入目录 -M:不要自动建立用户的登入目录 -n:取消建立以用户名称为名的群组 -r:建立系统账号 -s<shell>:指定用户登入后使用的shell -u<uid>:指定用户UID

实例1:

useradd tt #添加普通用户

实例2:

useradd caojh -u 500 #建立用户并指定ID号

38、userdel命令-用于删除用户账号 userdel语法格式: userdel [-r][用户帐号] 参数说明: -r:删除用户登入目录以及目录中所有文件

实例1:

userdel haha

39、usermod命令-用于修改用户账号 usermod语法格式: usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号] 参数说明: -c<备注>:修改用户账号的备注文字 -d<登入目录>:修改用户登入时的目录 -e<有效期限>:修改账号的有效期限 -f<缓冲天数>:修改在密码过期后多少天即关闭该账号 -g<群组>:修改用户所属的群组 -G<群组>:修改用户所属的附加群组 -l<账号名称>:修改用户账号名称 -L:锁定用户密码,使密码无效 -s<shell>:修改用户登入后所使用的shell -u<uid>:修改用户UID -U:解除密码锁定

实例1:

usermod -d /home/haha root

40、dd命令-用于读取、转换并输出数据 参数说明: if=文件名:输入文件名,缺省为标准输入。即指定源文件 of=文件名:输出文件名,缺省为标准输出。即指定目的文件 bs=bytes:同时设置读入/输出的块大小为bytes个字节

实例1:

dd if=boot.img of=/dev/fd0 bs=1440k #在Linux下制作启动盘

41、ps命令-用于显示当前进程(process)的状态 ps语法格式: ps [options] [--help] 参数说明:

●ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 ●-A 列出所有的行程 ●-w 显示加宽可以显示较多的资讯 ●-au 显示较详细的资讯 ●-aux 显示所有包含其他使用者的行程 ●au(x) 输出格式 : ●USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ●USER: 行程拥有者 ●PID: pid ●%CPU: 占用的 CPU 使用率 ●%MEM: 占用的记忆体使用率 ●VSZ: 占用的虚拟记忆体大小 ●RSS: 占用的记忆体大小 ●TTY: 终端的次要装置号码 (minor device number of tty) ●STAT: 该行程的状态: ●D: 不可中断的静止 (通悸□□缜b进行 I/O 动作) ●R: 正在执行中 ●S: 静止状态 ●T: 暂停执行 ●Z: 不存在但暂时无法消除 ●W: 没有足够的记忆体分页可分配 ●<: 高优先序的行程 ●N: 低优先序的行程 ●L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O) ●START: 行程开始时间 ●TIME: 执行的时间 ●COMMAND:所执行的指令 实例1:

ps -A #显示进程信息

实例2:

ps -ef #显示所有命令,连带命令行

42、top命令-用于实时显示进程(process)的状态 top语法格式:

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 参数说明: ●d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s ●q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 ●c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 ●s : 安全模式,将交谈式指令取消, 避免潜在的危机 ●i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 ●n : 更新的次数,完成后将会退出 top ●b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

实例1:

top #实时显示进程信息

实例2:

top -n 1 #设备信息更新次数

43、awk命令-是一种处理文本文件的语言,是一个强大的文本分析工具 awk语法格式: awk [选项参数] 'script' var=value file(s) 或 awk [选项参数] -f scriptfile var=value file(s)

●-F fs or --field-separator fs ●指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。 ●-v var=value or --asign var=value ●赋值一个用户定义变量。 ●-f scripfile or --file scriptfile ●从脚本文件中读取awk命令。 ●-mf nnn and -mr nnn ●对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。 ●-W compact or --compat, -W traditional or --traditional ●在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。 ●-W copyleft or --copyleft, -W copyright or --copyright ●打印简短的版权信息。 ●-W help or --help, -W usage or --usage ●打印全部awk选项和每个选项的简短说明。 ●-W lint or --lint ●打印不能向传统unix平台移植的结构的警告。 ●-W lint-old or --lint-old ●打印关于不能向传统unix平台移植的结构的警告。 ●-W posix ●打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符=不能代替^和^=;fflush无效。 ●-W re-interval or --re-inerval ●允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。 ●-W source program-text or --source program-text ●使用program-text作为源代码,可与-f命令混用。 ●-W version or --version ●打印bug报告信息的版本。 基本用法 log.txt文本内容如下: 2 this is a test 3 Are you like awk This's a test 10 There are orange,apple,mongo 用法一: awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号 实例:

每行按空格或TAB分割,输出文本中的1、4项

$ awk '{print $1,$4}' log.txt

2 a 3 like This's 10 orange,apple,mongo

格式化输出

$ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt

2 a 3 like This's 10 orange,apple,mongo

用法二: awk -F #-F相当于内置变量FS, 指定分割字符 实例:

使用","分割

$ awk -F, '{print $1,$2}' log.txt

2 this is a test 3 Are you like awk This's a test 10 There are orange apple

或者使用内建变量

$ awk 'BEGIN{FS=","} {print $1,$2}' log.txt

2 this is a test 3 Are you like awk This's a test 10 There are orange apple

使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割

$ awk -F '[ ,]' '{print $1,$2,$5}' log.txt

2 this test 3 Are awk This's a 10 There apple 用法三: awk -v # 设置变量 实例: $ awk -va=1 '{print $1,$1+a}' log.txt

2 3 3 4 This's 1 10 11 $ awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt

2 3 2s 3 4 3s This's 1 This'ss 10 11 10s 用法四: awk -f {awk脚本} {文件名} 实例: $ awk -f cal.awk log.txt

运算符 运算符 描述 = += -= *= /= %= ^= **= 赋值 ?: C条件表达式 || 逻辑或 && 逻辑与 ~ ~! 匹配正则表达式和不匹配正则表达式 < <= > >= != == 关系运算符 空格 连接

    • 加,减
  • / % 乘,除与求余
    • ! 一元加,减和逻辑非 ^ *** 求幂 ++ -- 增加或减少,作为前缀或后缀 $ 字段引用 in 数组成员 过滤第一列大于2的行 $ awk '$1>2' log.txt #命令 #输出 3 Are you like awk This's a test 10 There are orange,apple,mongo 过滤第一列等于2的行 $ awk '$1==2 {print $1,$3}' log.txt #命令 #输出 2 is 过滤第一列大于2并且第二列等于'Are'的行 $ awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt #命令 #输出 3 Are you

内建变量 变量 描述 $n 当前记录的第n个字段,字段间由FS分隔 $0 完整的输入记录 ARGC 命令行参数的数目 ARGIND 命令行中当前文件的位置(从0开始算) ARGV 包含命令行参数的数组 CONVFMT 数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组 ERRNO 最后一个系统错误的描述 FIELDWIDTHS 字段宽度列表(用空格键分隔) FILENAME 当前文件名 FNR 各文件分别计数的行号 FS 字段分隔符(默认是任何空格) IGNORECASE 如果为真,则进行忽略大小写的匹配 NF 输入字段分割符 NR 已经读出的记录数,就是行号,从1开始 OFMT 数字的输出格式(默认值是%.6g) OFS 输出记录分隔符(输出换行符),输出时用指定的符号代替换行符 ORS 输出记录分隔符(默认值是一个换行符) RLENGTH 由match函数所匹配的字符串的长度 RS 记录分隔符(默认是一个换行符) RSTART 由match函数所匹配的字符串的第一个位置 SUBSEP 数组下标分隔符(默认值是/034) $ awk 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}' log.txt FILENAME ARGC FNR FS NF NR OFS ORS RS

log.txt 2 1 5 1 log.txt 2 2 5 2 log.txt 2 3 3 3 log.txt 2 4 4 4 $ awk -F' 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}' log.txt FILENAME ARGC FNR FS NF NR OFS ORS RS

log.txt 2 1 ' 1 1 log.txt 2 2 ' 1 2 log.txt 2 3 ' 2 3 log.txt 2 4 ' 1 4

输出顺序号 NR, 匹配文本行号

$ awk '{print NR,FNR,$1,$2,$3}' log.txt

1 1 2 this is 2 2 3 Are you 3 3 This's a test 4 4 10 There are

指定输出分割符

$ awk '{print $1,$2,$5}' OFS=" $ " log.txt

2 $ this $ test 3 $ Are $ awk This's $ a $ 10 $ There $

使用正则,字符串匹配

输出第二列包含 "th",并打印第二列与第四列

$ awk '$2 ~ /th/ {print $2,$4}' log.txt

this a ~ 表示模式开始。// 中是模式。

输出包含"re" 的行

$ awk '/re/ ' log.txt

3 Are you like awk 10 There are orange,apple,mongo

忽略大小写 $ awk 'BEGIN{IGNORECASE=1} /this/' log.txt

2 this is a test This's a test

模式取反 $ awk '$2 !~ /th/ {print $2,$4}' log.txt

Are like a There orange,apple,mongo $ awk '!/th/ {print $2,$4}' log.txt

Are like a There orange,apple,mongo

awk脚本 关于awk脚本,我们需要注意两个关键词BEGIN和END。 ●BEGIN{ 这里面放的是执行前的语句 } ●END {这里面放的是处理完所有的行后要执行的语句 } ●{这里面放的是处理每一行时要执行的语句} 假设有这么一个文件(学生成绩表): $ cat score.txt Marry 2143 78 84 77 Jack 2321 66 78 45 Tom 2122 48 77 71 Mike 2537 87 97 95 Bob 2415 40 57 62 我们的awk脚本如下: $ cat cal.awk #!/bin/awk -f #运行前 BEGIN { math = 0 english = 0 computer = 0

printf "NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL\n"
printf "---------------------------------------------\n"

} #运行中 { math+=$3 english+=$4 computer+=$5 printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5 } #运行后 END { printf "---------------------------------------------\n" printf " TOTAL:%10d %8d %8d \n", math, english, computer printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR } 我们来看一下执行结果: $ awk -f cal.awk score.txt NAME NO. MATH ENGLISH COMPUTER TOTAL

Marry 2143 78 84 77 239 Jack 2321 66 78 45 189 Tom 2122 48 77 71 196 Mike 2537 87 97 95 279 Bob 2415 40 57 62 159

TOTAL: 319 393 350 AVERAGE: 63.80 78.60 70.00

另外一些实例 AWK的hello world程序为: BEGIN { print "Hello, world!" } 计算文件大小 $ ls -l *.txt | awk '{sum+=$6} END {print sum}'

666581 从文件中找出长度大于80的行 awk 'length>80' log.txt 打印九九乘法表 seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}' 更多详细内容可以查看 AWK 官方手册:http://www.gnu.org/software/gawk/manual/gawk.html

44、sed命令-利用script来处理文本文件,编辑文本文件 sed语法格式: sed [-hnV][-e<script>][-f<script文件>][文本文件] 参数说明: ●-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。 ●-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。 ●-h或--help 显示帮助。 ●-n或--quiet或--silent 仅显示script处理后的结果。 ●-V或--version 显示版本信息。 动作说明 : ●a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ ●c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! ●d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; ●i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); ●p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~ ●s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦! 实例 在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令: sed -e 4a\newLine testfile 首先查看testfile中的内容如下: $ cat testfile #查看testfile 中的内容
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test 使用sed命令后,输出结果如下: $ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串
HELLO LINUX! #testfile文件原有的内容
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
newline 以行为单位的新增/删除 将 /etc/passwd 的内容列出并且列印行号,同时,请将第 2~5 行删除! [root@www ~]# nl /etc/passwd | sed '2,5d' 1 root:x:0:0:root:/root:/bin/bash 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown .....(后面省略)..... sed 的动作为 '2,5d' ,那个 d 就是删除!因为 2-5 行给他删除了,所以显示的数据就没有 2-5 行罗~ 另外,注意一下,原本应该是要下达 sed -e 才对,没有 -e 也行啦!同时也要注意的是, sed 后面接的动作,请务必以 '' 两个单引号括住喔! 只要删除第 2 行 nl /etc/passwd | sed '2d' 要删除第 3 到最后一行 nl /etc/passwd | sed '3,$d' 在第二行后(亦即是加在第三行)加上『drink tea?』字样! [root@www ~]# nl /etc/passwd | sed '2a drink tea' 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin drink tea 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin .....(后面省略)..... 那如果是要在第二行前 nl /etc/passwd | sed '2i drink tea' 如果是要增加两行以上,在第二行后面加入两行字,例如『Drink tea or .....』与『drink beer?』 [root@www ~]# nl /etc/passwd | sed '2a Drink tea or ......\

drink beer ?' 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin Drink tea or ...... drink beer ? 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin .....(后面省略)..... 每一行之间都必须要以反斜杠『 \ 』来进行新行的添加喔!所以,上面的例子中,我们可以发现在第一行的最后面就有 \ 存在。 以行为单位的替换与显示 将第2-5行的内容取代成为『No 2-5 number』呢? [root@www ~]# nl /etc/passwd | sed '2,5c No 2-5 number' 1 root:x:0:0:root:/root:/bin/bash No 2-5 number 6 sync:x:5:0:sync:/sbin:/bin/sync .....(后面省略)..... 透过这个方法我们就能够将数据整行取代了! 仅列出 /etc/passwd 文件内的第 5-7 行 [root@www ~]# nl /etc/passwd | sed -n '5,7p' 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown </p><p> 可以透过这个 sed 的以行为单位的显示功能, 就能够将某一个文件内的某些行号选择出来显示。 </p> <h3>数据的搜寻并显示</h3> <p>搜索 /etc/passwd有root关键字的行</p> <pre> nl /etc/passwd | sed '/root/p' 1 root:x:0:0:root:/root:/bin/bash 1 root:x:0:0:root:/root:/bin/bash 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 3 bin:x:2:2:bin:/bin:/bin/sh 4 sys:x:3:3:sys:/dev:/bin/sh 5 sync:x:4:65534:sync:/bin:/bin/sync ....下面忽略 如果root找到,除了输出所有行,还会输出匹配行。 使用-n的时候将只打印包含模板的行。 nl /etc/passwd | sed -n '/root/p' 1 root:x:0:0:root:/root:/bin/bash 数据的搜寻并删除 删除/etc/passwd所有包含root的行,其他行输出 nl /etc/passwd | sed '/root/d' 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh 3 bin:x:2:2:bin:/bin:/bin/sh ....下面忽略 #第一行的匹配root已经删除了 数据的搜寻并执行命令 搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行: nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}'
1 root:x:0:0:root:/root:/bin/blueshell 最后的q是退出。 数据的搜寻并替换 除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的搜寻并取代。基本上 sed 的搜寻与替代的与 vi 相当的类似!他有点像这样: sed 's/要被取代的字串/新的字串/g' 先观察原始信息,利用 /sbin/ifconfig 查询 IP [root@www ~]# /sbin/ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 .....(以下省略)..... 本机的ip是192.168.1.100。 将 IP 前面的部分予以删除 [root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 接下来则是删除后续的部分,亦即: 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 将 IP 后面的部分予以删除 [root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.addr://g' | sed 's/Bcast.$//g' 192.168.1.100 多点编辑 一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/' 1 root:x:0:0:root:/root:/bin/blueshell 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh -e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。 直接修改文件内容(危险动作) sed 可以直接修改文件的内容,不必使用管道命令或数据流重导向! 不过,由於这个动作会直接修改到原始的文件,所以请你千万不要随便拿系统配置来测试! 我们还是使用下载的 regular_express.txt 文件来测试看看吧! 利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 ! [root@www ~]# sed -i 's/.$/!/g' regular_express.txt 利用 sed 直接在 regular_express.txt 最后一行加入『# This is a test』 [root@www ~]# sed -i '$a # This is a test' regular_express.txt

45、head命令-用于打印文件内容开头的行 head语法格式: head [参数] [文件...] 参数说明: -n<行数>:显示行数

实例1: head -n1 testfile1

46、tail命令-用于打印文件内容结尾的行 tail语法格式: tail [参数] [文件...] 参数说明: -n<行数>:显示行数 -f:实时动态显示

实例1: tail -n1 testfile1

实例2: tail -f testfile1