首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >差异b/w ls -la和ls -la > ls-1.txt

差异b/w ls -la和ls -la > ls-1.txt
EN

Stack Overflow用户
提问于 2016-04-28 16:10:56
回答 1查看 707关注 0票数 0

如果我做了ls -la,我得到的结果如下

代码语言:javascript
运行
复制
total 16
drwxr-xr-x   4 rockse  staff  136 Apr 28 16:55 .
drwx------+ 23 rockse  staff  782 Apr 28 16:48 ..
-rw-r--r--   1 rockse  staff   32 Apr 28 16:49 1.sh
-rw-r--r--   1 rockse  staff  215 Apr 28 17:01 ls-1.txt

但是如果我做了ls -la > ls-1.txt,我就会得到这个

代码语言:javascript
运行
复制
total 8
drwxr-xr-x   4 rockse  staff  136 Apr 28 16:55 .
drwx------+ 23 rockse  staff  782 Apr 28 16:48 ..
-rw-r--r--   1 rockse  staff   32 Apr 28 16:49 1.sh
-rw-r--r--   1 rockse  staff    0 Apr 28 17:06 ls-1.txt

我知道创建了一个文件,然后将ls -la写入到相同的文件中,但是为什么它不在创建文件之前捕获ls -la的快照,因为我们只是将stdout写到文件中呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-28 16:48:09

重定向是由shell完成的,而不是您正在运行的程序。shell为实现这一点所做的处理与以下(简化)类似:

  1. 分叉子进程
  2. 打开输出文件
  3. stdout连接到输出文件流
  4. 执行程序

步骤2创建文件,因此当程序在步骤4中运行时,它将是可见的。

如果步骤2是在步骤4之后完成的,就不可能将程序的stdout更改为指向它。

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

https://stackoverflow.com/questions/36920068

复制
相关文章

相似问题

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