RT
首先感谢krash同学的furl,其实这个程序才是主角,furl可以从迅雷的服务器上找资源,我只是将其返回的资源交给aria2c分段从不同服务器上下载而已,脚本源码见下面:
需要furl和aria2c
其中furl可以去http://forum.ubuntu.org.cn/viewtopic.php?f=73&t=195557下载
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #!/bin/bash
#version 20090414
#Auther xiooli <xioooli@yahoo.com.cn>
#Have fun :)
Furl=./furl
Savedir=$HOME/Download;[ -d "$Savedir" ] || mkdir -p "$Savedir"
Initurl="$1"
if [ "$Initurl" ]; then
>/dev/shm/urllist
eval "$Furl \"$Initurl\" 2>/dev/null" >/dev/shm/urllist
Count="`cat /dev/shm/urllist|wc -l`"
Urls="`cat /dev/shm/urllist|while read url; do
echo -n $tmp" "\\\"$url\\\"
done`"
else
echo "请输入一个下载链接!"
exit
fi
echo "总共找到 $Count 个资源,开始下载..."
[ "$Urls" -a "`which aria2c 2>/dev/null`" ] && \
eval "aria2c -c -s "$Count" -d \"$Savedir\" $Urls" |
速度很不错哦,我下一个东西能上700多k呢,嘿嘿
ps:开托儿来更新自己的blog真不爽。。。
Script command, screenshot, Script
最近写论文,老板只要word格式的文档,无奈之下用crossover安装了一个m$office,好倒是好,但是stardict查词就不方便了,stardict好像是通过访问鼠标选中复制的那个玩意(PRIMARY)里面来取词的,而不是通过剪贴板(CLIPBOARD),这招在wine的程序中就不管用了,因为在wine的程序中选中单词并不会将其寄存起来,所以在word里面就只好先ctrl+c将单词复制到剪贴板,然后再粘贴到stardict中去查询了,非常麻烦。
想到有一个小程序叫xsel的可以访问和修改剪贴板:
XSEL(1x) XSEL(1x)
NAME
xsel – manipulate the X selection.
SYNOPSIS
xsel [OPTION]…
DESCRIPTION
Retrieve and set the X selection.
The X server maintains three selections, called PRIMARY, SECONDARY and CLIPBOARD. The
PRIMARY selection is conventionally used to implement copying and pasting via the mid‐
dle mouse button. The SECONDARY and CLIPBOARD selections are less frequently used by application programs. This program operates on the PRIMARY selection unless otherwise
specified.
….
哈哈,那就简单了,只要将CLIPBOARD里面的内容写到PRIMARY里面就OK了,很简单,只要一句话:
while :;do [ "`xsel -b`" != "`xsel`" ] && xsel -b|xsel;sleep 1;done
测试之下果然是可以的:
Script command, essay
RT
原文:http://www.cnblogs.com/dyj057/archive/2008/11/12/1332135.html#1470871
在土匪同学的博客上看到的,很有意思:
打开控制器,运行如下的脚本:
wget http://www.cnblogs.com/Files/dyj057/myfonts.sh.zip
unzip -o myfonts.sh.zip
chmod a+x myfonts.sh
./myfonts.sh
支持8.04, 8.10
当然了,其他发行版的linux也是可以用的。
或者你可以直接复制下面的代码(就是myfonts.sh啦),
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| #!/bin/bash
myfonts_dir=/usr/share/fonts/truetype/myfonts
screen=0
sudo mkdir $myfonts_dir 2>/dev/null
echo "字体安装工具"
echo "(C)2008 Deng.Yangjun@Gmail.com"
echo "安装控制台字体:Monaco"
wget http://www.cnblogs.com/Files/DengYangjun/monaco-linux.ttf.zip
unzip -o monaco-linux.ttf.zip
sudo mv monaco-linux.ttf $myfonts_dir
rm monaco-linux.ttf.zip
echo "安装字体:Lucida Console"
wget http://www.cnblogs.com/Files/DengYangjun/lucida-console.ttf.zip
unzip -o lucida-console.ttf.zip
sudo mv lucida-console.ttf $myfonts_dir
rm lucida-console.ttf.zip
echo "安装字体:微软雅黑"
wget http://www.cnblogs.com/Files/DengYangjun/msyh.ttf.zip
unzip -o msyh.ttf.zip
sudo mv msyh.ttf $myfonts_dir
rm msyh.ttf.zip
cd
wget http://www.cnblogs.com/Files/DengYangjun/msyhbd.ttf.zip
unzip -o msyhbd.ttf.zip
sudo mv msyhbd.ttf $myfonts_dir
rm msyhbd.ttf.zip
#Ubuntu 7.10
#wget http://www.cnblogs.com/Files/DengYangjun/language-selector.conf.zip
#unzip -o language-selector.conf.zip
#sudo mv language-selector.conf /etc/fonts
#rm language-selector.conf.zip
#Ubuntu 8.04
echo "请选择显示器类型(1-2):1-LED 2-CRT"
read screen
case $screen in
1)
wget -O local.zip http://www.cnblogs.com/Files/dyj057/local.led.zip
;;
2)
wget -O local.zip http://www.cnblogs.com/Files/dyj056/local.zip
;;
?)
echo "无效选择,退出安装"
exit 1;
esac
unzip -o local.zip
sudo mv /etc/fonts/conf.avail/51-local.conf /etc/fonts/conf.avail/51-local.conf.old
sudo mv local.conf /etc/fonts/conf.avail/51-local.conf
rm local.zip
cd /etc/fonts/conf.avail
sudo mv 69-language-selector-zh-cn.conf 69-language-selector-zh-cn.conf.old 2>/dev/null
cd $myfonts_dir
sudo chmod 555 *
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -v
echo "安装字体结束,谢谢使用。请重新登录,查看字体效果。" |
Script command, Script
最近做实验整出一堆的实验数据,手工处理的话就太变态了,而用origin(win,这个我用不上)或qtiplot(linux,kde)又要点来点去点得头晕(可能是不熟悉的缘故)。我只是需要计算些很简单的东西,比如标准偏差(这玩意主要用来画图上的误差棒),于是想到了大名鼎鼎的awk同志,简单几句搞定,嘿嘿,awk可不是盖的:
1
2
3
4
5
6
7
8
9
10
11
| #计算一组数据的标准偏差。
BEGIN{print "倒数第一列是标准偏差,倒数第二列是平均值。"}
function sq(x){return x*x}
{
sum=0
tmp=0
for (i=1;i<=NF;i++) sum+=$i
avr=sum/NF
for (i=1;i<=NF;i++) tmp+=sq($i-avr)
print $0,avr,sqrt(tmp/(NF-1))
} |
演示一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| xiooli(~/共享)>> cat haha.txt
0.6437 0.5912 0.5639
0.7375 0.6796 0.8372
0.7750 0.7403 0.8372
0.8188 0.8177 0.8605
1 1 1
0.8500 0.8895 0.8837
0.8812 0.8453 0.8372
0.4187 0.4254 0.4593
0.5407 0.4939
0.6860 0.8163
0.7849 0.8571
0.6047 0.6653
0.9244 1.000 0.9720
0.9012 0.8900 0.9398
1 1 0.9210
0.9942 0.9796 1
xiooli(~/共享)<< awk -f /home/xiooli/.scripts/err.awk haha.txt
倒数第一列是标准偏差,倒数第二列是平均值。
0.6437 0.5912 0.5639 0.5996 0.0405577
0.7375 0.6796 0.8372 0.751433 0.0797185
0.7750 0.7403 0.8372 0.784167 0.0490961
0.8188 0.8177 0.8605 0.832333 0.0243992
1 1 1 1 0
0.8500 0.8895 0.8837 0.8744 0.0213291
0.8812 0.8453 0.8372 0.854567 0.023418
0.4187 0.4254 0.4593 0.434467 0.0217656
0.5407 0.4939 0.5173 0.0330926
0.6860 0.8163 0.75115 0.092136
0.7849 0.8571 0.821 0.0510531
0.6047 0.6653 0.635 0.0428507
0.9244 1.000 0.9720 0.965467 0.0382211
0.9012 0.8900 0.9398 0.910333 0.0261261
1 1 0.9210 0.973667 0.0456107
0.9942 0.9796 1 0.991267 0.0105116 |
呵呵,没有验算,不知道对不对,想来问题不大。处理后直接调用gnuplot去画图就好了,从此生活轻松多了,哈哈^^
Script command, Script
下载网络上的一些资源时候经常会遇到要求你安装乱七八糟的流氓下载软件才能下载的情况。其实这些连接只是很简单的base64加密,用脚本可以轻松搞定,再将其关联到ff的话就可以直接获取原始连接,再调用普通下载软件去下载了,这个脚本就是干这个的^^(还有图形界面阿)。
依赖:base64, zenity, axel, xsel
用法:将脚本保存,并赋予可执行权限。
关联到firefox的方法:about:config里面新建一个Boolean,名字为 network.protocol-handler.external.thunder,值为true ,再新建一个String,名字为 network.protocol-handler.app.thunder,值为本脚本的保存路径。其他快车/qq旋风等同理(尾部换成.flashget和.qqdl)。也可以不关联到ff,从终端调用方法:
ps:这个只是取得加密的链接,不要指望会真的有迅雷那样的速度。唉,真是流氓有速度,谁也挡不住阿。。
脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| #!/bin/bash
#*********************************************
# Name: mutidown
# Version: 090218
# License: GPLv3
# Author: xiooli <xiooli@yahoo.com.cn>
#*********************************************
Save_dir=~/Download #最后面请不要加“/”,不然保存文件的时候可能找不到路径。
Max_num=20 #在此设定axel的最大连接数
[ ! -d "$Save_dir" ] && mkdir -p "$Save_dir"
#下载链接,给出一个下载进度条,并且当点击“取消”的时候将该axel废掉武功。
DOWNLOAD() {
local axel_info axel_tty axel_pid
axel -n "$Max_num" "$1" -o "$2/$3" |while read a;do
echo "$a" |grep "^[\[D]" |sed 's/^\[ *//;s/%.*$//;s/^Download.*$/100/'
done |zenity --progress --auto-close --text="下载 $True_url 至 $2" --width="350" 2>/dev/null &
axel_info="`ps ax |grep "axel.*$1" |awk '{print $1"-"$2}'`"
axel_tty="`echo $axel_info |sed 's/^.*-//'`"
axel_pid="`echo $axel_info |sed 's/-.*$//'`"
while :;do
if ! [ "`ps ax |grep "$axel_tty.*zenity"`" ];then
[ "`ps -A |grep "$axel_pid"`" ] && kill -9 "$axel_pid"
break
fi
sleep 1
done &
}
#出来一个动作选择菜单,选择下一步动作。
UI() {
local choice file_name save_dir
choice="$(zenity --list --title "保存文件 -- `basename "$0"`" --text "默认保存目录为:$Save_dir \n解析得URL:$True_url" \
--column "选项" --column "动作" \
A 下载至默认目录 B 选择目录并下载 C 保存链接到剪贴板 2>/dev/null)"
case "$choice" in
'A')
file_name="$(zenity --entry --title="重命名文件 -- `basename "$0"`" --text="请输入一个文件名(取消则按链接默认命名)" 2>/dev/null)"
DOWNLOAD "$True_url" "$Save_dir" "$file_name"
;;
'B')
save_dir="$(zenity --file-selection --directory 2>/dev/null)"
file_name="$(zenity --entry --title="重命名文件 -- `basename "$0"`" --text="请输入一个文件名(取消则按链接默认命名)" 2>/dev/null)"
DOWNLOAD "$True_url" "$save_dir" "$file_name"
;;
'C')
printf "$True_url" |xsel -i -b
;;
esac
}
#从$1获取加密地址,并将其解码出来。
DECODE() {
local str
str="$1"
if [ "`echo "$str" |grep -i "^thunder"`" ];then
True_url="`echo -n "$str" |sed 's/^[Tt]hunder:\/\///' |base64 -d |sed 's/^AA//;s/ZZ$//'`"
elif [ "`echo "$str" |grep -i "^flashget"`" ];then
True_url="`echo -n "$str" |sed 's/^[Ff]lashget:\/\///' |base64 -d |sed 's/\[FLASHGET\]//g'`"
elif [ "`echo "$str" |grep -i "^qqdl:"`" ];then
True_url="`echo -n "$str" |sed 's/^qqdl:\/\///' |base64 -d`"
else
True_url="$str"
fi
[ ! -z "$True_url" ] && UI
}
DECODE "$1" |
Script command, download, Script
RT
自动创建缩略图需要convert(安装imagemagick包即可)
看看效果图,还不错哦,会自动根据你的图标主题生成小图标(不过category的图标得自己准备就是了):
这个是根据/usr/share/applications里面的desktop文件来创建的。如果你新安装了程序,再运行一下就可以了,不要的项目直接注释掉,下回更新的时候不会覆盖。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
| #!/bin/bash
#Name: Fvwm menu auto creator (FMAC)
#Author: xiooli <xioooli[at]yahoo.com.cn,http://joolix.com>
#Licence: GPLv3
#Version: 09.01.20
Menufile=~/.fvwm/configs/menu_content
Categories=(Network AudioVideo Graphics Office Games Utility Settings System Development Unknow)
Categorieszh=(网络 影音 图像 办公 游戏 附件 设置 系统 开发 未知)
Lang="$(locale|awk -F"." '/LANG=/{gsub("LANG=","",$1);print $1}')"
Fvwmiconspath="`echo ~/.fvwm/icons`"
[ -d "$Fvwmiconspath" ] || mkdir -p "$Fvwmiconspath"
Iconspath=""`echo ~/.icons`" "/usr/share/icons""
#Iconthemedir="Gnome" #在此可以定义使用的图标主题(路径/名称均可,不填就从 ~/.gtkrc-2.0去找)
Iconthemedir="${Iconthemedir:-$(awk -F"=" '/gtk-icon-theme-name=/{gsub("\"","",$2);print $2}' "`echo ~/.gtkrc-2.0`")}"
[ -d "$Iconthemedir" ] || for i in $Iconspath;do
[ -d "$i/$Iconthemedir" ] && Iconthemedir="$i/$Iconthemedir" && break
done
RESIZE () {
convert -resize 24x24 "$1" "$2"
}
ADD_TO_MENU () {
#$1 catnum; $2 iconpath; $3 name; $4 execmd
local menutip cataicon
[ -f $Menufile ] ||cat << EOF >$Menufile
#此文件里面是菜单的具体内容,菜单的样式在./menu_style中定义。
DestroyMenu recreate MenuFvwmRoot
AddToMenu MenuFvwmRoot "FVWM 菜单" Title Top
#MenuCate
EOF
if [ "`grep -w "Menu${Categories[$1]}" "$Menufile"`" ];then
menutip="+ \\\"%$2%$3\\\" Exec exec $4\n#Menu${Categories[$1]}"
[ "`grep -w "$4" "$Menufile"`" ] || \
eval "sed -i \"s/^#Menu${Categories[$1]}/${menutip//\//\\/}/\" \"$Menufile\""
else
menutip="+ \\\"%$Fvwmiconspath/categrories/${Categories[$1]}.png%${Categorieszh[$1]}\\\" Popup Menu${Categories[$1]}\n#MenuCate"
eval "sed -i \"s/^#MenuCate/${menutip//\//\\/}/\" \"$Menufile\""
echo -e "\nDestroyMenu Menu${Categories[$1]}\nAddToMenu Menu${Categories[$1]}\n#Menu${Categories[$1]}" >> "$Menufile"
menutip="+ \\\"%$2%$3\\\" Exec exec $4\n#Menu${Categories[$1]}"
eval "sed -i \"s/^#Menu${Categories[$1]}/${menutip//\//\\/}/\" \"$Menufile\""
fi
}
GET_INFO () { # $1 gives the desktop file name
local j name type execmd icon iconpath cattmp catnum
name="`grep -i "^name\[$Lang\]" $1|sed "s/^.*=//"`"
[ "$name" ] || name="`grep -i "^name=" $1|sed "s/^.*=//"`"
execmd="`grep -i "^exec=" $1|sed "s/^.*=//;s/%.//g"`"
cattmp="`grep -i "Categories=" $1|sed "s/^.*=//"`"
for j in `seq 0 "$((${#Categories[@]}-1))"`;do
[ "${cattmp//${Categories[$j]}/}" != "$cattmp" ] && catnum="$j" && break
done
catnum="${catnum:-$((${#Categories[@]}-1))}"
icon="`grep -i "^icon=" $1|sed "s/^.*=//"`"
if [ -f "$icon" ];then
iconpath="$icon"
[ ! -f "$Fvwmiconspath/$icon" -a "$iconpath" ] && RESIZE "$iconpath" "$Fvwmiconspath/"`basename "$icon"`""
else
[ "${icon/%.png/}" = "$icon" ] && icon="${icon}.png"
iconpath="`find "$Iconthemedir" -type f -name "$icon" -print|sort|tail -n1`"
[ "$iconpath" ] || iconpath="`find "$Iconthemedir" -type f -name "*$icon" -print|sort|tail -n1`"
[ ! -f "$Fvwmiconspath/$icon" -a "$iconpath" ] && RESIZE "$iconpath" "$Fvwmiconspath/$icon"
iconpath="${iconpath:-"$Fvwmiconspath/noicon.png"}"
fi
ADD_TO_MENU "$catnum" "$Fvwmiconspath/`basename "$icon"`" "$name" "$execmd"
}
for k in /usr/share/applications/*.desktop;do
GET_INFO "$k"
done |
Script command, Linux & Friends, Script
scort很不错,功能强劲,但是由于其是cli软件,于是被很多人无视了,其实只有简单的几句脚本,然后做成一个启动器放面板上面就会很方便的。
下面是我平常使用的scrot脚本,作了个启动器在panel上面,使用时只需点击一下启动器,然后用鼠标点击窗口就会截图该窗口,点击桌面就全屏截图,画矩形就截矩形部分,截出来的文件保存在自己设置的目录里面,保存的文件名是以scrot-xx.png的形式,xx是数字,当保存目录下有其他的 scrot-xx.png的时候xx会自动加一。
1
2
3
4
5
6
7
8
9
10
11
12
| #!/bin/bash
#Name scrot.sh
#Author xiooli <xioooli[at]yahoo.com.cn,http://joolix.com>
#Licence GPL
savedir=~/桌面/
prefix="scrot-"
num="`ls "$savedir"|grep "$prefix"|tail -n1|sed "s/"$prefix"//g;s/\..*$//g;s/^0//"`"
num=${num:--1}
((num++))
num="`printf "%.2d" ${num}`"
eval "scrot "${prefix}${num}.png" -bs -e 'mv \$f "$savedir"'" |
来个示范截图:
Script command, screenshot, Script, 添加新标签
RT
看见有人怀念win下的ctrl+z撤销操作(主要是撤销删除文件),于是用了几分钟写了这个脚本,虽然不能撤销重命名/移动文件等,但是聊胜于无嘛,同时也进一步证明了shell的灵活与强大。
脚本内容:
xiooli(~/桌面)=☪ cat recover.sh
#!/bin/bash
trashpath=~/.local/share/Trash
infofile="`ls -t "$trashpath/info"|head -n1`"
filename="${infofile/%.trashinfo}"
filepath="`grep "Path=" "$trashpath/info/$infofile"|sed "s/Path=//"|perl -p -e 's/%(..)/pack("c", hex($1))/eg'`"
eval "mv \"$trashpath/files/$filename\" \"$filepath\""
rm "$trashpath/info/$infofile"
,保存其为recover.sh,赋予可执行权限。
绑定快捷键:
在gnome中(未开特效):
应用程序》系统》配置编辑器》找到/app/metacity/keybinding_commands选一个键,比如command_1将其键值修改为上述脚本的路径。
然后找到/app/metacity/global_keybinding选中一个键run_command_1(其最后数字一定要同上面的command_1后面的数字相同),修改其键值为你想要的快捷键(如<Control>z)即可。
在compiz中(开了特效):
打开compiz的控制中心》general options》commands》commands》command line 0 填上刚刚那个脚本的路径,然后》key bindings》run command 0 设置快捷键(ctrl+z)。
搞定上面一系列东东后,如果你将一个文件删除到回收站里面,如果你反悔,想将其还原回来,就不必去回收站恢复了,直接按快捷键ctrl+z即可。呵呵方便很多了吧^^
Script command, Script
最近评论