' ls'命令工作时有多个参数?

时间:2016-11-19 04:02:02

标签: linux shell

How does the 'ls' command work in Linux/Unix?

这是一些参考。

但我想知道如何命令如

ls -1 | grep 'myfile'

将由shell执行,即当exec被调用时,何时调用fork,何时调用id dup(如果有的话)。

此外,整个命令如何解析?

1 个答案:

答案 0 :(得分:1)

fork做什么

  

Fork是在类Unix操作系统上创建进程的主要(也是历史上唯一的)方法。

exec做什么

  

在计算中,exec是在现有进程的上下文中运行可执行文件的操作系统的功能

这是什么意思
当您运行命令(不是像exitcd那样内置)时,shell会使用fork创建子进程。然后这个子进程使用exec执行该命令的二进制文件(例如:/ bin / ls)

在输入/输出重定向期间会发生什么
每个过程都提供三个流标准输入(STDIN),标准输出(STDOUT)和标准错误(STDERR)。默认情况下,这些流将映射到父进程的相应流。因此,从STDIN读取的wcnano等命令可以从父shell进程的STDIN提供数据,并且它们的输出由父shell进程捕获并显示。

但是,使用重定向时

ls /tmp /abcd 1>out.log and 2>err.log

stdout现在映射到out.log的文件输出流,类似地,stderr映射到err.log。输出将写入相应的文件。

PIPE链接

ls -1 | grep 'myfile'

在shell中,PIPE |用于链接第一个命令的STDOUT到第二个命令的STDIN。

这意味着输出ls -1(文件和目录列表)作为grep myfile的输入,搜索包含“myfile”的行并打印到其STDOUT。组合效果是搜索包含char序列“myfile”

的文件名