Como fazer apt-cache, apt-get em um comando?

Como fazer apt-cache, apt-get em um comando?

No Ubuntu 11.04 ou 10.04, como posso fazer o apt-get, apt-cacheall in one myaptpara que eu possa simplesmente usar apenas um, como no Fedora?

Por exemplo:

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

Alguma ideia de como fazer um alias para isso?

Responder1

Você poderia criar um script com o seguinte conteúdo

#!/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

Suponha que você chame isso de myapt. Então, para ainda ter o benefício da conclusão do bash, você precisa adicionar as seguintes linhas a ~/.bashrc:

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

Infelizmente, $commanddeve preceder qualquer opção, mas parece que a conclusão do bash não funciona para opções que seguem o comando.

Responder2

Não tenho certeza se você pode usar um alias para isso, mas você pode usar o bash para criar um script.
Como não sou um scripter bash, não seria capaz de lhe dizer o código exato para fazer isso, mas o que você poderia fazer é algo como(isso é apenas pseudocódigo, então não espere que funcione!!!):

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

Tenha em mente que você pode escrever o script (ou até mesmo um aplicativo compilado) em qualquer linguagem com a qual você se sinta confortável, como python ou ruby, por exemplo, não precisa ser bash.

Novamente, lembre-se que meu exemplo é apenaspseudo-código.

informação relacionada