如何将 apt-cache、apt-get 合并为一个命令?

如何将 apt-cache、apt-get 合并为一个命令?

在 Ubuntu 11.04 或 10.04 中,我怎样才能将apt-get所有内容整合apt-cache在一起myapt,以便我可以只使用一个,就像在 Fedora 中一样?

例如:

myapt search yum   # same as apt-cache search
myapt remove yum   # same as apt-get remove
myapt install yum  # same as apt-get install

知道如何为此添加别名吗?

答案1

您可以创建包含以下内容的脚本

#!/bin/bash

command="$1"; shift

case $command in
  add|depends|dotty|dump|dumpavail|gencaches|madison|pkgnames|policy|rdepends|search|show|showpkg|showsrc|stats|unmet|xvcg)
    apt-cache "$command" "$@"
    ;;
  autoclean|autoremove|build-dep|check|clean|dist-upgrade|dselect-upgrade|install|purge|remove|source|update|upgrade)
    apt-get "$command" "$@"
    ;;
esac

假设你将其命名为myapt。那么,为了仍然享受 bash 补全的好处,你需要将以下几行添加到~/.bashrc

_myapt() {
  _apt_get
  tt=("${COMPREPLY[@]}")
  _apt_cache
  COMPREPLY+=("${tt[@]}")
  return 0
} &&
complete -F _myapt $filenames myapt

不幸的$command是应该在任何选项之前,但似乎 bash 完成对跟在命令后面的选项不起作用。

答案2

我不确定你是否可以使用别名来实现这一点,但你可以使用 bash 来创建脚本。
现在我不是 bash 脚本编写者,所以我无法告诉你实现这一点的确切代码,但你可以这样做(这只是伪代码,所以不要指望它能起作用!)

var action
var input
get action, input
  if action == search
    then do apt-cache search input
  if action == remove
    then do apt-get remove input
  if action == install
    then do apt-get install input

请记住,您可以使用您熟悉的任何语言编写脚本(甚至是编译的应用程序),例如 python 或 ruby​​,不一定是 bash。

再次记住,我的例子只是伪代码

相关内容