linux 命令(一)
9 February ’15
cmp
用来比较两个文件是否有差异,可以用于比较二进制文件等(diff通常用于文本文件的比较)。
当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有差异,预设会标示出第一个不通之处的字符和列数编号。
-c或–print-chars:除了标明差异处的十进制字码之外,一并显示该字符所对应字符;
-b或—print-bytes : 除了标明差异处的十进制字码之外,一并显示该字符所对应字节;
-i<字符数目>或--ignore-initial=<字符数目>:指定一个数目;字符数目>字符数目>
-l或——verbose:标示出所有不一样的地方;
-s或–quiet或——silent:不显示错误信息;
-v或——version:显示版本信息;
–help:在线帮助。
实例:
1、比较两个文件是否相同
[apache@vm4 tmp]$ cmp as.png asc.png
as.png asc.png differ: char 19, line 3
2、显示全部不同
[apache@vm4 ju]$ cmp -l a.bak b.bak
2 141 142
3 141 142
4 141 142
5 12 167
3、要比较两个文件,而不写任何消息。 如果文件相同,则给出值 0,如果不同,则给出值 1, 或者如果发生错误,则给出值 2
[apache@vm4 ju]$ cmp -s a.bak b.bak
cat
cat [-AbeEnstTuv] [–help] [–version] fileName
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案,»fileName追加到文件中)
cat主要有三大功能:
1.一次显示整个文件,2.从键盘创建一个文件,3.将几个文件合并为一个文件。
参数:
-n 或 –number 由 1 开始对所有输出的行数编号
-e 每行结束处显示$
-t —show-tabs 每个tab显示为^I
-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
实例:
1、cat >cat.txt #从键盘创建新的文件
我 来测试cat命令的。。cat>cat.txt #输入的内容
测试完毕
^C #crtl+c退出
2、cat -n textfile1 > textfile2 #把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
3、cat -b textfile1 textfile2 » textfile3 #把 textfile1 和 textfile2 的内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
4、cat -n textfile1 > textfile2 #把 textfile1 内容加上行号后将内容写到textfile2中
5、cat -b textfile1 textfile2 » textfile3 #把 textfile1 和 textfile2 的内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
6、cat /dev/null > textfile3 #清空textfile3文件内容
sort
$ sort –help
用法:sort [选项]… [文件]…
串联排序所有指定文件并将结果写到标准输出。
参数:
-b, –ignore-leading-blanks 忽略前导的空白区域
-d, –dictionary-order 只考虑空白区域和字母字符
-f, –ignore-case 忽略字母大小写
-g, –general-numeric-sort 按照常规数值排序
-i, –ignore-nonprinting 只排序可打印字符
-h, –human-numeric-sort 使用易读性数字(例如: 2K 1G)
-n, –numeric-sort 根据字符串数值比较
-r, –reverse 逆序输出排序结果
-k, –key=位置1[,位置2] 以哪个区间值排序
-c, –check, –check=diagnose-first 检查输入是否已排序,若已有序则不进行操作
-t, –field-separator=分隔符 使用指定的分隔符代替非空格到空格的转换
实例:
1、$ cat /etc/passwd | sort |
sort 是默认以第一个数据来排序,而且默认是以字符串形式来排序,所以由字母 a 开始升序排序。
2、$ cat /etc/passwd | sort -t ‘:’ -k 3 |
默认是以字符串来排序的,如果想要使用数字排序:
3、$ cat /etc/passwd | sort -t ‘:’ -k 3n |
默认是升序排序,如果要倒序排序
4、$ cat /etc/passwd | sort -t ‘:’ -k 3nr |
5、如果要对/etc/passwd,先以第六个域的第2个字符到第4个字符进行正向排序,再基于第一个域进行反向排序
$ cat /etc/passwd | sort -t ‘:’ -k 6.2,6.4 -k 1r |
6、查看/etc/passwd有多少个shell:对/etc/passwd的第七个域进行排序,然后去重:
$ cat /etc/passwd | sort -t’:’ -k 7 -u |
uniq
用法:uniq [选项]… [文件]
从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。通常与sort 一起用。
-c, –count 在每行前加上表示相应行目出现次数的前缀编号
-d, –repeated 只输出重复的行
-D, –all-repeated[=delimit-method 显示所有重复的行
delimit-method={none(default),prepend,separate}
以空行为界限
-f, –skip-fields=N 比较时跳过前N 列
-i, –ignore-case 在比较的时候不区分大小写
-s, –skip-chars=N 比较时跳过前N 个字符
-u, –unique 只显示唯一的行
-z, –zero-terminated 使用’\0’作为行结束符,而不是新换行
-w, –check-chars=N 对每行第N 个字符以后的内容不作对照
若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过。
提示:uniq 不会检查重复的行,除非它们是相邻的行。
实例:
文件:uniq.txt;
apples green
apples red
peaches green
pears yellow
bananas yellow
cherries blue
apples green
apples yellow
bananas yellow
bananas yellow
1、 要删除名为 fruit 文件中的重复行并将其保存到一个名为 newfruit 的文件中(相同行不相邻,则不会被删除)
[apache@vm4 ju]$ uniq uniq.txt u.txt
2、显示不重复的行
[apache@vm4 ju]$ uniq -u uniq.txt
3、显示真正不重复的行
[apache@vm4 ju]$ sort -k 1 uniq.txt | uniq -u |
apples red
apples yellow
peaches green
pears yellow
3、显示真正重复的行
[apache@vm4 ju]$ sort -k 1 uniq.txt | uniq -d |
apples green
bananas yellow
cherries blue
4、列出重复行及次数
[apache@vm4 ju]$ sort -k 1 uniq.txt | uniq -cd |
2 apples green
3 bananas yellow
2 cherries blue
tail
tail 用于输入文件中的尾部内容。可跟多个文件。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。 注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。
-c或——bytes=:输出文件尾部的N(N为整数)个字节内容;
-f或;–follow:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;
-F:与选项“-follow=name”和“–retry”连用时功能相同;
-n或——line=: 输出文件的尾部N(N位数字)行内容。
-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;
-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;秒数>秒数>
-v或——verbose:当有多个文件参数时,总是输出各个文件名;
实例:
$ tail /opt/360hqb/canvas/logs/canvas/erro.log #默认显示最后10行
$ tail +20 /opt/360hqb/canvas/logs/canvas/erro.log #显示文件内容,从第20行至文件末尾
$ tail -c 10 /opt/360hqb/canvas/logs/canvas/erro.log #显示文件的最后10个字符
$ tail -f /opt/360hqb/canvas/logs/canvas/runtime.log
$ tail -f -s 2 /opt/360hqb/canvas/logs/canvas/runtime.log
touch
文件处理,主要有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
-a:或–time=atime或–time=access或–time=use 只更改存取时间;
-c:或–no-create 不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;时间日期>
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或–time=mtime或–time=modify 只更该变动时间;
-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;参考文件或目录>
-t:<日期时间> 使用指定的日期时间,而非现在的时间;日期时间>
实例: