是否有在终端中运行建议的命令的快捷方式?

是否有在终端中运行建议的命令的快捷方式?

如果我输入未安装的程序的命令,我可能会收到如下消息:

[user]~$ program
The program 'program' is currently not installed.  You can install it by typing:
sudo apt-get install program
[user]~$ 

sudo apt-get install program是否存在我可以键入的键盘快捷键或命令,无需我自己输入即可执行?

答案1

为您的 shell 创建适当的别名。在 中bash,将此行添加到~/.bashrc

alias sagi="sudo apt-get install"

然后,source ~/.bashrc执行alias以验证别名是否出现在列表中。之后,只需输入

sagi <package>

调用别名。对于其他 shell,别名命令的格式和 rc 文件的名称会有所不同,但和source应该alias相同。

答案2

如果您使用的是图形终端,请三次单击以 开头的行以sudo apt-get将其全部标记,然后单击鼠标中键将其粘贴到终端中。或者,根据输出判断,输入类似

# $(program | tail -n 1)

tail -n 1在输入 的输出后执行 command 的输出program。这可能不够短。但是,理论上应该允许定义如下所示的别名

# alias ii='$( $(history -p !!) | tail -n 1)'

它应该获取历史记录中的最后一条命令,执行它,获取其最后一行并再次执行它。不幸的是,这不起作用。讨论了类似的问题,但我没能将它适应这个问题,bash 通常会抱怨它没有找到""

答案3

更新:它现在将尝试安装 /bin/程序,/usr/bin/程序,/sbin/程序或 /usr/sbin/程序
这是完全自动的...
假设你输入g++ main.cpp并且你没有安装 g++,它会询问你是否要安装包 g++,如果你回答是,它会安装它然后运行g++ main.cpp

(这是一次性设置...完成此操作后您就可以开始了)

  1. 安装 apt 文件...sudo apt-get install apt-file
  2. 更新其缓存...sudo apt-file update
  3. 编辑 ~/.bashrc 并添加以下内容:

    command_not_found_handle () {
    ask () {
      echo -ne "$1 (Y/n) ";
      read -N1 YES_ANSWER;
      echo "";
      YES_ANSWER=`echo $YES_ANSWER | sed 's/Y/y/; s/N/n/;'`;
      if [ "x$YES_ANSWER" == "xy" ]; then
        unset YES_ANSWER;
        return 0;
      elif [ "x$YES_ANSWER" == "xn" ]; then
        unset YES_ANSWER;
        return 1;
      elif [ "x$YES_ANSWER" == "x" ]; then
        unset YES_ANSWER;
        return 0;
      else
        ask_yes "$1";
        unset YES_ANSWER;
        return $?;
      fi;
    }
    if [ "x$1" == "x" ]; then
      echo "File name not provided.";
      return 1;
    fi;
    echo "Command not found: $1";
    echo "Searching for file in database...";
    FILE="`apt-file search /bin/$1 | sed 's/: /_/'`";
    if [ "x$FILE" != "x" ]; then
      FILE="`apt-file search /usr/bin/$1 | sed 's/: /_/'`";
    fi;
    if [ "x$FILE" != "x" ]; then
      FILE="`apt-file search /sbin/$1 | sed 's/: /_/'`";
    fi;
    if [ "x$FILE" != "x" ]; then
      FILE="`apt-file search /usr/sbin/$1 | sed 's/: /_/'`";
    fi;
    if [ "x$FILE" != "x" ]; then
      for f in "$FILE"; do
        if ask "\nDo you want to install package `echo $f | sed 's/_.*$//'` which provides `echo $f | sed 's/^.*_//'`?"; then
          sudo apt-get install `echo $f | sed 's/_.*$//'`;
          "$@";
          return $?;
        fi;
      done;
    else
      echo "Could not find file $1.";
      return 1;
    fi;
    }
    

我仍在测试它,但在初步测试中它似乎有效。不时运行它apt-file update来刷新可用文件列表会很好。

为了使编辑的 ~/.bashrc 生效,请执行以下操作之一:注销并重新登录,或运行. ~/.bashrc

相关内容