免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6527 | 回复: 12
打印 上一主题 下一主题

友情提示:关于cat的使用  关闭 [复制链接]

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-29 17:54 |只看该作者 |倒序浏览
看到许多贴子中的代码用到了cat命令,cat命令是unix中最常用的命令之一,但是象cat file | somecommand这种用法,现被称为UUOC,是一种效率低的用法。
摘自Shell FAQ:

   UUOC
   
      This is short for "Useless use of cat". It's used to point out
      that some example script has used cat when it could have used
      redirection instead. It's more efficient to redirect input than
      it is to spawn a process to run cat. For example

      UUOC是"Useless use of cat"的缩写。如果脚本中使用cat命令的代码可以用"重定向"代替,你就可以称其为UUOC。因为重定向的效率要比运行一个外部命令要高。比如:

        $ cat file | tr -d 'xyz'

      runs two processes, one for cat and one for tr. This is less
      efficient than
      同时运行了两个进程 cat 和 tr,这种用法的效率比下面这句要低

        $ tr -d 'xyz' < file

      In general, "cat file | somecommand" can be more efficiently
      replaced by "somecommand < file"
      or (especially for multi-file input)

     通常,"cat file | somecommand"可以替换成"somecommand < file"
     如果somecommand接受文件名作为参数,也可以      

        $ somecommand file [file ...]

      but check the man page for "somecommand" to find out if it will
      accept this syntax.

      For more details about this, as well as other things like it, see
        http://rhols66.adsl.netsonic.fi/era/unix/award.html

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2005-11-29 17:56 |只看该作者
waker 经常叨叨,耳朵都生茧啦。
不过我觉得还是蛮有用的。
写脚本的时候当然不好了。
敲命令的时候这样看起来比较整齐些。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-11-29 18:01 |只看该作者
这个我知道

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
4 [报告]
发表于 2005-11-29 18:05 |只看该作者
原帖由 flw 于 2005-11-29 17:56 发表
waker 经常叨叨,耳朵都生茧啦。
不过我觉得还是蛮有用的。
写脚本的时候当然不好了。
敲命令的时候这样看起来比较整齐些。


如果你愿意也可以这么写

cat file | somecommand
somecommand < file
< file somecommand  #bash适用,其他shell不知道

第三种是否和cat的习惯有点接近?都是把要操作的文件放在前面。

论坛徽章:
0
5 [报告]
发表于 2005-11-29 23:40 |只看该作者
这个很有用啊

谢谢r2007啦

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
6 [报告]
发表于 2005-11-30 08:38 |只看该作者
原帖由 flw 于 2005-11-29 17:56 发表
waker 经常叨叨,耳朵都生茧啦。
不过我觉得还是蛮有用的。
写脚本的时候当然不好了。
敲命令的时候这样看起来比较整齐些。

还得唠叨
如果 somecomand就是cat

看看这种习惯究竟是什么

cat file
就是 cat file|cat

红色部分按习惯再扩展

.............|cat file|cat|cat


:em11:

论坛徽章:
0
7 [报告]
发表于 2005-11-30 08:50 |只看该作者
又来唠叨了,,,哈

论坛徽章:
0
8 [报告]
发表于 2006-03-01 16:02 |只看该作者
如果我一次要cat多个文件呢?
tr -d 'xyz' < file1 file2 file3    ?????

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
9 [报告]
发表于 2006-03-01 16:25 |只看该作者
请再仔细读一下,第一帖,并注意下面这段话。

如果脚本中使用cat命令的代码可以用"重定向"代替,你就可以称其为UUOC。

论坛徽章:
0
10 [报告]
发表于 2006-03-01 16:28 |只看该作者
UUOC 知道了 学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP