- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Thizlinux 系统教程 Shell 经典实例
Thizlinux 系统教程 Shell 经典实例
----------------Milo经典小shell
1 列目录树的shell
脚本如下:
#!/bin/sh
# dtree: Usage: dtree [any directory]
dir=${1:-.}
(cd $dir; pwd)
find $dir -type d -print | sort -f | sed -e s,^$1,, -e /^$/d -e s,[^/]*/([^/]*)$,`----1, -e s,[^/]*/,| ,g
2 while中使用read (file是一个文件)
cat file | while read line
do
echo $line
echo :: Please input any key(s):c
str4read=
while true
do
chr4read=`dd if=/dev/tty bs=1 count=1 2/dev/null`
str4read=$str4read$chr4read
if [ $chr4read = ] ;then break; fi
done
echo :: |$str4read|
done
3 将多个空格替换为字符
sed s/[ ][ ]*/ /g
如果空格与tab共存时用
sed -e s/[[:space:]][[:space:]]*/ /g filename
4用脚本实现分割文件
#!/bin/bash
if [ $# -ne 2 ]; then
echo Usage: split file size(in bytes)
exit
fi
file=$1
size=$2
if [ ! -f $file ]; then
echo $file doesnt exist
exit
fi
#TODO: test if $size is a valid integer
filesize=`/bin/ls -l $file | awk {print $5}`
echo filesize: $filesize
let pieces=$filesize/$size
let remain=$filesize-$pieces*$size
if [ $remain -gt 0 ]; then
let pieces=$pieces+1
fi
echo pieces: $pieces
i=0
while [ $i -lt $pieces ];
do
echo split: $file.$i:
dd if=$file of=$file.$i bs=$size count=1 skip=$i
let i=$i+1
done
echo #!/bin/bash merge
echo i=0 merge
echo while [ $i -lt $pieces ]; merge
echo do merge
echo echo merge: $file.$i merge
echo if [ ! -f $file.$i ]; then merge
echo echo merge: $file.$i missed merge
echo rm -f $file.merged merge
echo exit merge
echo fi merge
echo dd if=$file.$i of=$file.merged bs=$size count=1 seek=$i merge
echo let i=$i+1 merge
echo done merge
chmod u+x merge
5得到上月未日期,格式为YYYYMMDD
get_lastday_of_lastmonth()
{
yy=`date +%Y`
mm=`date +%m-1|bc`
[ $mm -lt 1 ] mm=12;yy=`expr $yy - 1`
aaa=`cal $mm $yy`
dd=`echo $aaa|awk {print $NF}`
echo $yy$mm$dd
}
print $NF的$NF是打印最后一个列。因为awk的内置变量NF是列的总数,而$NF就代表着最后一列
6 实现用backup或tar命令来做目录备份
需要保持两个目录当中的文件以及属组关系不变。子目录结构不变,通过管道控制tar和backup命令,不需要中间的archive,(考虑到速度以及空间的关系)
(cd /source tar cf - .) |(cd /dest tar zxfp -)
偶没有 backup 命令,但是 tar 用管道可以,
tar -cf - dir1 | ( cd dir2;
文档评论(0)