Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62952
  • 博文数量: 26
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 255
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-18 10:40
文章分类

全部博文(26)

文章存档

2013年(26)

我的朋友

分类: LINUX

2013-09-20 09:20:59

使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName 
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案) 
参数: 
-n 或 --number 由 1 开始对所有输出的行数编号 
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 
-v 或 --show-nonprinting 
范例: 
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 
范例: 
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 
cat -n textfile1 > textfile2 
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 
cat -b textfile1 textfile2 >> textfile3 
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容 
cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打 
cat /dev/fd0 > OUTFILE 
相反的,如果想把 image file 写到软碟,请打 
cat IMG_FILE > /dev/fd0 
注: 
1. OUTFILE 指输出的 image 档名。 
2. IMG_FILE 指 image file。 
3. 若从 image file 写回 device 时,device 容量需与相当。 
4. 通常用在制作开机磁片。 

cat主要有三大功能:go
1.一次显示整个文件。$ cat   filename ~,y6;e
2.从键盘创建一个文件。$ cat  >  filename  0#!7
只能创建新文件,不能编辑已有文件. :z)
3.将几个文件合并为一个文件。 $cat   file1   file2  > file"t?=\
参数: p:DS
-n 或 --number 由 1 开始对所有输出的行数编号 \r5
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 |,3S
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 !s
-v 或 --show-nonprinting tds?O
范例: `@uq*Y
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 d
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 ;L-#pj
范例: +Hu
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 z]G=
cat -n textfile1 > textfile2 v"z&r3
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 RG.7n
cat -b textfile1 textfile2 >> textfile3 1M?1O
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容 J2fx


cat 还可以进行输出重定向
>表示重定向到某个文件或者输出,并且会覆盖原来的内容。
>>表示在原来内容的末尾添加。


1. 标准输入,标准输出与标准错误输出

Linux下系统打开3个文件,标准输入,标准输出,标准错误输出。

标准输入:从键盘输入数据,即从键盘读入数据。

标准输出:把数据输出到终端上。

标准错误输出:把标准错误输出到终端上。

默认的标准输入指的是键盘,默认的标准输出与标准错误输出指的是屏幕或者是终端。

系统为这三个文件分配了文件标识符fd(file descripter).

在Linux系统下,一切皆是文件,对文件的操作,一般要用到文件标识符。它们的文件标识符,分别为0,1,2.

 

2. 重定向

重定向分为输入重定向与输出重定向。

所谓的输入重定向即输入不从键盘读入,而是从文件输入或其它。

所谓的输出重定向即不输出到终端上,而是输出到文件中去或其它。

 

""<"表示输入重定向运算符,">"表示输出重定向t运算符。

"<<"这种输入告诉Shell,当前标准输入来自命令行的一对分隔号的中间内容。

">>",用">"输出时,如果文件不存在会自动建立一个文件,如果第二次输入时,会覆盖前一次的输入内容,而">>"表示把第二次的输出内容追加到文件中去,而不是覆盖。

 

3. 下面看一下几个例子

 

(1)输入重定向

 [root@localhost ~]# wc 53 229 1666

 

wc统计行数,单词数, 字符数

其中wc的输入来自 /etc/inittab

 


[root@localhost ~]# wc < > 1
> 11
> 111
> aa
3 3 9

wc统计分隔符aa之间的内容。

 

(2)输出重定向

 

 [root@localhost ~]# ps -ef >a.txt   //把进程的信息输出重定向到a.txt文件中去

 [root@localhost ~]# ps -ef> >a.txt //进程信息追加到a.txt的文件中去

 

 

其实,所谓的输入输出重定向就是不从键盘输入和屏输出。

 

 

4. Linux下输出重定向的典型分析

 

(1) a.out > outfile 2>&1
(2) a.out 2> &1 >outfile

 

分析:

0代表标准输入,1代表标准输出,2代表标准错误输出。其中1(即>=1>)可以省略,默认为标准输出。

(1)首先把a.out重定向到outfile文件中去。然后把 2>&1把标准错误输出重定向到标准输出中去。此时的标准输出已经重定向了,相当于把标准输出与标准错误输出都一起重定向到outfile中去。 &1代表的是标准输出的文件描述符。1一般放在左边表示标准输出重定向到什么位置,而1放在右边是重定向到标准输出中,所以用&区分一下,表示标准输出的文件描述符。2>1表示把标准错误重定向到文件1中去,2>&1则表示标准错误重定向到标准输出中去。

(2)首先把标准错误输出重定向到标准输出中,此时标准输出还在终端。因此标准错误也在终端。然后标准输出到outfile中去了。而标准错误还是在终端。

 

因此,(1)表示标准输出与标准错误都到outfile中去了。

         (2)表示标准输出到outfile,但标准错误输出仍然在终端。

 

 

ls 1>/dev/null 2>/dev/null

ls >/dev/null  2>&1

 

/dev/null是一个垃圾箱,是一个无底洞,表示的含义为不显示。

即标准输出与标准错误输出不显示。

以上两个命令表示的含义是相同的。

 

以上是关于Linux下的重定向问题,一定要深刻理解原理。


阅读(4660) | 评论(0) | 转发(0) |
0

上一篇:ioctl()函数

下一篇:close-on-exec标志

给主人留下些什么吧!~~