Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
改变软件源的脚本
Apps Section
603
views ·
0
replies ·
To
floor
Go
electricface
deepin
2013-11-21 22:20
Author
第一部分 bin/change-apt-source
#!/bin/bash
. ~/shlib/shlib.
shlib. deepin-mirror color
APTSL=/etc/apt/sources.list
print_help (){
cat <<==
`basename $0`
Keyword can contain '*' wildcard
Options:
-l Show all available deepin mirrors
-h Help
-n
Not change file $APTSL
==
exit
}
print_mirrors (){
local m=${MIRRORS[@]}
echo -e ${m// /\\n}
exit
}
parse_keyword (){
[ -z $kw ] && kw=$d1
kw=`sed 's/*/.*/g' <<<$kw`
for i in ${MIRRORS[@]} ;do
if grep -q -- "$kw" <<<$i ;then
new_url=$i
break
fi
done
[ -z "$new_url" ] && {
echo ERROR no match mirror
exit
}
if ! [[ "$new_url" =~ http://|ftp:// ]] ;then
new_url=http://$new_url
fi
}
replace_sl (){
if [ "$no_change" = 1 ];then
sed_head=sed
else
sed_head='sudo sed -i'
fi
tset -f blue
$sed_head "s,$url,$new_url,g" $APTSL
tput sgr0
}
main (){
replace_sl
echo
[[ "$no_change" -eq 1 ]] && exit
read -p 'Need apt-get update (N/y)?' aptupdate
[ "$aptupdate" = y ] && sudo apt-get update
}
while getopts "hn:l" arg;do
case $arg in
h)print_help;;
l)print_mirrors;;
n)
kw=$OPTARG
no_change=1
;;
esac
done
d1=$1
url=`grep '^deb\s\+http.\+/deepin.\+main' $APTSL -m1`
url_a=($url)
url=${url_a[1]}
url=${url%/deepin}
tset -f red -B
echo Origin: $url
parse_keyword
echo Match: $new_url
main
tput sgr0
Copy the Code
第二部分 shlib/shlib.
#!/bin/bash
export IMPORT_LV=$SHLVL
declare -A SHLIB_LIST
shlib. (){
local shm=/run/shm/
if [ -d $shm ] ;then
shm=/run/shm/shlib
else
shm=/dev/shm/shlib
fi
[ -d $shm ] || mkdir $shm
local libf
for lib in $@ ;do
libf="$HOME/shlib/$lib"
if [ "$lib" = "shlib." ];then
echo "can't import self,useing cmd '. $libf'"
continue
fi
if [ -f "$libf" ] ;then
cp -u "$libf" "$shm/$lib"
SHLIB_LIST["$lib"]=1
source "$shm/$lib"
else
echo "ERROR : shell lib '$libf' no exists" >&2
fi
done
}
shlib_list (){
echo ${!SHLIB_LIST[@]}
}
test_func (){
shlib. dict utils
echo import dict utils
shlib_list
}
# . ~/shlib/test shlib.
Copy the Code
第三部分 shlib/deepin-mirror
#!/bin/bash
MIRRORS=(
packages.linuxdeepin.com
test.packages.linuxdeepin.com
mirror.sohu.com
mirror.lzu.edu.cn
ftp://mirror.lzu.edu.cn
free.nchc.org.tw
ftp://free.nchc.org.tw
mirrors.oss.org.cn
mirrors.zju.edu.cn
mirrors.tuna.tsinghua.edu.cn
mirrors.hust.edu.cn
mirror.bit.edu.cn
mirrors.jstvu.edu.cn
mirrors.ustc.edu.cn
mirror.tju.edu.cn
)
Copy the Code
第四部分 shlib/color
#!/bin/bash
tset(){
declare -A COLORS=(
[black]=0
[blue]=4
[green]=2
[cyan]=6
[red]=1
[purple]=5
[yellow]=3
[white]=7
)
OPTIND=1
local str= cmd=
while getopts "c:b:f:B" arg ;do
case $arg in
b) str+="setab ${COLORS[$OPTARG]} \n"
;;
f) str+="setaf ${COLORS[$OPTARG]} \n"
;;
B) str+="bold \n";;
c) cmd=$OPTARG ;;
esac
done
echo -e "$str" |tput -S
[ -n "$cmd" ] && {
"$cmd"
tput sgr0
}
}
test_func (){
tset -b green -f red -B
echo f is red b is green and bold font
tset -b black -f green -c 'date'
tput sgr0
}
. ~/shlib/test
Copy the Code
第五部分 shlib/test
#!/bin/bash
_test_func_org (){
if (( $SHLVL == $BASHRC_LV ));then
[ "test" = "$1" ] && return
echo -e "\n"'/ ̄ ̄' $1
test_func 2>&1 |sed "s/^/| /g"
echo -e '\____' $1"\n"
fi
}
_test_func_org $@
#Standard test_func ()
#Usage: only use to test shlib
#last line write ". ~/shlib/test libname"
Copy the Code
Reply
Like 0
Favorite
View the author
All Replies
No replies yet
Please
sign
in first
New Thread
Popular Ranking
Change
UOS Language Problem
Mouse feels like I'm on a skating rink (slippery movement)
Driver problems on HUAWEI MateBook X Pro
Cannot open calendar app from system tray
dualboot
Just a minor translate mistake
Popular Events
More
第二部分 shlib/shlib.
第三部分 shlib/deepin-mirror
第四部分 shlib/color
第五部分 shlib/test