如何“复制粘贴”重要命令?

如何“复制粘贴”重要命令?

这个问题不是关于cp命令。

我在 Ubuntu 服务器上没有安装鼠标也没有安装 GUI,但我想将一些命令保存在文件中,以便以后可以重复使用它们。

我唯一的选择是将它们重新输入到文件中(使用 Vi/Nano/其他什么),还是有办法复制它们?

答案1

当然还有 bash 的历史机制。如果启用,bash 将保存一个文件 ~/.bash_history,其中包含您输入的所有命令行,最多包含最大条目数。

还有fc不查看文件即可浏览历史记录的命令,例如fc -l 1 | fgrep echo列出包含echo任何位置的所有历史记录行。

所有这些当然都可以配置:

  • HISTFILE设置历史文件的名称,而不是~/bash_history
  • HISTSIZE设置历史记录中保留的最大条目数(默认为 500)。
  • HISTCONTROL允许对历史记录中保留的内容和不保留的内容进行一些微调。通过设置重复条目仅保留一次,您可以通过在前面添加空格(例如,而不是)HISTCONTROL=ignoreboth来防止单个命令行出现在历史记录中。 lsls

我喜欢HISTSIZE在不减慢机器速度的情况下尽可能地保持较大的文件大小,通常在 50000 左右才会变得明显。这样,如果我不记得某个困难的管道或类似的东西,并且再次需要它,我可以回溯几个月。

(我自己不使用 bash,只使用 zsh,但从我从手册页机制是相似的。如果我的细节有误,请纠正我。)

答案2

找到了!

假设您有一些大命令,在命令前添加 echo,并将 stdout 重定向到文件。

命令示例

someapp -wich have a lot of arguments and -is boring -to type

类型

echo someapp -wich have a lot of arguments and -is boring -to type > file.sh

它将创建包含命令的 file.sh

答案3

你想要的,应该/可以用命令完成别名

您可以为每个复杂命令创建单独的文件,但这只是目的alias

你做

alias sa='someapp -wich have a lot of arguments and -is boring -to type'

当您在提示符下键入sa+时,它将使用参数运行您的程序。enter

为了在重新启动后继续运行,bash您需要将它们添加到~/.bashrc(或~/.kshrc您使用的任何 shell)。

我的看起来像这样:

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

因此您可以alias在那里添加您的行。

相关内容