输出 命令直接输出到命令行,而不是变量

输出 命令直接输出到命令行,而不是变量

我在 bash shell 上,我希望命令的输出直接出现在命令执行后出现的命令提示符中!

我设想的例子来说明我的想法:

locate create_tables.sql|MAGIC_command
user@localhost:~# /usr/share/doc/phpmyadmin/create_tables.sql

现在,使用这样的命令 dsubstitution

sudo $(locate create-tables.sql)

有效但是 立即执行输出,我希望能够之前对其进行编辑。有办法吗?

答案1

在 Emacs 模式下输入sudo $(locate create-tables.sql), Esc, Control+e

shell-expand-lineBash 参考手册:

像 shell 一样展开该行。这将执行别名和历史扩展以及所有 shell 单词扩展

答案2

我通常使用剪贴板来做这种事情

$ some_command | cb
$ cb_edit
$ `cb` #or paste it with your paste button/shortcut

魔术:

 cb() {
  if [ ! -t 0 ]; then
    #if somebody's piping in reproduce input and pipe a copy to the clipboard
    tee >(xclip -selection c)
  else
    #otherwise, print the contents of the clipboard
    xclip -selection c -o 
  fi
}
cb_edit() { cb | vipe "$@" | cb; }

答案3

不是很优雅的解决方案是将输出存储到某个 tmpfile 中,编辑该文件,然后运行:

$ locate create_tables.sql > /tmp/tmpfile
$ vi !$    # last argument of last command
$ bash !$

相关内容