月度归档:2013年12月

rmexcept的实现

rmexcept删除一个目录下的所有文件,附加某些特别的例外。

脚本命名为rmexcept,并且添加执行权限:


for m in $@ ; 
do 
    cp $m ../ 
done 
 
rm -rf * 
 
for m in $@ ; 
do 
    cp ../$m . 
done 

用法,
rmexcept a.c b.c 这样就会删除当前目录下除了a.c,b.c以外的所有文件。

一个批量转换文件为utf-8的脚本

最近看到一个很古老的代码,当时正是gb2312横行的时代,所以,遍地都是gbk编码了。现如今打开,看起来一堆乱码,很不舒服,写了一个凑合脚本。

结合shell 跟 php

shell 实际上用的只是find

                                                                                
if [ $# -lt 1 ] 
then
    depth=1
else
    depth=$1
fi

if [ $# -lt 2 ] 
then
    name="*"
else
    name="$2"
fi

echo "Begin running:"

find . -maxdepth $depth -name "$name" -exec php /Users/qixingyue/sina/bin/cutf_8
.php {} \;

核心php代码:


<?php                                                                                                                         

if($argc != 2) exit();
$file_name = $argv[1];

if(is_dir($file_name)) return;

$file_name = getcwd() . trim($file_name,".");

if(is_link($file_name)){
    echo "Link file: $file_name \n";    
    return;
}

if(!file_exists($file_name)){
    echo "None file: $file_name \n";
    return;
}

if(!is_writeable($file_name)){
    echo "Can not write $file_name \n";
    return; 
}

$str = file_get_contents($file_name);

$from_types = array("ASCII", "GBK", "GB2312", "Unicode", "UTF-8");
$this_type  = mb_detect_encoding($str, $from_types);

if($this_type == "UTF-8") {
    echo "Already UTF-8 $file_name \n";
    return; 
}

if($this_type){

    echo "$file_name   $this_type ========> UTF-8 \n";
    $str = mb_convert_encoding($str,"UTF-8",$this_type);    
    file_put_contents($file_name,$str);
} 

gdb常用调试操作

1.启动gdb
gdb加可执行程序的全路径 gdb /usr/local/bin/bdbpool

2.设置命令行参数:
set args
3.运行:
run
4. 设置断点:
break 加的可以是函数名,行号等
5.查看变量的值:
p 变量名
6.查看字符串的值:
p p@str_len
7.删除断点:
delete 断点编号
8.查看断点:
info break
9.执行下一行:
next:n