免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wingger
打印 上一主题 下一主题

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)  关闭 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
11 [报告]
发表于 2004-11-13 16:49 |只看该作者

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)

echo $name $middle $surname

得把这个加入脚本里     

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
12 [报告]
发表于 2004-11-13 16:55 |只看该作者

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)

原帖由 "wingger" 发表:
echo $name $middle $surname

得把这个加入脚本里     

晕~~~~,麻烦你看仔细点呀    

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
13 [报告]
发表于 2004-11-13 17:10 |只看该作者

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)

呵呵,我明白了

/home/lee#read a b c d
1 2 3 4
/home/lee#echo $a
1
/home/lee#echo $b
2
/home/lee#echo $c
3
/home/lee#echo $d
4


不好意思,我理解有错,我原来以为可以有这样的结果

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
14 [报告]
发表于 2004-11-13 20:17 |只看该作者

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)

cat:显示文件内容,创建文件,还可以用它来显示控制字符。

注意:在文件分页符处不会停下来;会一下显示完整个文件。因此,可以使用m o r e命令或把c a t命令的输出通过管道传递到另外一个具有分页功能的命令中,使用命令less file可实现相同的功能。

如下形式
  1. $ cat myfile | more

  2. $ cat myfile | pg
复制代码


c a t命令的一般形式为:

  1. cat [options] filename1 ... filename2 ...
复制代码


1、显示名为m y f i l e的文件:

  1. $ cat myfile
复制代码


2、显示m y f i l e 1、m y f i l e 2、m y f i l e 3这三个文件,可以用:

  1. $ cat myfile1 myfile2 myfile3
复制代码


3、创建一个包含上述三个文件的内容,名为b i g f i l e的文件,可以用输出重定向到新文件中:

  1. $ cat myfile1 myfile2 myfile3 > bigfile
复制代码


4、如果cat的命令行中没有参数,输入的每一行都立刻被cat命令输出到屏幕上,输入完毕后按< C T R L - D >结束

  1. $ cat
  2. Hello world
  3. Hello world  
  4. <ctrl+d>
  5. $
复制代码


5、新建文件

  1. $cat >myfile
  2. This is great
  3. <ctrl-d>
  4. $cat myfile
  5. This is great
复制代码



cat:参数选项

使用方式:
  1. cat [-AbeEnstTuv] [--help] [--version] fileName
复制代码

说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)

参数:

-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting 显示非打印字符


例:
显示时加上行号
  1. $cp /etc/httpd/conf/httpd /usr/sam
  2. $ cat -n httpd.conf
复制代码


把 httpd.conf 的内容加上行号后输入 httpd1.conf 这个文件里
  1. $cat -n httpd.conf > httpd1.conf
复制代码


对文件httpd.conf加上行号(空白不加)后显示
  1. $ cat -b httpd.conf
复制代码


把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
  1. $ cat -b textfile1 textfile2 >> textfile3
复制代码


清空/etc/test.txt档案内容
  1. $cat /dev/null > /etc/test.txt
复制代码


使用 sed 与 cat 除去空白行
  1. $ cat -s /etc/X11/XF86Config | sed '/^[[:space:]]*$/d'
复制代码


-s项我试了一下,不成功,不知是不是用错了


其它参数来自:(这个我没试)
http://bbs.chinaunix.net/forum/viewtopic.php?t=438463&highlight=cat

cat 还可以在您查看包含如制表符这样的非打印字符的文件时起帮助作用。您可以用以下选项来显示制表符:

* -T 将制表符显示为 ^I

* -v 显示非打印字符,除了换行符和制表符,它们使用各自效果相当的“控制序列”。例如,当您处理一个在 Windows 系统中生成的文件时,这个文件将使用 Control-M(^M)来标记行的结束。对于代码大于 127 的字符,它们的前面将会被加上 M-(表示“meta”),这与其它系统中在字符前面加上 Alt- 相当。

* -E 在每一行的结束处添加美元符($)。


显示非打印字符

  1. $ cat -t /etc/X11/XF86Config
  2. ...
  3. # Multiple FontPath entries are allowed (they are concatenated together)
  4. # By default, Red Hat 6.0 and later now use a font server independent of
  5. # the X server to render fonts.
  6. ^IFontPath^I"/usr/X11R6/lib/X11/fonts/TrueType"
  7. ^IFontPath^I"unix/:7100"
  8. EndSection
  9. ...
复制代码

  1. $ cat -E /etc/X11/XF86Config
  2. ...
  3. # Multiple FontPath entries are allowed (they are concatenated together)$
  4. # By default, Red Hat 6.0 and later now use a font server independent of$
  5. # the X server to render fonts.$
  6. $
  7. FontPath "/usr/X11R6/lib/X11/fonts/TrueType"$
  8. FontPath "unix/:7100"$
  9. $
  10. EndSection$
  11. ...
复制代码

  1. $ cat -v /etc/X11/XF86Config
  2. ...
  3. ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@M-|M-8^X^@^@^@
  4. P^@^O"M-X^O M-@^M^@^@^@M-^@^O"M-@M-k^@M-8*^@
  5. @M-^H$M-@M-9|A(M-@)M-yM-|M-sM-*M-hW^A^@^@j^@
  6. M-|M-sM-%1M-@M-9^@^B^@^@M-sM-+fM-^A= ^@ ^@
  7. F^@^@ ^@M-9^@^H^@^@M-sM-$M-G^E(l!M-@M-^?
  8. ^IM-A5^@^@^D^@PM-^]M-^\X1M-H%^@^@^D^@tyM-G
  9. ...
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
15 [报告]
发表于 2004-11-13 21:09 |只看该作者

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)

cat我常用:
cat file
cat -A file
别的基本不用

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
16 [报告]
发表于 2004-11-13 22:11 |只看该作者

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)

原帖由 "寂寞烈火" 发表:
cat我常用:
cat file
cat -A file
别的基本不用


cat -n 应该还可以吧

tee:读取标准输入的数据,并将其内容输出成文件。

  语   法:tee [-ai][--help][--version][文件…]
  补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。我们可利用tee把管道导入的数据存成文件,甚至一次保存数份文件。

  参   数:-a 附加到既有文件的面,而非覆盖它。如果给予tee指令的文件名称已经存在,预设会覆盖该文件的内容。加上此参数,数据会新增在该文件内容的最面,而不会删除原先之内容。
       -i 忽略中断信号
       --help 在线帮助
       --version 显示版本信息

  例一:
  列出文本文件slayers.story的内容,同时复制3份副本,文件名称分别为ss-copy1、ss-copy2、ss-copy3:
  
  1. $ cat slayers.story |tee ss-copy1 ss-copy2 ss-copy3
复制代码


  例一: 把列出当前目录,并把结果结到myfile里
  
  1. $ls -l |tee myfile
复制代码



管道:可以通过管道把一个命令的输出传递给另一个命令作为输入。管道用竖杠|表示。它的一般形式为:

  1. 命令1 |命令2
  2. 其中|是管道符号。
复制代码

上例就是

论坛徽章:
0
17 [报告]
发表于 2004-11-13 22:59 |只看该作者

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)

原帖由 "wingger" 发表:


不好意思,我理解有错,我原来以为可以有这样的结果

你向下面这样运行就可以了
[root@lfs tmp]# . ./3.sh
First Name :a
Middle Name :b
Last name :c
[root@lfs tmp]# echo $name $middle $surname
a b c

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
18 [报告]
发表于 2004-11-13 23:26 |只看该作者

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)

[quote]原帖由 "whtlly"][/quote 发表:


呵呵,真的可以耶,差别在哪,俺不知道,找找资料

论坛徽章:
0
19 [报告]
发表于 2004-11-13 23:34 |只看该作者

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)

看十三问之六

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
20 [报告]
发表于 2004-11-13 23:36 |只看该作者

shell基础五:输入和输出(echo,read,cat,管道,tee,重定向等)

[quote]原帖由 "whtlly"]看十三问之六[/quote 发表:


thx     
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP