linux - 将大括号扩展与过程替换相结合
问题描述
假设我有 2 个文件(foo
和bar
),我想区分它们。通过文件大括号扩展,我可以执行以下任一操作,并获得相同的结果:
diff foo bar
diff {foo,bar}
现在假设我想在区分这些文件之前快速对它们进行排序。使用进程替换,我可以执行以下操作:
diff <(sort foo) <(sort bar)
我想做的是以某种方式缩短它。我在想象这样的事情:
diff <(sort {foo,bar})
但不幸的是,这不起作用。有任何想法吗?我对自己的方法完全错误持开放态度。
解决方案
Diff 需要 2 个文件名才能工作。<()
返回该进程的标准输出的文件描述符;基本上,您的 stdout 暂时是一个文件,并且 diff 读取这两个文件并进行比较。<()
只能返回 1 个文件描述符,无论您在其中插入了多少命令。他们所有的标准输出都到同一个地方,没有办法区分他们两个。这是设计使然。
如果你真的觉得diff <(sort foo) <(sort bar)
打字太多,你可以写
h() {
diff <(sort $1) <(sort $2)
}
做h {foo,bar}
推荐阅读
- reactjs - React 单元测试 - 当 querySelector 表示存在时,fireEvent 表示 DOM 元素不存在
- visual-studio - 通过 Visual Studio 2019 从手动发布中获取发布命令
- insomnia - 如何在不使用响应的情况下链接请求
- php - 如果 GET 请求是跨站点的,CakePHP 注销
- typescript - 在 NodeJS 中声明全局变量
- python - tensorflow 保存和加载变分自动编码器模型
- javascript - 如何在本机反应中修复 ReactNavigation 错误
- wordpress - Wordpress:根据不同分类的价值保存分类
- mysql - MySQL中的特定时间范围查询
- apache-spark - 如何通过比较pyspark中的两个数据框来获取更新或新记录