免费注册 查看新帖 |

Chinaunix

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

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

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

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

原帖由 "wingger" 发表:


thx     

看来文革MM没有好好看我们版的"shell密笈"---shell十三问哟~

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

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

原帖由 "寂寞烈火" 发表:

看来文革MM没有好好看我们版的"shell密笈"---shell十三问哟~


嗯,只看了前面一部份,明天开始看十三问     

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

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

标准输入、输出和错误

当我们在s h e l l中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆, s h e l l同时也给出了相应的文件名。
下面就是这些文件描述符及它们通常所对应的文件名:

文件文件描述符
输入文件—标准输入0:它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。
输出文件—标准输出1:它是命令的输出,缺省是屏幕,也可以是文件。
错误输出文件—标准错误2:这是命令错误的输出,缺省是屏幕,同样也可以是文件。

如果没有特别指定文件说明符,命令将使用缺省的文件说明符(你的屏幕,更确切地说是你的终端)。

系统中实际上有1 2个文件描述符,但是正如我们在上表中所看到的, 0、1、2是标准输入、输出和错误。可以任意使用文件描述符3到9。


在执行命令时,可以指定命令的标准输入、输出和错误,要实现这一点就需要使用文件重定向。表5 - 1列出了最常用的重定向组合,并给出了相应的文件描述符。
在对标准错误进行重定向时,必须要使用文件描述符,但是对于标准输入和输出来说,这不是必需的。

  1. 常用文件重定向命令
  2. command > filename 把把标准输出重定向到一个新文件中
  3. command >> filename 把把标准输出重定向到一个文件中(追加)
  4. command 1 > fielname 把把标准输出重定向到一个文件中
  5. command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
  6. command 2 > filename 把把标准错误重定向到一个文件中
  7. command 2 >> filename 把把标准输出重定向到一个文件中(追加)
  8. command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中(追加)
  9. command < filename >filename2 把c o m m a n d命令以f i l e n a m e文件作为标准输入,以f i l e n a m e 2文件
  10. 作为标准输出
  11. command < filename 把c o m m a n d命令以f i l e n a m e文件作为标准输入
  12. command << delimiter 把从标准输入中读入,直至遇到d e l i m i t e r分界符
  13. command <&m 把把文件描述符m作为标准输入
  14. command >&m 把把标准输出重定向到文件描述符m中
  15. command <&- 把关闭标准输入
复制代码


例子

[转载]常用文件重定向命令 (这篇网中人的回复好精彩啊^-^)
http://bbs.chinaunix.net/forum/viewtopic.php?t=191375

关于>&2、2>&1等重定向的详细解释!
http://bbs.chinaunix.net/forum/viewtopic.php?t=16361

转贴:UNIX管道和重定向功能在系统备份中的妙用
http://www.chinaunix.net/forum/viewtopic.php?t=17925

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

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

受教受教!复习复习 !

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

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

呵,不敢啦,俺现在是菜鸟,新手中

这个贴子俺的回复,关于其它描述符的,有没有错?
http://bbs.chinaunix.net/forum/viewtopic.php?p=2962597#2962597

论坛徽章:
0
26 [报告]
发表于 2004-11-14 17:06 |只看该作者

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

楼主的前几章帖子都在哪里呀,没有找到

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

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

[quote]原帖由 "kinglegendcn"]楼主的前几章帖子都在哪里呀,没有找到[/quote 发表:


你搜索一下
LINUX基础
或shell基础

第一篇
文件安全与权限
http://bbs.chinaunix.net/forum/viewtopic.php?p=2897935#2897935

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

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

[quote]原帖由 "kinglegendcn"]楼主的前几章帖子都在哪里呀,没有找到[/quote 发表:

自己动手搜一下
http://bbs.chinaunix.net/forum/viewtopic.php?t=441883&highlight=wingger
http://bbs.chinaunix.net/forum/viewtopic.php?t=442596&highlight=wingger
http://bbs.chinaunix.net/forum/viewtopic.php?t=444209&highlight=wingger

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

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

exec:

e x e c命令可以用来替代当前s h e l l;换句话说,并没有启动子s h e l l。使用这一命令时任何现有环境都将会被清除,并重新启动一个s h e l l。它的一般形式为:
exec command
其中的c o m m a n d通常是一个s h e l l脚本。

我所能够想像得出的描述e x e c命令最贴切的说法就是:当这个脚本结束时,相应的会话可能就结束了。e x e c命令的一个常见用法就是在用户的. p r o f i l e最后执行时,用它来执行一些用于增强安全性的脚本。如果用户的输入无效,该
s h e l l将被关闭,然后重新回到登录提示符。e x e c还常常被用来通过文件描述符打开文件。
e x e c在对文件描述符进行操作的时候(也只有在这时),它不会覆盖你当前的s h e l l。


可以看网中人《shell十三问》第六节:
6) exec 跟 source 差在哪?

能把十三问一次性看完最好,不过对我来说还是有些难度,今天才弄清楚第四问,看了好久才明白,目前为止,看完1,2,3,4,及11

exec:

e x e c命令可以用来替代当前s h e l l;换句话说,并没有启动子s h e l l。使用这一命令时任何现有环境都将会被清除,并重新启动一个s h e l l。它的一般形式为:
exec command

其中的c o m m a n d通常是一个s h e l l脚本。

e x e c在对文件描述符进行操作的时候,它不会覆盖你当前的s h e l l。

这章到此为止了

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

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

source和exec的区别
1,我认为他们带的参数是不一样的
source通常是shell脚本,而exec不但可以把一个脚本当成参数,而且还可以把一个系统命令当参数,例如: exec ls
2,另外一个不同就是,exec任务执行完毕后,会执行类似logout的操作,而source执行完一个任务后返回当前的shell.
3,还有,他们的用途也不是一样的
我的理解是这样的,望指正!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP