将标准输入复制到标准输出

2024-03-10

我正在寻找一种 bash 单行代码,可以将标准输入复制到标准输出而不需要交错。到目前为止我找到的唯一解决方案是使用tee,但这确实产生了交错输出。我这样说是什么意思:

如果例如一份文件f reads

a
b

我想执行

cat f | HERE_BE_COMMAND

获得

a
b
a
b

如果我使用tee -作为命令,输出通常类似于

a
a
b
b

对于干净的解决方案有什么建议吗?

澄清

The cat f命令只是输入来源的一个示例。实际上,它是一个只能(应该)执行一次的命令。我也想避免使用临时文件,因为处理后的数据是sort of当执行的命令被中断时,敏感文件和临时文件总是容易出错。此外,我对涉及额外脚本的解决方案不感兴趣(如上所述,它应该是一个一行)或需要在实际复制命令之前执行的准备命令。


解决方案一:

<command_which_produces_output> | { a="$(</dev/stdin)";  echo "$a"; echo "$a"; }

通过这种方式,您可以将标准输入中的内容保存在a(请选择一个更好的名字),然后echo'ing 两次。

Notice $(</dev/stdin)是一种类似但更有效的方法$(cat /dev/stdin).


解决方案2:

Use tee通过以下方式:

<command_which_produces_output> | tee >(echo "$(</dev/stdin)")

在这里,您首先写入标准输出(这就是tee),并且还写入由过程替代 https://www.gnu.org/software/bash/manual/bashref.html#Process-Substitution:

>(echo "$(</dev/stdin)")

例如,请参阅它在我的系统中创建的文件:

$ echo >(echo "$(</dev/stdin)")
/dev/fd/63

现在echo "$(</dev/stdin)"部分正是我发现在打印之前首先读取整个文件的方式。它echo'es 从进程替换的标准输入中读取的内容,但是一旦读取了所有输入(不像cat逐行打印)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将标准输入复制到标准输出 的相关文章

  • 如何将一个文本文件拆分为多个 *.txt 文件?

    我有一个文本文件file txt 12 MB 包含 something1 something2 something3 something4 有没有办法分开file txt分成 12 个 txt 文件 比方说file2 txt file3 t
  • 在 Bash 中获取 Mac OS X 上正在运行的应用程序列表? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否可以使用 Bash 获取正在运行的应用程序列表 我不是在谈论进程 而是在 Dock 中的应用程序 以及菜单栏中的应用程序也很好 osascript
  • Git - 显示远程分支的远程名称

    是否有一个 Git 命令可以显示远程分支的远程名称 目前 我坚持使用 shell utils 从远程分支引用中提取远程名称 例如 echo remote name branch name sed r s 1 remote name 有时出于
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • 大括号语法 ${var%.*} 是什么意思?

    我正在查看一些旧代码并遇到了以下语法 extractDir downloadFileName tmp 我发现搜索的唯一信息是指命令列表 但这只是一个变量 这个大括号语法在 bash 中意味着什么 在这种背景下 它是一个参数替换 http w
  • 如何使用 Bash 编写二进制文件?

    我的问题是我需要创建一个包含以下确切字节的文件 48 00 49 00 我不能使用C perl 其他脚本语言 目标是嵌入式设备 我使用 awk 尝试过 在桌面上它确实有效 awk BEGIN printf c c c c 48 00 49
  • unix 下日期字段排序

    我有包含数十万条记录的文本文件 其中一个字段是日期字段 有没有办法根据日期字段对文件进行排序 09 APR 12 04 08 43 632279000 AM 19 MAR 12 03 53 38 189606000 PM 19 MAR 12
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • Python 脚本:每次打印新行到 shell,而不是更新现有行

    说到Python 我是个菜鸟 我有一个 python 脚本 它给我这样的输出 last ZVZX W3vo9I Downloading video webpage last ZVZX W3vo9I Extracting video info
  • awk 脚本中出现“BEGIN 块必须有操作部分”错误

    这是我的代码 bin sh filename usr bin find name INSTANCE log echo filename is filename awk BEGIN print Processing file filename
  • 检查 bash 中是否存在关联数组元素

    在 bash 脚本中 我在变量中有一个区域设置 如下所示 locale fr ma 我也有一个像这样的关联数组 declare A new loc map new loc fr ma en ma new loc el gr en gr ne
  • 使用 shell=True 将 PATH 设置为 bitbake 的“source”在 Python 中没有效果

    下面是shell脚本中的代码 source proj common tools repo etc profile d repo sh repo project init branch repo project sync source pok
  • Bash 中所有匹配的^单词^替换^?

    为了澄清 我正在寻找一种方法来执行global搜索并替换先前使用的命令 word replacement 似乎只替换了第一场比赛 有没有一些set我无法选择的选项 尝试这个 echo oneone oneone gs one two Rep
  • 为什么 fork 炸弹没有使 android 崩溃?

    这是最简单的叉子炸弹 我在许多 Linux 发行版上执行了它 但它们都崩溃了 但是当我在 android 终端中执行此操作时 即使授予后也没有效果超级用户权限 有什么解释为什么它没有使 Android 系统崩溃吗 一句话 ulimit Li
  • 关键字“if”如何测试一个值是真还是假?

    在 bash 脚本中 if 1 then echo Yes else echo No fi Output Yes 它表示 1 被视为真值 但在代码中 word Linux letter nuxi if echo word grep q le
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • 以不敏感的方式在 bash 中查找路径

    假设一条路径像 home albfan Projects InSaNEWEBproJECT 尽管事实上不使用这样的名称 有没有办法以不敏感的方式检查路径 我遇到了这个解决方案 但如果可能的话 我想找到一个内置或 gnu 程序 functio
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 如何在 Bash 中按自然顺序循环文件?

    我使用以下命令循环目录中的所有文件 for i in fas do some code done 不过 我按这个顺序得到它们 vvchr1 fas vvchr10 fas vvchr11 fas vvchr2 fas 代替 vvchr1 f
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查

随机推荐

  • NSManagedObjectModel - 动态创建模型

    谁能给我指点一下在 Xcode 中动态构建核心数据模型的教程吗 我发现的所有教程都是基于静态设计 但苹果文档说可以以编程方式构建模型 遗憾的是 苹果文档集中没有相关示例 你必须初始化一个NSManagedObjectModel 然后为模型中
  • Bash:无限睡眠(无限阻塞)

    I use startx启动 X 它将评估我的 xinitrc In my xinitrc我使用启动窗口管理器 usr bin mywm 现在 如果我终止我的 WM 为了测试其他 WM X 也会终止 因为 xinitrc脚本到达 EOF 所
  • 如何让 ServiceStack 身份验证发挥作用? (使用 iPhone 客户端)

    我们聘请了一名承包商 他正在为我们编写 iPhone 应用程序 我开始使用 ServiceStack 为其编写后端服务 我在一般授权方面遇到了困难 使用什么样的授权以及如何实现它 我对 ServiceStack HTTP 和授权不太了解 还
  • JFormattedTextField 中严格的 24 小时时间

    我正在尝试创建一个仅接受 24 小时时间的 JFormattedTextField 我非常接近解决方案 但有一种情况以下代码示例不起作用 如果输入时间 222 并从字段中更改焦点 时间将更正为 2202 我希望它只接受完整的 4 位数 24
  • 为 SQL Server 中的特定记录生成脚本

    这可能是一个有限但有价值的场景 我有一个 SQL Server 2008 数据库 其中有一个包含数百万条记录的表 一些记录似乎存在间歇性问题 我正在尝试重现该问题 为了做到这一点 我终于获得了违规记录的 ID 我想在我的 PROD 数据库中
  • 如何从 C# 代码重新启用 Gmail 中的弹出功能?

    我有一个从 Gmail 下载邮件的程序 我选择了单选按钮 为所有邮件启用 POP 甚至是已下载的邮件 下载邮件后 我的 Gmail 将上述状态更改为 对自当前日期以来到达的所有邮件启用 POP 我没有物理更改单选按钮 但它似乎自动将其设置为
  • 如何在剑道网格中加载大量数据

    网页方法
  • calloc(4, 6) 与 calloc(6, 4) 相同吗?

    我是一名初学者 C 程序员 我认为情况会如此 但如果可能的话希望得到一些肯定 如果它们是相同的 为什么不只取一个参数呢 之间没有真正的区别calloc a b and calloc b a 尽管如此 它们都分配相同数量的空间并适当填充它 元
  • 嵌套名称说明符

    我有一个类似的代码 namespace mymap template
  • 可拖动元素的包含

    如何定义可拖动对象的包含区域以使其可拖动到其父元素之外 我有两个可放置的容器 其中有可拖动的 div 我想在容器之间拖动包含的 div 但是 div 落在父容器的边框下方 而不是穿过父容器的边框 如果我设置了非常高的 z 索引 我只能让 d
  • 如何在 HTML5 Canvas 中使用动态旋转值绘制水印?

    我正在使用 HTML5 我正在尝试使用文本在图像上绘制水印 我有以下代码 div style width 612px height 792px div
  • 可可中的自定义主应用程序循环

    我一直在关注 Handmade Hero 项目 其中 Casey Muratori 从头开始 创建了一个完整的游戏引擎 而不使用库 该引擎具有高度可移植性 因为它呈现自己的位图 然后平台特定的代码将其绘制到屏幕上 在 Windows 下 通
  • C++ 类中的内联规则是什么?

    从我很久以前读到的内容来看 如果您希望在编译阶段内联类成员函数 则该函数必须在类声明块内定义 但这有一个缺点 那就是细节泄露 恕我直言 其他程序员在打开 h 文件时应该只看到类接口 第一个陈述在现代 C 中仍然正确吗 有没有办法强制内联声明
  • 错误:“已加载运行时 CuDNN 库:5005 但源是用 5103 编译的”是什么意思?

    我尝试将 TensorFlow 与 GPU 结合使用 但出现以下错误 I tensorflow core common runtime gpu gpu device cc 838 Creating TensorFlow device gpu
  • 在 ZF2 中创建具有依赖关系(依赖注入)的学说存储库

    我想创建一个具有硬依赖关系的存储库 我发现Jurian Sluisman 的这篇博文 https juriansluiman nl article 142 dependency injection in a doctrine reposit
  • Windows 在哪里存储 INI 文件的替代文件 (Delphi 7)

    我通常使用保存在应用程序自己的文件夹中的 INI 文件来编写 Delphi 应用程序 ConfigFile ChangeFileExt ParamStr 0 ini IniFile TIniFile Create ConfigFile tr
  • 表单中的第一个参数不能包含 nil 或为空 - Rails 4

    我在 Rails 中的联系表单中收到此错误 First argument in form cannot contain nil or be empty View and so on 控制器 def new contact Contact n
  • 基于属性值的条件 Json 模式验证

    我的输入 json 如下所示 results name A testA testAValue 条件是 如果 name 的值为 A 则 testA 应为必填字段 如果 name 的值为 B 则 testB 应为必填字段 这是我尝试过的 Jso
  • 当我的应用程序最大化时,自动隐藏任务栏不会出现

    我的应用程序绘制了自己的所有窗口边框和装饰 它适用于设置为自动隐藏的 Windows 任务栏 除非我的应用程序窗口最大化 任务栏不会 卷起 如果我的应用程序未最大化 即使尺寸一直到屏幕底部 它也会正常运行 如果我只是调整窗口大小以占据整个显
  • 将标准输入复制到标准输出

    我正在寻找一种 bash 单行代码 可以将标准输入复制到标准输出而不需要交错 到目前为止我找到的唯一解决方案是使用tee 但这确实产生了交错输出 我这样说是什么意思 如果例如一份文件f reads a b 我想执行 cat f HERE B