首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解释这个shell重定向: uuencode主机文件<主机-文件>编码文件

解释这个shell重定向: uuencode主机文件<主机-文件>编码文件
EN

Ask Ubuntu用户
提问于 2014-04-10 14:10:59
回答 2查看 836关注 0票数 3

下面的shell重定向是如何工作的?对执行顺序的理解似乎很复杂。有什么简单的解释吗?

代码语言:javascript
复制
uuencode host-file  < host-file >encodedfile
EN

回答 2

Ask Ubuntu用户

发布于 2014-04-10 14:18:03

uuencode是命令。host-file是它的论点。< host-file将文件重定向到命令的标准输入。>encodedfile将命令的输出重定向到文件。

票数 5
EN

Ask Ubuntu用户

发布于 2014-04-10 15:52:16

uuencode host-file < host-file >encodedfile

让我们将其分解为4部分:

  1. uuencode是要运行的命令的名称。shell搜索PATH环境变量($PATH),并在路径中的每个目录中查找名为uuencode的可执行文件。在标准安装中,这将是/usr/bin/uuencode。uuencode程序接受一个二进制文件并将其转换为一种特殊格式的文本,这样就可以通过无法处理非ascii字符的网络发送它。
  2. 第一个host-fileuuencode的命令行参数。uuencode命令需要一个参数,以便它可以将文件的名称放在编码版本中。编码文件的第一行如下所示:begin 644 host-file
  3. < host-file是使用一个名为host-file的文件作为uuencode进程的标准输入(stdin)的shell。因此,当uuencode读取一些字节的输入时,它们不是来自键盘,而是来自该文件。
  4. >encodefile是使用名为encodedfile的文件作为标准输出(stdout)的shell。因此,当uuencode写入一些输出,而不是转到屏幕上时,它会转到该文件。

没有真正的执行顺序,因为只有一个命令uuencode正在执行。如果你想要技术细节,请继续阅读。

在幕后,shell调用fork(),然后子进程打开host-file文件进行读取,打开encodedfile文件进行写入,并调用exec(),后者将子进程( shell进程的副本)替换为uuencode进程。子进程随后变成uuencode,输入文件描述符(操作系统跟踪打开的文件的方式)设置为host-file,输出文件描述符设置为encodedfile

票数 3
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/445988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档