通常,在配置和调整基于 UNIX 的系统时,我会使用大量难以记住的一行命令。例如,要确定正在运行的 ntp(时间服务器)版本,您可以发出以下命令:
ntpq -c "rv 0 version"
这是我永远不会记得的事情。有没有某种方式或方法来存储所有这些单行代码,以便我可以在需要时轻松查看它们并将它们粘贴到命令行(我使用 vim 顺便说一句,而不是 emacs,所以以 emacs 为中心的解决方案并不能真正帮助我)。我在想可能有一种方法可以从 shell 的缓冲区中执行当前的文本行,但找不到任何这样的命令。
我的一个想法是将命令放入文本文件中,然后在 vimrc 中创建这一行:
nnoremap <F10> :.w !bash<CR>
现在,假设我的文件中有这一行:
ntpq -c "rv 0 version" # show current version of NTP which is running
然后,我将光标放在这一行上并按 F10,它就可以工作了(请注意,由于命令被发送到 bash,因此您使用 bash 注释 (#),而不是 vim 注释)。这似乎是朝着正确方向迈出的一步。还有更好的想法吗?
答案1
您是否尝试过使用别名?
例子
为新命令创建别名:
alias ntpversion='ntpq -c "rv 0 version"'
运行命令:
ntpversion
在将 ntpversion 设置为别名后,运行 ntpversion 将为您的单行代码提供输出。
http://www.linuxhowtos.org/Tips%20and%20Tricks/command_aliases.htm
答案2
从 vim 运行命令
你问的是vim。在 vim 中,您可以使用快捷方式创建文件。它会有这样的行:
!ntpq -c "rv 0 version"
然后您可以将该行复制到维姆命令行 ( :
) 来执行它。因为该行以 开头!
,所以当您按 Enter 时,vim 将为它提供要执行的 shell。你永远不必离开 vim。
通过我的 vim 设置,我通过单击鼠标将该行复制到 X11 缓冲区中,然后键入:
以打开命令行并按住 Shift-Insert 来粘贴该行。 Vim 的可配置性很强,您的设置可能会有所不同。如果是这样,请看一下这个帖子了解粘贴到命令行的其他方法。
将命令保存在~/.bashrc
或者,您可以将 bash 别名或函数添加到文件中~/.bashrc
。典型的别名如下所示:
alias ll="ls --color -l"
只需将上述行放入您的~/.bashrc
文件(或源自该文件的另一个文件)中,当您想要查看它们时,您就可以将它们全部放在一个方便的位置。
别名简单方便,但有局限性。如果您想要更多功能,例如处理参数、执行算术等,您可能需要阅读有关 bash 函数的内容。它们也可以存储在~/.bashrc
.
答案3
你可以让你的历史变得非常大,然后从那里执行一些东西。
还有 commandlinefu.com...
您可以在您保存的纯文本文件中记下所有这些行。
我运行一个私人 habari 实例,在其中放置此类内容(以及更多文档)...