如何在bash中从“git status”中选择/管道文件名

时间:2017-03-16 23:22:30

标签: git bash

所以我在命令行上输入“git status”。我想要做的下一件事通常是复制一个文件名以在我的编辑器中打开。

任何人都知道以编程方式选择“git status”列出的第n个文件并将其复制到内存中的技巧? (shell是bash)

3 个答案:

答案 0 :(得分:0)

这是一个管道,您可以使用它从git status中选择第n个“已修改”项目。

$ git status | grep '^.modified' | cut -d: -f2- | sed -e 's/^...//' | awk 'NR == 1'

以下是它的工作原理:git status生成完整输出

grep '^.modified'

仅选择以修改开头的行(标签前面有一个字符)

cut -d: -f2-

在第一次结肠后给我们所有东西

sed -e 's/...//'

删除前三个字符(空格)

awk 'NR == 1'

选择第一行,您可以将其替换为您想要的任何内容。

您可以使用$(...)

将任何shell值复制到变量中
files=$(ls) # copies the contents of ls into the shell variable files

答案 1 :(得分:0)

git status | grep 'new file:' | cut -f2 -d:
   file1
   file2
   file3

或者,您可以在没有前导空格的情况下进一步完善输出:

git status | grep 'new file:' | cut -f2 -d: | sed 's/^ *//'
file1
file2
file3

答案 2 :(得分:0)

测试了此命令,它有效。

git status | rg \t | xargs vim