Как объединить 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.

Опять же, помните, мой пример всего лишьпсевдокод.

Связанный контент