gpt4 book ai didi

linux - ls -la 和 ls -la > ls-1.txt 的区别

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:55 27 4
gpt4 key购买 nike

如果我执行 ls -la,我会得到如下结果

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,我会得到这个

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 的快照文件,因为我们只是将标准输出写入文件?

最佳答案

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

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

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

如果第 2 步在第 4 步之后完成,则无法更改程序的 stdout 以指向它。

关于linux - ls -la 和 ls -la > ls-1.txt 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36920068/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com