dd 命令
描述:dd命令用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。用的比较多的还是用dd来备份裸设备。但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便。
建议在有需要的时候使用dd 对物理磁盘操作,如果是文件系统的话还是使用tar backup cpio等其他命令更加方便。另外,使用dd对磁盘操作时,最好使用块设备文件。
语法:dd(选项)(参数)
常用选项:
bs=<字节数> 将ibs(输入)与欧巴桑(输出)设成指定的字节数;
cbs=<字节数> 转换时,每次只转换指定的字节数;
conv=<关键字> 指定文件转换的方式;
count=<区块数> 仅读取指定的区块数;
ibs=<字节数> 每次读取的字节数;
obs=<字节数> 每次输出的字节数;
of=<文件> 输出到文件;
seek=<区块数> 一开始输出时,跳过指定的区块数;
skip=<区块数> 一开始读取时,跳过指定的区块数;
--help 帮助;
--version 显示版本信息。
用法举例:
(1)要把一张软盘的�热莞粗频搅硪徽湃砼躺希�先将源盘内容制作成img映象文件,然后插入目标空白软盘,将该映象文件写到目标盘上去。
先插入源盘:
dd if=/dev/fd0 of=./temp/temp.img
2880+0 records in
2880+0 records out
生成的img文件可以使用WinImage这一类的工具打开并查看
再插入目标盘:
dd if=./temp/temp.img of=/dev/fd0
2880+0 records in
2880+0 records out
(2)文件复制功能,将file1复制到file2。
dd if=file1 of=file2
0+1 records in
0+1 records out
(3)写512字节到文件中
dd if=/dev/zero of=./myfile bs=512count=1
file 命令
描述:file命令用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。
语法:file(选项)(参数)
常用选项:
-b:列出辨识结果时,不显示文件名称;
-c:详细显示指令执行过程,便于排错或分析程序执行的情形;
-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;
-L:直接显示符号连接所指向的文件类别;
-m<魔法数字文件>:指定魔法数字文件;
-v:显示版本信息;
-z:尝试去解读压缩文件的内容。
用法举例:
显示文件类型
[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text
[root@localhost ~]# file -binstall.log <== 不显示文件名称
UTF-8 Unicode text
[root@localhost ~]# file -iinstall.log <== 显示MIME类别。
install.log: text/plain;charset=utf-8
[root@localhost ~]# file -b -iinstall.log
text/plain; charset=utf-8
显示符号链接的文件类型
[root@localhost ~]# ls -l /var/mail
lrwxrwxrwx 1 root root 10 08-13 00:11/var/mail -> spool/mail
[root@localhost ~]# file /var/mail
/var/mail: symbolic link to`spool/mail'
[root@localhost ~]# file -L /var/mail
/var/mail: directory
[root@localhost ~]# file/var/spool/mail
/var/spool/mail: directory
[root@localhost ~]# file -L/var/spool/mail
/var/spool/mail: directory
stat 命令
描述:stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。
语法:stat(选项)(参数)
常用选项:
-L:支持符号连接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
用法举例:
[root@localhost ~]# ls -l myfile
-rw-r--r-- 1 root root 0 2010-10-09myfile
[root@localhost ~]# stat myfile
file: “myfile”
Size: 0 Blocks: 8 IO Block: 4096 一般空文件
Device: fd00h/64768d Inode: 194805815Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/root) Gid: ( 0/ root)
Access: 2010-12-12 12:22:35.000000000+0800
Modify: 2010-10-09 20:44:21.000000000+0800
Change: 2010-10-09 20:44:21.000000000+0800
[root@localhost ~]# stat -f myfile
File: "myfile"
id: 0 Namelen: 255 type: ext2/ext3
Block size: 4096 Fundamental blocksize: 4096
Blocks: Total: 241555461 free:232910771 Available: 220442547
Inodes: Total: 249364480 Free:249139691
[root@localhost ~]# stat -t myfile
myfile 0 8 81a4 0 0 fd00 194805815 10 0 1292127755 1286628261 1286628261 4096
cut 命令
描述:cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。
说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。
当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。
语法:cut(选项)(参数)
常用选项:
-b:仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
--complement:补足被选择的字节、字符或字段;
--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
用法举例:
设ml和m2是当前目录下的两个文件
cut m1 (在屏幕上显示文件ml的内容)
cut m1 m2 (同时显示文件ml和m2的内容)
cut m1 m2 > file (将文件ml和m2合并后放入文件file中)
diff3 命令
描述:diff3命令用于比较3个文件,将3个文件的不同的地方显示到标准输出。
语法:diff3(选项)(参数)
常用选项:
-a:把所有的文件都当做文本文件按照行为单位进行比较,即给定的文件不是文本文件;
-A:合并第2个文件和第3个文件之间的不同到第1个文件中,有冲突内容用括号括起来;
-B:与选项“-A”功能相同,但是不显示冲突的内容;
-e/--ed:生成一个“-ed”脚本,用于将第2个文件和第3个文件之间的不同合并到第1个文件中; --easy-only:除了不显示互相重叠的变化,与选项“-e”的功能相同;
-i:为了和systemV系统兼容,在“ed”脚本的最后生成“w”和“q”命令。此选项必须和选项“-AeExX3”连用,但是不能和“-m”连用;
--initial-tab:在正常格式的行的文本前,输出一个TAB字符而非两个空白字符。此选项将导致在行中TAB字符的对齐方式看上去规范。
cmp 命令
描述:cmp命令用来比较两个文件是否有差异。当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有差异,预设会标示出第一个不通之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为“-”,则cmp指令会从标准输入设备读取数据。
语法:cmp(选项)(参数)
常用选项:
-c或--print-chars:除了标明差异处的十进制字码之外,一并显示该字符所对应字符;
-i<字符数目>或--ignore-initial=<字符数目>:指定一个数目;
-l或――verbose:标示出所有不一样的地方;
-s或--quiet或――silent:不显示错误信息;
-v或――version:显示版本信息;
--help:在线帮助。
用法举例:
使用cmp命令比较文件"file1"和文件"file2"两个文件,则输入下面的命令:
cmp file1 file2
注意:在比较结果中,只能够显示第一比较结果。
basename 命令
描述:basename命令用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。
常用选项:
--help:显示帮助;
--version:显示版本号。
用法举例:
要显示一个shell变量的基本名称,请输入: basename $WORKFILE
此命令显示指定给shell变量WORKFILE的值的基本名称。如果WORKFILE变量的值是/home/jim/program.c文件,则此命令显示program.c。
要构造一个和另一个文件名称相同(除了后缀)的文件名称,请输入:
OFILE=‘basename$1 .c‘.o
此命令指定给 OFILE 文件第一个位置上的参数($1)的值,但它的 .c 后缀更改至.o。如果 $1 是 /home/jim/program.c 文件,则 OFILE 成为 program.o。因为 program.o 仅是一个基本文件名称,它标识在当前目录中的文件。
diff 命令
描述:diff命令在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。
语法:diff(选项)(参数)
常用选项:
-<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用;
-a或――text:diff预设只会逐行比较文本文件;
-b或--ignore-space-change:不检查空格字符的不同;
-B或--ignore-blank-lines:不检查空白行;
-c:显示全部内容,并标出不同之处;
-C<行数>或--context<行数>:与执行“-c-<行数>”指令相同;
-d或――minimal:使用不同的演算法,以小的单位来做比较;
-D<巨集名称>或ifdef<巨集名称>:此参数的输出格式可用于前置处理器巨集;
-e或――ed:此参数的输出格式可用于ed的script文件;
-f或-forward-ed:输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处;
-H或--speed-large-files:比较大文件时,可加快速度;
-l<字符或字符串>或--ignore-matching-lines<字符或字符串>:若两个文件在某几行有所不同,而之际航同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异;
-i或--ignore-case:不检查大小写的不同;
-l或――paginate:将结果交由pr程序来分页;
-n或――rcs:将比较结果以RCS的格式来显示;
-N或--new-file:在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录,文件A 若使用-N参数,则diff会将文件A 与一个空白的文件比较;
-p:若比较的文件为C语言的程序码文件时,显示差异所在的函数名称;
-P或--unidirectional-new-file:与-N类似,但只有当第二个目录包含了第一个目录所没有的文件时,才会将这个文件与空白的文件做比较;
-q或--brief:仅显示有无差异,不显示详细的信息;
-r或――recursive:比较子目录中的文件;
-s或--report-identical-files:若没有发现任何差异,仍然显示信息;
-S<文件>或--starting-file<文件>:在比较目录时,从指定的文件开始比较;
-t或--expand-tabs:在输出时,将tab字符展开;
-T或--initial-tab:在每行前面加上tab字符以便对齐;
-u,-U<列数>或--unified=<列数>:以合并的方式来显示文件内容的不同;
-v或――version:显示版本信息;
-w或--ignore-all-space:忽略全部的空格字符;
-W<宽度>或--width<宽度>:在使用-y参数时,指定栏宽;
-x<文件名或目录>或--exclude<文件名或目录>:不比较选项中所指定的文件或目录;
-X<文件>或--exclude-from<文件>;您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件;
-y或--side-by-side:以并列的方式显示文件的异同之处;
--help:显示帮助;
--left-column:在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容;
--suppress-common-lines:在使用-y参数时,仅显示不同之处。
用法举例:
将目录/usr/li下的文件"test.txt"与当前目录下的文件"test.txt"进行比较,输入如下命令:
diff /usr/li test.txt
join 命令
描述:join命令用来将两个文件中,制定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
语法:join(选项)(参数)
常用选项:
-a<1或2>:除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行;
-e<字符串>:若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串;
-i或--ignore-case:比较栏位内容时,忽略大小写的差异;
-o<格式>:按照指定的格式来显示结果;
-t<字符>:使用栏位的分割字符;
-v<1或2>:更-a相同,但是只显示文件中没有相同栏位的行;
-1<栏位>:连接[文件1]指定的栏位;
-2<栏位>:连接[文件2]指定的栏位。
fold 命令
描述:fold命令用于控制文件内容输出时所占用的屏幕宽度。fold命令会从指定的文件里读取内容,将超过限定列宽的列加入增列字符后,输出到标准输出设备。若不指定任何文件名称,或是所给予的文件名为“-”,则fold指令会从标准输入设备读取数据。
语法:fold(选项)(参数)
常用选项:
-b或――bytes:以Byte为单位计算列宽,而非采用行数编号为单位;
-s或――spaces:以空格字符作为换列点;
-w<每列行数>或--width<每列行数>:设置每列的最大行数。
用法举例:
csplit 命令
描述:csplit命令用于将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件。碎片文件的命名类似“xx00”,“xx01”。csplit命令是split的一个变体,split只能够根据文件大小或行数来分割,但csplit能够根据文件本身特点来分割文件。
语法:csplit(选项)(参数)
常用选项:
-b<输出格式>或--suffix-format=<输出格式>:预设的输出格式其文件名称为xx00,xx01等,用户可以通过改变<输出格式>来改变输出的文件名;
-f<输出字首字符串>或--prefix=<输出字首字符串>:预设的输出字首字符串其文件名为xx00,xx01等,如果制定输出字首字符串为“hello”,则输出的文件名称会变成hello00,hello、01......
-k或--keep-files:保留文件,就算发生错误或中断执行,与不能删除已经输出保存的文件;
-n<输出文件名位数>或--digits=<输出文件名位数>:预设的输出文件名位数其文件名称为xx00,xx01......如果用户指定输出文件名位数为“3”,则输出的文件名称会变成xx000,xx001等;
-q或-s或--quiet或――silent:不显示指令执行过程;
-z或--elide-empty-files:删除长度为0 Byte文件。
用法举例:
示例测试文件 server.log
cat server.log
SERVER-1
[con] 10.10.10.1 suc
[con] 10.10.10.2 fai
[dis] 10.10.10.3 pen
[con] 10.10.10.4 suc
SERVER-2
[con] 10.10.10.5 suc
[con] 10.10.10.6 fai
[dis] 10.10.10.7 pen
[con] 10.10.10.8 suc
SERVER-3
[con] 10.10.10.9 suc
[con] 10.10.10.10 fai
[dis] 10.10.10.11 pen
[con] 10.10.10.12 suc
需要将server.log分割成server1.log、server2.log、server3.log,这些文件的内容分别取自原文件中不同的SERVER部分:
csplit server.log /SERVER/ -n2 -s {*}-f server -b "%02d.log"; rm server00.log
ls
server01.log server02.logserver03.log server.log
命令详细说明:
/[正则表达式]/#匹配文本样式,比如/SERVER/,从第一行到包含SERVER的匹配行。
{*} #表示根据匹配重复执行分割,直到文件尾停止,使用{整数}的形式指定分割执行的次数。
-s #静默模式,不打印其他信息。
-n #指定分割后的文件名后缀的数字个数。比如01、02、03等。
-f #指定分割后的文件名前缀。
-b #指定后缀格式。比如%02d.log,类似于C语言中的printf参数格式。
rm server00.log #是删除第一个文件,因为分割后的的第一个文件没有内容,匹配的单词就位于文件的第一行中。
sort 命令
描述:sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
语法:sort(选项)(参数)
常用选项:
-b:忽略每行前面开始出的空格字符;
-c:检查文件是否已经按照顺序排序;
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
-f:排序时,将小写字母视为大写字母;
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
-m:将几个排序号的文件进行合并;
-M:将前面3个字母依照月份的缩写进行排序;
-n:依照数值的大小排序;
-o<输出文件>:将排序后的结果存入制定的文件;
-r:以相反的顺序来排序;
-t<分隔字符>:指定排序时所用的栏位分隔字符;
+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
用法举例:
sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
sort sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
eee:50:5.5
当前结果中出现了相同行,可使用-u选项或uniq命令去除。
uniq 命令
描述:uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。
语法:uniq(选项)(参数)
常用选项:
-c或――count:在每列旁边显示该行重复出现的次数;
-d或--repeated:仅显示重复出现的行列;
-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;
-s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;
-u或――unique:仅显示出一次的行列;
-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。
用法举例:
删除重复行: uniq file.txt /sort file.txt |uniq /sort -u file.txt
只显示单一行: uniq -u file.txt/sort file.txt | uniq �Cu
统计各行在文件中出现的次数: sort file.txt | uniq -c
在文件中找出重复的行: sort file.txt | uniq -d
diffstat 命令
描述:diffstat命令用来显示diff命令输出信息的柱状图,用以显示diff命令比较两个文件的不同统计信息。用户也可以直接使用|将diff命令所输出的结果直接送给diffstat命令进行统计结果的显示。使用该命令时,若所比较的文件或者子目录不在当前目录下,则应该使用其完整路径。
语法:diffstat(选项)(参数)
常用选项:
-n<文件名长度>:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
-p<文件名长度>:与-n参数相同,但此处的<文件名长度>包括了文件的路径;
-w:指定要输出时栏位的宽度;
-v:显示版本信息。