管道终端命令到Gedit进一步编辑

我的终端窗口中有一个复杂的命令,我想进一步编辑,例如

echo "This is a complex command I want to edit in an editor" 

如何将这行代码(不是输出而是实际代码)传递给Gedit进行进一步编辑? 这个解决方案的一些内容,仅适用于基于GUI的编辑器: http : //www.commandlinefu.com/commands/view/1446/rapidly-invoke-an-editor-to-wri te-a-long-complex -or-棘手命令

请注意,我正在寻找一种在外部编辑器中编辑的方法。

bashzshksh (包括它的衍生物)有一个非常简洁的内置命令fc ,它打开一个编辑器来改变你以前的命令。 如果未设置变量FCEDIT ,默认情况下它将调用EDITOR的编辑器设置; 如果未设置变量EDITOR ,默认情况下它将调用nano

你可以做的是设置FCEDIT=/usr/bin/gedit 。 现在有诀窍:你运行一个长命令,你决定要改变它,所以在你运行它之后立即调用fc 。 这将产生gedit窗口与你的命令准备好改变。 一旦你完成改变,保存并退出就像平常一样。

缺点? 它会在终端中留下不必要的gtk消息。 就个人而言,我使用vimnano命令行编辑器而不是gedit – 那些不会留下任何痕迹,除了它们可以在TTY使用,而不仅仅是在GUI环境中。 我强烈建议您切换到nano因为它是最简单的命令行文本编辑器之一。

bash 额外注意 ,您可以使用ctrl + X + Ectrl + Xctrl + E 编辑当前正在编辑的命令行; 您可以在zsh添加相同的行为添加到.zshrc

 autoload -z edit-command-line zle -N edit-command-line bindkey '^XE' edit-command-line # binds CTRL+X+E bindkey "^X^E" edit-command-line # binds CTRL+X - CTRL+E 

使用gedit - 。 这样它将从stdin读取,所以你可以使用

 echo 'echo "complex command"'|gedit - 

或简单地说

 gedit - <<< 'echo "complex command"' 

这样您就不需要创建单独的tmpfile。

使用此命令可以实现: echo "This is a complex command" > tempfile | gedit tempfile echo "This is a complex command" > tempfile | gedit tempfile

编辑:

据我所知,你想要这样的东西: echo echo "This is a complex command" > tempfile | gedit tempfile echo echo "This is a complex command" > tempfile | gedit tempfile 。 例如, echo ls -d > tempfile | gedit tempfile echo ls -d > tempfile | gedit tempfile将打开一个带有以下文本的gedit文件:“ls -d”。

那说我会建议不要在Gedit上编辑命令。 Linux终端非常强大(我们有一个强大的选项卡完成)。