Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从";中选择/导入文件名;“git状态”;在狂欢节上_Git_Bash - Fatal编程技术网

如何从";中选择/导入文件名;“git状态”;在狂欢节上

如何从";中选择/导入文件名;“git状态”;在狂欢节上,git,bash,Git,Bash,所以我在命令行上输入“git status”。通常,我想做的下一件事是复制一个文件名以在编辑器中打开 有人知道通过编程选择“git status”列出的第n个文件并将其复制到内存中的技巧吗?(shell是bash)这里有一个管道,您可以使用它从git状态中选择第n个“修改”项 $ git status | grep '^.modified' | cut -d: -f2- | sed -e 's/^...//' | awk 'NR == 1' 它的工作原理如下:git status生成完整的输出

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


有人知道通过编程选择“git status”列出的第n个文件并将其复制到内存中的技巧吗?(shell是bash)

这里有一个管道,您可以使用它从git状态中选择第n个“修改”项

$ git status | grep '^.modified' | cut -d: -f2- | sed -e 's/^...//' | awk 'NR == 1'
它的工作原理如下:
git status
生成完整的输出

grep '^.modified'
仅选择以“修改”开头的行(选项卡前面有一个字符)

在第一个冒号之后给我们一切

sed -e 's/...//'
删除前三个字符(空格)

选择第一行,您可以将其替换为所需的任何内容

您可以使用
$(…)

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

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

您想要的是修改后的文件还是添加和删除的文件?编写一个简短的程序或别名以从git状态提取信息非常简单(尽管可能还有git管道命令可以直接执行您想要的操作)
awk 'NR == 1'
files=$(ls) # copies the contents of ls into the shell variable files
git status | grep 'new file:' | cut -f2 -d:
   file1
   file2
   file3
git status | grep 'new file:' | cut -f2 -d: | sed 's/^ *//'
file1
file2
file3