我的终端窗口中有一个复杂的命令,我想进一步编辑它,例如
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-tricky-command
请注意,我正在专门寻找一种在外部编辑器中进行编辑的方法。
bash
,zsh
, 和ksh
(包括它的衍生物)有这个非常简洁的内置命令fc
,它打开一个编辑器来改变你以前的命令。如果未设置该变量FCEDIT
,默认情况下它将调用设置在 中的编辑器EDITOR
;如果未设置变量EDITOR
,默认情况下它将调用nano
.你能做的就是设置
FCEDIT=/usr/bin/gedit
. 现在有诀窍:你运行了一个长命令,你决定要更改它,所以在你运行它之后立即调用fc
。这将生成gedit
窗口,您的命令就在那里准备好进行更改。完成更改后,像往常一样保存并退出。劣势?它会在终端中留下不必要的 gtk 消息。就个人而言,我使用
vim
命令nano
行编辑器而不是 gedit - 它们不会留下任何痕迹,而且它们TTY
不仅可以在 GUI 环境中使用。我强烈建议您切换到,nano
因为它是最简单的命令行文本编辑器之一。额外注意,您可以对当前正在编辑的
bash
命令行执行相同的操作+ +或+ - + ;您可以在添加到您的ctrlXEctrlXctrlEzsh
.zshrc
使用
gedit -
。这样它将从标准输入读取,所以你可以使用或者简单地
这样您就不需要创建单独的 tmp 文件。
使用此命令,您可以实现
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
将打开一个包含以下文本的 gedit 文件:“ls -d”。也就是说,我建议不要在 Gedit 上编辑命令。Linux 终端非常强大(我们有一个强大的制表符补全)。