说明:
把档案串连接后传到基本输出。
参数:
- -n 由 1 开始对所有的输出行进行编号
- -b 和 -n 相似,只不过对空白行不编号
- -s 把连续两行以上的空白行替换为一行的空白行
范例:
- cat -n file1 > file2
- cat -b file1 file2 >> file3
- cat << EOF > file
说明:
变更所属群组
参数:
- -c 效果类似”-v”参数,但仅回报更改的部分
- –reference=<参考文件或目录> 把指定文件的所属群组设成和参考的相同
说明:
更改权限
权限范围表示如下: * u: User * g: Group * o: Other * a: All
权限代号如下: * r: 读,”4” * w: 写,”2” * x: 执行,”1” * -: 不具任何权限,”0” * s: 特殊功能
范例:
- chmod -v u+x file
- chmod -R 744 doc
用法:
cut -xn1-n2 filename
Note
n1 从1开始! x 取值为 b,c,f
参数:
- -b 只输出这些字节
- -c 只输出这些字母
- -f 只输出这些域
- -d 指定分隔符
范例:
- date | cut -d ‘ ‘ -f5 | cut -d : -f1
说明:
比较文件的差异。以逐行的方式,比较文本文件的异同处。若比较目录,则会比较目录中相同文件名的文件,但不会比较其中的子目录。
参数:
- -b 不检查空行字符的不同
- -B 不检查空白行
- -c 显示全部内文,标出不同处
- -i 不检查大小写的不同
- -l 结果交由pr程序来分页
- -r 比较子目录中的文件
说明:
查找。查找符合条件的文件。任何位于参数之前的字符串都被视为欲查找的目录。
参数:
- -a/cmin [+/-]n “+”之前,”-“之后,分钟
- -a/ctime [+/-]n 天
- -a/cnewer<参考文件或目录> a 的意思为“存取”,c 的意思为“更改”
- -expty 空文件或空目录
- -exec<执行命令> 假设find指令的返回值为true,就执行该命令
- -size<文件大小> 符合文件大小的文件
- -type<文件类型> 指定的文件类型
范例:
- find ~/doc -ctime -1 #在 ~/doc 下查找更改时间小于1天的文件
- find /tmp -name core -type f -print | xargs /bin/rm -f
- find /usr/lib -name *.so
- find . -name “*.c” | xargs cat | grep -v ^$ | wc -l # 统计当前目录下c代码的行数
其它文件
说明:
修补文件。利用设置修补文件的方式,修改,更新原始文件。
参数:
- -p0 从当前目录查找目的文件(夹)
- -p1 忽略掉第一层目录
- -E 如果发现了新文件,就删除它
- -R 在补丁文件中的“新”文件和“旧”文件现在要调换过来(实际上就是给新版本打补丁,让它变成老版本)
示例:
- patch -p0 < test.path % 使用test.path 文件在当前目录打补丁
- patch -RE -p0 < test.path % 去掉补丁,恢复旧版本
说明:
删除文件或目录。如欲删除目录必须加上参数”-r”。
参数:
- -r 递归处理,指定文件目录下的所有文件及子目录一并处理
- -f 强制删除
- -i 删除既有文件或目录之前询问用户
说明:
切割文件,预设每1000行会切成一个小文件。
参数:
- -<行数> 指定小文件的行数
- -b<字节> 指定小文件的字节数
- -C<字节> 与的-b参数类似,当切割尽量维持每行的完整性
- [输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后加上编号
说明:
读取标准输入的数据,将其内容输出到标准输出和每个文件。
参数:
- -a 追加到文件后面
- -i 忽略中断信号
示例:
- echo “same words” | tee -a file
- prog1 < infile | tee fifo | prpg2
说明:
改变文件或目录的时间
参数:
- -a 只更改存取时间
- -c 不建立任何文件
- -d<日期> 使用指定的日期,而非现在
- -m 只更改修改时间
- -t<时间> 使用指定的时间
说明:
指定在建立文件时预设的权限掩码。权限掩码是由3个八进制的数字所组成,将现有的存储权限减掉权限掩码后,即可产生建立文件时预设的权限。
参数:
- -S 以文字方式来表示权限掩码
说明:
在特定目录中查找符合条件的文件。
参数:
- -b 只查找二进制文件
- -B<目录> 只在设置的目录下查找二进制文件
- -m 只查找说明文件
- -M<目录>
- -s 只查找原始代码文件
- -S<目录>
说明:
在文件内查找指定的字符串。egrep执行效果如grep -E,使用的语法及参数可参照 [[#grep|grep]] 指令,与grep不同点在于解读字符串的方法,egrep使用extended regular experssion语法来解读,二grep则是用basic regular expression语法来解读。
说明:
查找文件里符合条件的字符串。
参数:
- -<行数> 显示匹配行的前后行
- -a 不要忽略二进制数据
- -A<显示列数>或–after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容
- -B<显示列数>或–before-context=<显示列数>
- -c 打印匹配的列数,不显示匹配的内容
- -e<范本样式>或–regexp=<范本样式> 定字符串做为查找文件内容的范本样式。
- -E或–extended-regexp 将范本样式为延伸的普通表示法来使用。
- -f<范本文件>或–file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
- -h 当搜索多个文件时,不显示匹配文件名前缀
- -i 忽略大小写的差别
- -n 表示出列编号
- -v 反转检索,只显示不匹配的行
- -w 如果被<和>引用,就把表达式作为一个单词搜索
- -o 输出每行匹配的部分,一个匹配一行
- -P 使用Perl正则表达式
示例:
- ls -l | grep ‘^a’
显示以a开头的行
- grep ‘test’ d*
显示所有以d开头的文件中包含test的行
- grep ‘w(es)t.*1’ aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(1),找到就显示该行。如果用egrep或grep -E,就不用”“号进行转义,直接写成’w(es)t.*1’就可以了。
grep ‘[0-9]{3}.[0-9]{3}.’ ipfile
- grep -Po ‘(?<=w[)[a-zA-Z_]w*(?=])’ r.sql | uniq | wc -l
在r.sql文件中找出有多少个“与正则表达式匹配”
说明:
利用script来处理文本文件
- sed
- 是一种在线编辑器,它一次处理一行内容。
- 定址
- 可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分割的两个行数表示起至行的范围。
命令:
- a
- 在当前行后面加入一行文本
- b lable
- 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾
- c
- 用新的文本改变本行的文本
- d
- 从模板块位置删除行
- D
- 删除模板块的第一行
- i
- 在当前行上面插入文本
- g
- 获取内存缓冲区的内容,并替代当前模板块中的文本
- p
- 打印模板块的行
- r file
- 从file中读行
- w file
- 写并追加模板块到file末尾
- !
- 表示后面的命令对所用没有被选定的行发生作用
- s/re/string
- 用string替换正则表达式re
- =
- 打印当前行号码
- #
- 把注释扩展到下一个换行符以前
以下是替换标记:
- g 表示行内全面替换
- p 表示打印行
- w 表示把行写入一个文件
- x 表示互换模板块中的文本和缓冲区的文本
- y 表示把一个字符翻译为另外的字符
参数:
- -e<script> 以选项中指定的script来处理输入的文本文件
- -f<script文件> 以选项中指定的script文件来处理输入的文本文件
- -n 取消默认输出
元字符集:
- ^
- 锚定行的开始
- $
- 锚定行的结束
- .
- 匹配一个非换行符的字符
- *
- 匹配零个或国歌字符
- []
- 匹配一个指定范围内的字符
- [^]
- 匹配一个不在指定范围内的字符
- (..)
- 保留匹配的字符,如s/(love)able/1rs,loveable被替换成lovers
- &
- 保留搜索字符用来替换其他的字符,如s/love/&/,结果为**love**
- <
- 锚定单词的开始
- >
- 锚定单词的结束
- x{m}
- 重复x,m次
- x{m,}
- 重复x,至少m次
- x{m,n}
- 重复x,至少m次,不多于n次
示例:
- 删除:d命令
- sed ‘2d’ example # 删除example文件的第二行
- sed ‘2,$d’ example # 删除example文件的第二行到末尾所有行
- sed ‘$d’ example # 删除example文件的最后一行
- sed ‘/test/’d example # 删除example文件所有包含test的行
- 替换:s命令
- sed ‘s/test/mytest/g’ example # 在整行(g)范围内把test替换为mytest。
- sed -n ‘s/^test/mystes/p’ example # (-n)选项和p标志一起使用表示只打印那些发生替换的行。
- sed ‘s/^192.168.0.1/&localhost/’ example # &符号表示替换字符串中被找到的部分。所有以192.168.0.1开头的行都会在该”192.168.0.1”后添加localhost。
- sed ‘s#10#100#g’ example # 以’#’作为分隔符。不论什么字符,紧跟这s命令的都被认为是新的分隔符。
- 指定行的范围:逗号
- sed -n ‘/test/,/check/p’ example # 所有在test和check所确定的范围内的行都被打印。
- sed -n ‘5,/^test/p’ example # 打印从第五行开始到第一个包含以test开始的行之间的所有行。
- sed ‘/test/,/check/s/$/sed test/’ example # 对于test和west之间的行,每行的末尾用字符串sed test替换。
- 多点编辑:e命令
- sed -e ‘1,5d’ -e ‘s/test/check/’ example
- 从文件读入:r命令
- sed ‘/test/r file’ example # file里的内容读进来,显示在与test匹配的行后面。
- 写入文件:w命令
- sed -n ‘/test/w file’ example # 在example中所有包含test的行都被写入file里。
- 追加命令:a命令
- sed ‘/^test/athis is a example’ example # ‘this is a example’被追加到example文件中以test开头的行的后面,sed要求命令a后面有一个反斜杠。
- 插入:i命令
- sed ‘/^aaa/ithis’ test # 在test文件中把”this”插入到以”aaa”开头的行的前面
- 下一个:n命令
- sed ‘/test/{n; s/aa/bb/;}’ example # 如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。
- 变形命令:y命令
- sed ‘1,10y/abcde/ABCDE/’ example # 把1–10行内所有abcde转换为大写。注意:正则表达式元字符不能使用这个命令。
- 退出:q命令
- sed ‘10q’ # 打印完地10行后,退出sed。
- 保持和获取:h命令和G命令
- sed -e ‘/test/h’ -e ‘$G’ example # 在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将 打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保 持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中的行的末尾。在这个例子中就把最后一个包含test的行并追加到该文件的末尾。’h’换为’H’则把所有包含test的行追加到该文件的末尾。
- 保持和互换:h命令和x命令
- sed -e ‘/test/h’ -e ‘/check/x’ example # 互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。
说明:
将文本文件内容加以排序,以行为单位。
参数:
- -b 忽略每行前面开始的空格字符
- -c 检查文件是否已经按照顺序排序
- -f 排序时,将小写字母视为大写字母,即忽略大小写
- -k<p1[,p2]> 以p1开始p2结束作为键值。注:如果不指定”p2”则默认为行尾
- -m 将几个排序好的文件进行合并
- -n 依照数值大小排序
- -o<输出文件> 结果存入指定文件
- -r 以相反的顺序来排序
- -t<分割字符> 指定排序时所用的栏位分割字符
- -u 删除重复项
示例:
- sort -n -k 2 -t : example # 以冒号作为分隔符,并对第二列来进行数值升序排序
- sort -n -t ‘ ‘ -k 2 -k 3 example # 对第二个域和第三个域排序
- sort -n -t ‘ ‘ -k 3r -k 2 example # 对第三个域逆序
- sort -t ‘ ‘ -k 1.2,1.2 -k 3,3nr example # “1.2,1.2”第一个域的第二个字母到第一个域的第二个字母
说明:
转换字符
语法:
tr [-cdst][–help][–version][第一字符集][第二字符集]
参数:
- -c 取代所有不属于第一字符集的字符
- -d 删除所有属于第一字符集的字符
- -s 把连续的字符以单独的字符表示
- -t 删除第一字符集较第二字符集多出的字符
示例:
- tr -d ‘r’ < dos-file > unix-file % 删除回车
- cat file | tr u n % 把u替换为n
- cat file | tr -d abc % 删除a或b或c字符
- cat file | tr [:lower:] [:upper:] % 小写转换为大写
说明:
检查及删除文本文件中重复出现的行列。注:先要对文件进行排序。
参数:
- -c 在每列旁边显示改行重复出现的次数
- -d 仅显示重复出现的行列
- -f<栏位> 忽略比较指定的栏位
- -s<字符位置> 忽略比较指定的字符
- -u 仅显示出现一次的行列
- -w<字符位置> 指定要比较的字符
示例:
- sort example | uniq -u % 只显示唯一的行
说明:
显示磁盘的相关信息。
参数:
- -a 显示所有文件系统的磁盘使用情况
- -h 以可读性较高的方式来显示信息
- -H 与-h参数相同,但以1000Bytes为单位
- -i 显示inode的信息
- -k 指定区块大小为1024字节(默认)
- -l 仅显示本地端的文件系统
- -m 指定区块大小为1mb
- -t<文件系统类型> 仅显示指定的文件系统类型的磁盘信息
- -T 显示文件系统的类型
- -x<文件系统类型> 不显示指定的
示例:
- df -t ext4 -h % 以可读性较高的方式只显示ext4文件系统的磁盘使用情况
- df -i /dev/sda1 % 显示/dev/sda1磁盘的使用情况
说明:
显示或设置系统时间与日期
参数:
- -d<字符串> 显示字符串指出的日期与时间
- -s<字符串> 根据字符串来设置日期与时间
示例:
- date -s 20100911 % 日期为2010.9.11,时间为00:00:00
- date -s 12:23:23 % 设置时间,修改日期
- date -s “12:12:23 2010-09-11” % 设置全部时间
说明:
系统关机指令
参数:
- -h 将系统关机
- -k 只是送出信息给所有用户,但不实际关机
- -r 重启
- -t<秒数> 警告信息持续的时间
- [时间] 设置多久后执行shutdown指令
说明:
设置计时器。cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。
- 其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command
参数:
- -e 编辑该用户的计时器设置
- -l 列出该用户的计时器设置
- -r 删除该用户的计时器设置
示例:
- 0 */2 * * * /sbin/service /httpd restart % 每两个小时重启一次apache
- 50 7 * * * /sbin/service sshd start % 每天7:50开启ssh服务
- 0 0 1,15 * * fsck /home % 每月1好和15好检查/home磁盘
- 00 03 * * 1-5 find /home “.xxx” -mtime +4 -exec rm {} ; % 每周一至周五3点钟,在目录/home中,查找文件名为.xxx的文件,并删除4天前的文件
- 30 6 */10 * * ls % 每月的1、11、21、31日的6:30执行ls
说明:
备份/还原文件
参数:
- -c 建立新的备份文件
- -C<目的目录> 切换到指定的目录
- -d 比较备份文件内和文件系统上的文件查差异
- -f<备份文件> 指定备份文件名,在f之后要立即接档案名
- -m 还原文件是,不要更改文件的更改时间
- -p 用原来的文件权限还原文件
- -r 新增文件到已存在的备份文件的结尾部分
- -u 仅置换较备份文件内的文件更新的文件
- -v 显示指令执行的过程
- -t 列出备份文件的内容
- -x 从备份文件中还原文件
- -z 通过 gzip 指令处理配分文件
- -j 通过 bzip 指令处理备份文件
- –delete 从备份文件中删除指定文件
- –exclude=<范本样式> 排除符合范本样式的文件
示例:
- tar -cvf /tmp/etc.tar /etc % 仅打包,不压缩
- tar -zcvf /tmp/etc.tar /etc % 打包后,以gzip压缩
- tar -jcvf /tmp/etc.tar /etc % 打包后,以bzip2压缩
- tar -cvf - /etc | tar -xvf - % 将/etc/打包后直接解压在/tmp下,不产生档案