如果我输入未安装的程序的命令,我可能会收到如下消息:
[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
。
(这是一次性设置...完成此操作后您就可以开始了)
- 安装 apt 文件...
sudo apt-get install apt-file
- 更新其缓存...
sudo apt-file update
编辑 ~/.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
。