![将管道终端命令发送到 Gedit 进行进一步编辑](https://linux22.com/image/1131568/%E5%B0%86%E7%AE%A1%E9%81%93%E7%BB%88%E7%AB%AF%E5%91%BD%E4%BB%A4%E5%8F%91%E9%80%81%E5%88%B0%20Gedit%20%E8%BF%9B%E8%A1%8C%E8%BF%9B%E4%B8%80%E6%AD%A5%E7%BC%96%E8%BE%91.png)
我的终端窗口中有一个复杂的命令,我想进一步编辑它,例如
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-write-a-long-complex-or-tricky-command
请注意,我正在寻找一种在外部编辑器中进行编辑的方法。
答案1
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
答案2
使用gedit -
。这样它将从 stdin 读取,因此您可以使用
echo 'echo "complex command"'|gedit -
或者简单地
gedit - <<< 'echo "complex command"'
这样您就不需要创建单独的 tmpfile。
答案3
通过此命令您可以实现:
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 终端非常强大(我们有强大的制表符补全功能)。