Wie macht man apt-cache und apt-get zu einem Befehl?

Wie macht man apt-cache und apt-get zu einem Befehl?

apt-getWie kann ich in Ubuntu 11.04 oder 10.04 alles apt-cachein einem erstellen, myaptsodass ich wie in Fedora einfach nur eines verwenden kann?

Zum Beispiel:

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

Irgendeine Idee, wie man hierfür einen Alias ​​erstellt?

Antwort1

Sie könnten ein Skript mit folgendem Inhalt erstellen

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

Nehmen wir an, Sie rufen es auf myapt. Um dann weiterhin von der Bash-Vervollständigung zu profitieren, müssen Sie die folgenden Zeilen hinzufügen ~/.bashrc:

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

Sollte leider $commandallen Optionen vorangehen, aber anscheinend funktioniert die Bash-Vervollständigung nicht für Optionen, die auf einen Befehl folgen.

Antwort2

Ich bin nicht sicher, ob Sie dafür Alias ​​verwenden können, aber Sie könnten Bash verwenden, um ein Skript zu erstellen.
Ich bin kein Bash-Skriptersteller, daher kann ich Ihnen nicht den genauen Code dafür nennen, aber Sie könnten so etwas tun wie(das ist sozusagen nur Pseudocode, erwarten Sie also nicht, dass es funktioniert!!!):

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

Bedenken Sie, dass Sie das Skript (oder sogar eine kompilierte Anwendung) in jeder beliebigen Sprache schreiben können, beispielsweise Python oder Ruby. Es muss nicht Bash sein.

Denken Sie noch einmal daran, dass mein Beispiel nurPseudocode.

verwandte Informationen