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

4

No Ubuntu 11.04 ou 10.04, como posso fazer o apt-get , apt-cache all in one myapt para 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?

    
por YumYumYum 24.09.2011 / 00:29

2 respostas

9

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

#!/bin/bash

command=""; 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 continuar tendo o benefício de 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 $command deve preceder quaisquer opções, mas parece que a conclusão do bash não funciona para as opções que seguem o comando.

    
por enzotib 24.09.2011 / 09:39
1

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

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

Lembre-se de 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, ele não precisa ser bash.

Novamente, lembre-se de que meu exemplo é apenas pseudocódigo .

    
por RolandiXor 24.09.2011 / 01:28