备份软件配置的脚本
时间:2011-02-15
来源:互联网
基本的想法就是每件todo对应一个文件,事项就是文件名,备注就是文件内容。做完的记录在.done目录里面。
代码:https://gist.github.com/827296
我在dash和mksh下试过,没发现什么大问题。应该还是比较通用的。
======================
用法举例
======================
初始化
ftm init
(默认文件都存在~/.config/ftm下,可以 ftm init /path/your/dir 来制定其他目录)
新增
ftm -a 明天去买牙膏
写备注(调用默认编辑器编辑)
ftm -e 明天去买牙膏
也可以偷懒,尾部省略(要求唯一匹配)
ftm -e 明天
看备注:
ftm -c 明天去买牙膏
要买白人牌的
列出所有todo
ftm -l
列出带“买”字的todo
ftm -l 买
做完了:
ftm -d 明天去买牙膏
支持尾部省略(要求唯一匹配)
ftm -d 明天
或者,ftm -d 标记ftm -l列出的第一项
ftm -n也是显示ftm -l列出的第一项
ftm -s ERE正则表达式
搜索所有todo的备注
其他用法
ftm -h
或者直接看原文件的注释,最详细。
===================
关于这个脚本
===================
没经验,写得乱七八糟的。
语法真是诡异,fi和esac之类的倒觉得还好,我感到奇怪的是函数定义里面 { 和 } 居然是关键词。最要命的是quote和escape,大部分时间都浪费在这上面。
都用了全局变量。其实函数里面应该用local的。但是dash里面的local很诡异,比如下面的例子:
mksh和bash都输出
dash就报错。所以为了兼容这个dash,我就全用了全局变量。
顺带一提,ftm init dir可以指定保存的目录,这个数据要记录下来。但我又不想为了这个搞一个配置文件。不知道有什么好办法?
我现在的做法是用sed修改源代码中的变量,类似:
可以工作,但总觉得这样搞不靠谱。
代码:https://gist.github.com/827296
我在dash和mksh下试过,没发现什么大问题。应该还是比较通用的。
======================
用法举例
======================
初始化
ftm init
(默认文件都存在~/.config/ftm下,可以 ftm init /path/your/dir 来制定其他目录)
新增
ftm -a 明天去买牙膏
写备注(调用默认编辑器编辑)
ftm -e 明天去买牙膏
也可以偷懒,尾部省略(要求唯一匹配)
ftm -e 明天
看备注:
ftm -c 明天去买牙膏
要买白人牌的
列出所有todo
ftm -l
列出带“买”字的todo
ftm -l 买
做完了:
ftm -d 明天去买牙膏
支持尾部省略(要求唯一匹配)
ftm -d 明天
或者,ftm -d 标记ftm -l列出的第一项
ftm -n也是显示ftm -l列出的第一项
ftm -s ERE正则表达式
搜索所有todo的备注
其他用法
ftm -h
或者直接看原文件的注释,最详细。
===================
关于这个脚本
===================
没经验,写得乱七八糟的。
语法真是诡异,fi和esac之类的倒觉得还好,我感到奇怪的是函数定义里面 { 和 } 居然是关键词。最要命的是quote和escape,大部分时间都浪费在这上面。
都用了全局变量。其实函数里面应该用local的。但是dash里面的local很诡异,比如下面的例子:
代码:
f() {
local x=1
readonly x
echo $x
}
g() {
local x=2
readonly x
echo $x
}
f
g
f
local x=1
readonly x
echo $x
}
g() {
local x=2
readonly x
echo $x
}
f
g
f
mksh和bash都输出
代码:
1
2
1
2
1
dash就报错。所以为了兼容这个dash,我就全用了全局变量。
顺带一提,ftm init dir可以指定保存的目录,这个数据要记录下来。但我又不想为了这个搞一个配置文件。不知道有什么好办法?
我现在的做法是用sed修改源代码中的变量,类似:
代码:
config_bang() {
readonly var_pattern="^(readonly $1=).*"
readonly new_var_pattern=$2
sed -i -r -e "s:$var_pattern:\1$new_var_pattern:" $0
}
readonly var_pattern="^(readonly $1=).*"
readonly new_var_pattern=$2
sed -i -r -e "s:$var_pattern:\1$new_var_pattern:" $0
}
可以工作,但总觉得这样搞不靠谱。
作者: millenniumdark 发布时间: 2011-02-15
local那个应该是dash的bug,而且很可能是readonly的bug。先定一个全局的x,后面再执行fg就不会报错了
另外这样定义也不会报错:local readonly x=1
另外呢,按照这个规范 http://standards.freedesktop.org/basedi ... atest.html
配置文件该放$XDG_CONFIG_HOME/ftm,XDG_CONFIG_HOME没设置才用$HOME/.config/ftm
而所有的todo文件是数据,该放在$XDG_DATA_HOME/ftm或$HOME/.local/share/ftm里
还有就是help()的输出,按照惯例来说,[]里面的参数是可选的,你那个不该加[]
另外这样定义也不会报错:local readonly x=1
另外呢,按照这个规范 http://standards.freedesktop.org/basedi ... atest.html
配置文件该放$XDG_CONFIG_HOME/ftm,XDG_CONFIG_HOME没设置才用$HOME/.config/ftm
而所有的todo文件是数据,该放在$XDG_DATA_HOME/ftm或$HOME/.local/share/ftm里
还有就是help()的输出,按照惯例来说,[]里面的参数是可选的,你那个不该加[]
作者: astolia 发布时间: 2011-02-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28