管道终端命令到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-棘手命令
请注意,我正在寻找一种在外部编辑器中编辑的方法。
bash
, zsh
和ksh
(包括它的衍生物)有一个非常简洁的内置命令fc
,它打开一个编辑器来改变你以前的命令。 如果未设置变量FCEDIT
,默认情况下它将调用EDITOR
的编辑器设置; 如果未设置变量EDITOR
,默认情况下它将调用nano
。
你可以做的是设置FCEDIT=/usr/bin/gedit
。 现在有诀窍:你运行一个长命令,你决定要改变它,所以在你运行它之后立即调用fc
。 这将产生gedit
窗口与你的命令准备好改变。 一旦你完成改变,保存并退出就像平常一样。
缺点? 它会在终端中留下不必要的gtk消息。 就个人而言,我使用vim
或nano
命令行编辑器而不是gedit – 那些不会留下任何痕迹,除了它们可以在TTY
使用,而不仅仅是在GUI环境中。 我强烈建议您切换到nano
因为它是最简单的命令行文本编辑器之一。
在bash
额外注意 ,您可以使用ctrl + X + E或ctrl + X – ctrl + 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终端非常强大(我们有一个强大的选项卡完成)。