如何將 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。

再一次,記住我的例子只是虛擬程式碼

相關內容