apt-cache、apt-get を 1 つのコマンドにするにはどうすればよいでしょうか?

apt-cache、apt-get を 1 つのコマンドにするにはどうすればよいでしょうか?

Ubuntu 11.04 または 10.04 で、Fedora のように 1 つだけを簡単に使用できるように、 をオールインワンにするにはapt-getどうすればよいですか?apt-cachemyapt

例えば:

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 である必要はありません。

繰り返しますが、私の例は疑似コード

関連情報