相关疑难解决方法(0)

如何在 Dash 中模拟进程替换?

在 中bash,我可以使用进程替换并将进程的输出视为保存在磁盘上的文件:

$ echo <(ls)
/dev/fd/63

$ ls -lAhF <(ls)
lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -> pipe:[1652825]
Run Code Online (Sandbox Code Playgroud)

不幸的是,dash.

Process Substitution在破折号中模拟的最佳方式是什么?

我不想将输出保存为某个地方的临时文件 ( /tmp/) 然后必须删除它。有没有替代方法?

dash process-substitution

21
推荐指数
3
解决办法
2151
查看次数

如何在unix中逐行比较两个不同的文件?

文件1:

123
234
345
456
Run Code Online (Sandbox Code Playgroud)

文件2:

123
234
343
758
Run Code Online (Sandbox Code Playgroud)

预期输出:文件 3:

TRUE
TRUE
FALSE
FALSE
Run Code Online (Sandbox Code Playgroud)

所以代码应该比较两个文件,如果匹配则打印“TRUE”,否则它应该在新文件中打印“FALSE”。任何人都可以为此提供解决方案吗?

diff awk text-processing

13
推荐指数
4
解决办法
4406
查看次数

了解破折号中的管道和重定向

有人问如何将两个命令的输出作为文件传递给另一个命令,他们得到了下面的答案

( cmd1 | ( cmd2 | ( main_command /dev/fd/3 /dev/fd/4 ) 4<&0 ) 3<&0 )
Run Code Online (Sandbox Code Playgroud)

我需要拆开这个。

假设我有一个文本文件some_file,我希望将它作为输入传递给main_command. main_command将两个文件作为输入。如果我想main_commandsome_file命令的输出一起使用cmd2,一种方法是

( cmd2 | ( main_command some_file /dev/fd/4 ) 4<&0 )
Run Code Online (Sandbox Code Playgroud)
  • 这其中“最深”的部分(即一切达到顶峰的地方)是 main_command some_file /dev/fd/4. 这只是将文件some_file/dev/fd/4作为参数传递 给main_command.
  • 4<&0部分表示stdin将指向文件描述符4
  • cmd2 |将 的输出cmd2与后面任何内容的输入连接起来。
  • 我真的不知道括号的功能是什么。它们的存在仅仅是为了解析目的还是更多?

我的问题是:

  1. 如何解压问题开头的命令?
  2. 括号有什么作用?
  3. 我对简单命令的解释是否正确?

编辑:我应该说如果我的逻辑是正确的,那么就没有必要回答 1。

shell pipe io-redirection file-descriptors posix

2
推荐指数
1
解决办法
546
查看次数