个人工具
登录
查看“Shell编程基础”的源代码 - Ubuntu中文
页面
讨论
查看源代码
历史
搜索
导航
首页
最近更改
随机页面
页面分类
帮助
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息
查看“Shell编程基础”的源代码
来自Ubuntu中文
←
Shell编程基础
跳转至:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
=== 文件循环移动 === 你可能有这样的需求并一直都这么做:将所有发出邮件保存到一个文件中。但是过了几个月之后,这个文件可能会变得很大以至于该文件的访问速度变慢;下面的脚本 rotatefile 可以解决这个问题。这个脚本可以重命名邮件保存文件(假设为outmail)为outmail.1,而原来的outmail.1就变成了 outmail.2 等等... <source lang="bash"> #!/bin/bash # vim: set sw=4 ts=4 et: ver="0.1" help() { cat << HELP rotatefile -- rotate the file name USAGE: rotatefile [-h] filename OPTIONS: -h help text EXAMPLE: rotatefile out This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1 and create an empty out-file version $ver HELP exit 0 } if [[ $1 == '-h' || $1 == '' ]]; then help fi filename=$1 # 我们先找到最大的数字再说。 max=0 while [ -f "$filename.$((++max))" ]; do : # 什么都不用做,我们已经顺手用 ++max 自增了 max 了。 done # 然后从最大的一路重命名下来。 for ((i=max; i>0; i--)); do # 数字加个 1,好给前一个让位子。 mv "$filename.$i" "$filename.$((i+1))" done # 最后我们点名要重命名的: if [ -f "$filename" ]; then mv "$filename" "$filename.1" fi # 重新创建一下。 : > "$filename" </source>。
返回至
Shell编程基础
。