【发布时间】:2011-11-11 01:11:42
【问题描述】:
假设在您的工作日中,您在 bash 中的某个命令反复遇到以下形式的列输出(在我的情况下,是在我的 Rails 工作目录中执行 svn st):
? changes.patch
M app/models/superman.rb
A app/models/superwoman.rb
为了使用您的命令的输出 - 在这种情况下是文件名 - 需要进行某种解析,以便第二列可以用作下一个命令的输入。
我一直在做的是使用awk 来获取第二列,例如当我想删除所有文件时(不是典型的用例 :),我会这样做:
svn st | awk '{print $2}' | xargs rm
由于我输入了很多,一个自然的问题是:在 bash 中是否有更短(因此更酷)的方式来完成此操作?
注意: 即使我的具体示例在我的 svn 工作流程中,我要问的本质上是一个 shell 命令问题。如果您觉得工作流程很愚蠢并建议了另一种方法,我可能不会投票给您,但其他人可能会,因为这里的问题实际上是如何以最短的方式在 bash 中获取第 n 列命令输出.谢谢:)
【问题讨论】:
-
当您经常使用命令时,您最好创建一个脚本并将其放在您的路径中。如果您愿意,可以简单地在 bashrc 中创建一个函数。我看不出减少列选择表达式的意义。
-
你是对的,我可能会这样做。 “重点”是寻求在 bash 中做事的新方法,目的是为了学习,但主要是为了好玩:)
-
另外你在 ssh-ing 的时候没有你的 .bashrc,所以在没有它的情况下了解你的方式很有用。