当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 24 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-12 4:42 

注册: 2008-12-27 15:16
帖子: 46
送出感谢: 0 次
接收感谢: 0 次
我是菜鸟,刚开始学习,也不知道做一个什么东西好,于是就编写了一个管理shell脚本的shell脚本……

详见附件,希望大家用一用,看一看,给点意见 :em11

里面有注释得,我自认为不是很混乱。 :em06

如果不想下载的话,我把内容贴在了15楼。


附件:
文件注释: 脚本管理器
script-man3.7z [2.51 KiB]
被下载 15 次


最后由 xiii_1991 编辑于 2011-06-19 15:21,总共编辑了 1 次
页首
 用户资料  
 
2 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-12 17:48 

注册: 2008-12-27 15:16
帖子: 46
送出感谢: 0 次
接收感谢: 0 次
:em06 怎么没有人理我。。。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-12 17:49 
头像

注册: 2010-01-28 10:45
帖子: 19507
送出感谢: 6
接收感谢: 41
直接贴上来吧
还搞附件 :em06


_________________

*********宁静致远*********
如果我说的有什么不对,请看签名第一行


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-12 20:49 
头像

注册: 2010-10-30 17:52
帖子: 76
送出感谢: 0 次
接收感谢: 0 次
很清楚的注释。


_________________
个人博客:http://blog.jtwo.me/
女友淘宝:http://icykiss.taobao.com/
你有什么不开心的事情,说出来让大家开心一下。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-12 21:47 

注册: 2007-07-01 17:36
帖子: 229
地址: (En):address
系统: (En):System
送出感谢: 2
接收感谢: 3
作为练习挺好的。

不过实用性不是太高。(个人观点)


_________________
---
regards,

Kent


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-12 22:23 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
最讨厌交互式询问了,和微软平台上的“下一步”×N 以及各种 wizard 没什么区别,除了更丑之外。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-13 0:56 

注册: 2008-12-27 15:16
帖子: 46
送出感谢: 0 次
接收感谢: 0 次
monk 写道:
直接贴上来吧
还搞附件 :em06

有点长啊。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-13 0:57 

注册: 2008-12-27 15:16
帖子: 46
送出感谢: 0 次
接收感谢: 0 次
sk1418 写道:
作为练习挺好的。

不过实用性不是太高。(个人观点)

可以免去重复得输入一些命令啊,而且那个目录是设定到path的啊。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-13 1:03 

注册: 2008-12-27 15:16
帖子: 46
送出感谢: 0 次
接收感谢: 0 次
lilydjwg 写道:
最讨厌交互式询问了,和微软平台上的“下一步”×N 以及各种 wizard 没什么区别,除了更丑之外。


我也 觉得不方便。其实我配套的有一个参数的版本。

我想改成没有参数就交互得,就像aptitude一样。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-13 1:07 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
xiii_1991 写道:
monk 写道:
直接贴上来吧
还搞附件 :em06

有点长啊。


这里贴代码可以折叠的。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-13 1:08 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
xiii_1991 写道:
lilydjwg 写道:
最讨厌交互式询问了,和微软平台上的“下一步”×N 以及各种 wizard 没什么区别,除了更丑之外。


我也 觉得不方便。其实我配套的有一个参数的版本。

我想改成没有参数就交互得,就像aptitude一样。


aptitude 有基于文本的界面,你这个连命令行界面都不是。。。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-13 1:47 

注册: 2008-12-27 15:16
帖子: 46
送出感谢: 0 次
接收感谢: 0 次
lilydjwg 写道:
xiii_1991 写道:
monk 写道:
直接贴上来吧
还搞附件 :em06

有点长啊。


这里贴代码可以折叠的。

好的,4.0的时候我就 直接贴代码……


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-13 1:48 

注册: 2008-12-27 15:16
帖子: 46
送出感谢: 0 次
接收感谢: 0 次
lilydjwg 写道:
xiii_1991 写道:
lilydjwg 写道:
最讨厌交互式询问了,和微软平台上的“下一步”×N 以及各种 wizard 没什么区别,除了更丑之外。


我也 觉得不方便。其实我配套的有一个参数的版本。

我想改成没有参数就交互得,就像aptitude一样。


aptitude 有基于文本的界面,你这个连命令行界面都不是。。。

:em06 惭愧 惭愧


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-13 10:39 
头像

注册: 2010-04-23 20:40
帖子: 1950
地址: 浙江·杭州
系统: Arch Linux
送出感谢: 2
接收感谢: 31
[bash]echo "长也没关系啊"
echo "贴出来吧"
echo "不想下载"
echo -e "\033[01;32m======华丽的分割线======\033[0m"
echo "论坛不是还有这个功能吗?"
echo "用神马 [bash] 和 [/bash] 就行了"
[/bash]


_________________
我是 Giumo Clanjor(哆啦比猫/兰威举)
Where there is a hacker, there is art. | Develop for Developers. (C & perl5)
博客 | Clanjor Prods.
类 C 语言到 brainfuck 编译器


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 我写得一个脚本管理器,希望大家指正。
帖子发表于 : 2011-06-14 0:22 

注册: 2008-12-27 15:16
帖子: 46
送出感谢: 0 次
接收感谢: 0 次
cjxgm 写道:
[bash]echo "长也没关系啊"
echo "贴出来吧"
echo "不想下载"
echo -e "\033[01;32m======华丽的分割线======\033[0m"
echo "论坛不是还有这个功能吗?"
echo "用神马 [bash] 和 [/bash] 就行了"
[/bash]


我试试看
我用不同的软件编辑过,所以有的地方缩进不一样
[bash]
#!/bin/sh
#文件名:script-man3.sh
#简介:第三代脚本管理器交互版。
#作者 xiii_1991
#创建时间:2011-01-23
#END
ver='3.5'
help(){
echo "Shell脚本管理程序 $ver"
echo "n 从模板新建脚本"
echo "e 使用 $editor 编辑脚本"
echo "x 给予/取消脚本运行权限"
echo "l 查看脚本列表"
echo "f 刷新脚本目录"
echo "m 查看脚本信息"
echo "r 重命名脚本文件"
echo "d 删除某脚本"
echo "b 备份现有的全部自定义脚本"
echo "rmtrash 清除内建回收站"
echo "clear 清屏幕"
echo "0 退出"
echo ""
}



#初始化
begin(){
clear
selfname="script-man3.sh" #自身得文件名
#filename=$0
myfunc="$HOME/myscripts" #保存所有脚本得目录

if [ -f $myfunc/.scriptmanrc ];then
owner="`awk '/^owner/{print $2}' "$myfunc/.scriptmanrc"`"
editor="`awk '/^editor/{print $2}' "$myfunc/.scriptmanrc"`"
else
echo "未发现设置文件,现在开始初始化。"
[ ! -d $myfunc ]&& mkdir $myfunc
echo "请输入您的称呼:\c";read owner
echo "owner $owner" >> $myfunc/.scriptmanrc

echo "请输入默认编辑器: \c";read editor
echo "editor $editor" >> $myfunc/.scriptmanrc

[ -f $selfname ]&& cp $selfname $myfunc/$selfname
touch $myfunc/模板文件
fi
[ "$myfunc" != "`pwd`" ]&& echo "注意:一切操作都在$myfunc里进行"
[ ! -d "$myfunc/backup" ]&& mkdir "$myfunc/backup"
[ ! -d "$myfunc/trash" ]&& mkdir "$myfunc/trash"

}

#错误处理
errorcode(){
case $error in
'1') echo "输入不能为空!" ;;
'2') echo "输入的文件已存在!" ;;
'3') echo "输入的文件不存在!" ;;
'4') echo "操作取消。" ;;
'5') echo "脚本目录文件不存在,请使用指令f创建。"
esac
}


#处理扩展名
nosh(){
file="$myfunc/${filename%%.*}.sh"
}

#从模板新建
new_sh(){
echo "请输入脚本文件名(不包含\".\"):\c";read filename
if [ -z $filename ];then error='1'
else
nosh
if [ -f $file ];then error='2'
else
echo "请输入一段说明:\c";read filememo
echo "#!/bin/sh" > $file
echo "#文件名 ${filename%%.*}.sh">>$file
echo "#作者 "${owner}"" >>$file
echo "#简介 $filememo">>$file
echo "#创建时间 `date +%F`">>$file
echo "#END">>$file
cat $myfunc/model >>$file
echo "新脚本 ${filename%%.*}创建完毕。可以使用指令e进行查看和编辑。"
fi
fi
}

#重命名
rename(){
echo "请输入脚本文件名(不包含扩展名):\c";read filename
if [ -z $filename ];then error='1'
else
nosh
if [ ! -f $file ];then error='3'
else
echo "请输入新名称:\c";read newname
newfile="$myfunc/${newname%%.*}.sh"
mv $file $newfile
#sed -n -e '/^#文件名/d;1a"#文件名 $newfile";w' $newfile
echo "${filename&&.*}已更名为${newname%%.*}"

fi
fi
}

#删除
del(){
echo "请输入脚本文件名(不包含扩展名):\c";read filename
if [ -z $filename ];then error='1'
else
nosh
if [ ! -f $file ];then error='3'
else
echo "即将删除${filename},请确认(y):\c";read choice
if [ "$choice" = 'y' ];then mv $file $myfunc/trash ; echo "${filename%%.*}.sh已移动至内建回收站。"
else error='4'
fi
fi
fi
}


#查看信息
memo(){
echo "请输入脚本文件名(不包含扩展名):\c";read filename
if [ -z $filename ];then error='1'
else
nosh
if [ ! -f $file ];then error='3'
else
echo "\n"
echo $file
echo "\n"
sed -n -e '1d;1,/#END/{/#END/d;s/#//;1,25p}' $file
line="`wc -l $file`"
sine="`sed -n -e '/#END/p' $file`"
echo "\n\n"
[ -z $sine ]&& echo "脚本没有可识别的注释标记。"
echo "脚本共有${line%% *}行"
[ ! -x $file ] && echo "没有运行权限"
fi
fi
}

#权限
x(){
echo "请输入脚本文件名(不包含扩展名):\c";read filename
if [ -z $filename ];then error='1'
else
nosh
if [ ! -f $file ];then error='3'
else
if [ -x $file ];then chmod -x $file;echo "${filename%%.*} 已取消运行权限。"
else chmod +x $file;echo "${filename%%.*} 已添加运行权限";fi
fi
fi
}


#gvim编辑
edit_it(){
echo "请输入脚本文件名(不包含扩展名):\c";read filename
if [ -z $filename ];then error='1'
else
nosh
if [ ! -f $file ];then error='3'
else
$editor $file
fi
fi
}


#刷新脚本目录
fresh(){
[ -f $myfunc/scriptlist ]&& rm $myfunc/scriptlist

for file in $myfunc/*.sh
do
date="`sed -n -e '/^#创建时间*/{s/#创建时间//;s/ //g;s/://g;s/://g;p}' $file`"
[ -z $date ]&&date='-'

owner="`sed -n -e '/^#作者*/{s/#作者//;p}' $file`"
[ -z $owner ]&&owner='-'

filen="${file##*/}"

line="`wc -l $file`"

ifx='-'
[ -x $file ]&& ifx='x'

echo "$filen $ifx $owner $date ${line%% *}" >> $myfunc/scriptlist
echo "$filen \c"
done
echo "脚本扫描完毕。"
}

#格式化显示目录
list(){
if [ -f $myfunc/scriptlist ];then
awk 'BEGIN{print "序号 文件名 权限 作者 创建日期 行数"}{printf("%4s %-20s [%1s] %-10s %-10s %4s \n",NR,$1,$2,$3,$4,$5)}END{print "\n 共有脚本" NR "个"}' $myfunc/scriptlist | more
echo "详细信息请使用指令m查看。"
else
error='5'
fi
}

#备份
backup(){

backname="myscripts-snapshot-`date +%m-%d-%k-%M`.tar.bz2"
[ -f "$myfunc/backup/$backname" ]&& rm "$myfunc/backup/$backname"
echo "即将备份全部自定义sh脚本。"
cd $myfunc
tar -cvpjf "backup/$backname" *.sh .scriptmanrc model

echo "全部脚本文件、配置文件、模板文件已备份为 $backname"
}


#清除回收站
rmtrash(){
echo "请输入YES,即将清空内建回收站。\c" ; read choice
if [ choice = 'YES' ] ; then
rm -rf $myfunc/trash
else
error='4'
fi
}

#main处理
main(){
error='0'
echo
echo "请输入操作指令:\c" ; read user
case $user in
'n') new_sh ;; #从模板新建脚本
'e') edit_it ;; #使用Gvim编辑脚本
'x') x ;; #给予/取消脚本运行权限
'l') list ;; #查看Shell脚本列表
'f') fresh ;; #刷新脚本目录
'm') memo ;; #查看脚本信息
'r') rename ;; #重命名脚本文件
'd') del ;; #删除某脚本
'b') backup ;; #备份现有的全部自定义脚本
'rmtrash') rmtrash ;; #清除内建回收站
'0') break ;;
'h') help ;;
'clear') clear ;;
*) echo "代码错误。输入h查看."
esac
}




#主程序
begin
loopp='1'
lock=$myfunc/script-man3.lock #加一个运行锁
if [ -f $lock ] ; then
echo "发现有另一个脚本管理器正在运行,请确认!!"
echo "也有可能是上一次没有正常退出,请删除 $lock 后再试。"
loopp='0'
echo "按Enter退出。" ; read ss
else
touch $lock
while [ $loopp = '1' ] ; do main ;errorcode ;done
rm $lock
fi


[/bash]


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 24 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译