¿Cómo hacer que apt-cache y apt-get estén en un solo comando?

¿Cómo hacer que apt-cache y apt-get estén en un solo comando?

En Ubuntu 11.04 o 10.04, ¿cómo puedo hacer apt-gettodo apt-cacheen uno myaptpara poder usar uno solo, como en Fedora?

Por ejemplo:

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

¿Alguna idea de cómo hacer un alias para esto?

Respuesta1

Podrías crear un script con el siguiente contenido.

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

Supongamos que lo llamas myapt. Luego, para seguir teniendo el beneficio de completar bash, debe agregar las siguientes líneas a ~/.bashrc:

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

Desafortunadamente, $commanddebería preceder a cualquier opción, pero parece que la finalización de bash no funciona para las opciones que siguen al comando.

Respuesta2

No estoy seguro de que puedas usar un alias para eso, pero puedes usar bash para crear un script.
Ahora bien, no soy un scripter de bash, por lo que no podría decirte el código exacto para lograrlo, pero lo que podrías hacer es algo como(Esto es solo pseudocódigo, más o menos, ¡¡¡así que no esperes 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

Tenga en cuenta que puede escribir el script (o incluso una aplicación compilada) en cualquier idioma con el que se sienta cómodo, como Python o Ruby, por ejemplo, no tiene que ser bash.

Nuevamente, recuerda que mi ejemplo es solopseudocódigo.

información relacionada