apt-cache, apt-get을 하나의 명령으로 만드는 방법은 무엇입니까?

apt-cache, apt-get을 하나의 명령으로 만드는 방법은 무엇입니까?

Ubuntu 11.04 또는 10.04에서 Fedora처럼 하나만 사용할 수 있도록 apt-get올인원 apt-cache을 어떻게 만들 수 있습니까 ?myapt

예를 들어:

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일 필요는 없습니다.

다시 한 번 말씀드리지만, 제 예는 단지의사코드.

관련 정보