单独更新指定ppa源:脚本+自动补全

sh/bash/dash/ksh/zsh等Shell脚本
回复
funicorn
帖子: 1318
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi

单独更新指定ppa源:脚本+自动补全

#1

帖子 funicorn » 2012-10-08 3:26

使用前提:1 网络环境不佳,apt-get update周期过长 2 添加了某ppa源,想立即更新它,又不需要更新全部apt源 3 确定自己在做什么

例如:输入
update-repo
按两下tab,出现全部ppa列表
update_repo_1.png
输入edg
update_repo_2.png
按下tab,直接返回xorg-edgers-ppa-quantal.list
update_repo_3.png
回车输入密码,回车,开始更新
update_repo_4.png

代码: 全选

[ -f $HOME/.bashrc ] && cp $HOME/.bashrc{,.bak}
[ -f $HOME/.bash_funcs ] && cp $HOME/.bash_funcs{,.bak}
[ -f $HOME/.bash_completion ] && cp $HOME/.bash_completion{,.bak}
以下这段加入~/.bash_funcs

代码: 全选

update-repo() {
    sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/$1" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}
以下这段加入~/.bashrc

代码: 全选

if [ -f $HOME/.bash_funcs ]; then
    .  $HOME/.bash_funcs
fi
以下这段加入 ~/.bash_completion

代码: 全选


# Debian user-defined completion                             -*- shell-script -*-

_ppa_lists(){
    local cur
    _init_completion || return

    COMPREPLY=( $( find /etc/apt/sources.list.d/ -name "*$cur*.list" -exec basename {} \; 2> /dev/null ) )
  
    return 0
} &&
complete -F _ppa_lists update-repo
source

代码: 全选

. ~/.bashrc
. ~/.bash_completion
使用方法:source后,在命令行输入

代码: 全选

update-ppa <tab> <tab>
按两下tab,会出现ppa源的lists,输入关键字(不一定是开头字母),按tab,即可补全,回车输入密码再回车,开始更新此ppa源列表。

如果愿意,当然也可以将函数和其补全函数放入同一个脚本内,分开放的好处是便于管理,有些补全函数是可以重复使用的。
头像
平凡達人
帖子: 257
注册时间: 2008-11-13 20:27
来自: 台灣
联系:

Re: 单独更新指定ppa源:脚本+自动补全

#2

帖子 平凡達人 » 2012-10-08 7:50

感谢分享 :em11
对于有不少PPA的人来说
每次update确实需要经过痛苦的等待
有了这就不必每次都更新全部的PPA了 :em09
ASUS W7SG
UBUNTU 13.04
回复