add-apt-repository ppa:relan/exfat 
apt-get update

apt-get install exfat-fuse

mkdir /mnt/exfat
mount.exfat-fuse /dev/sdc1 /mnt/exfat

add-apt-repository 是由 python-software-properties 这个工具包提供的,只有 ubuntu 09.10 之后版本支持。

本函数区别于realpath,并非基于真是存在的文件系统获取文件路径。故应用范围更为广泛一些,即使文件系统中没有该文件,也可以获得文件的真实路径。

/**
 * 整理文件路径
 * 作者: 若海[mail@anrip.com]
 */
function path_tidy($path) {
    $tidy = array();
    $path = strtr($path, '\\', '/');
    foreach(explode('/', $path) as $i => $item) {
        if($item == '' || $item == '.' ) {
            continue;
        }
        if($item == '..' && end($tidy) != '..' && $i > 0) {
            array_pop($tidy);
            continue;
        }
        $tidy[] = $item;
    }
    return ($path[0]=='/'?'/':'').implode('/', $tidy);
}

//下例将输出/a/b/d/e
echo path_tidy('/u/../a/./b/c/../d/e/./');

SSLCertKit是若海[mail@anrip.com]使用DOS命令编写的,生成供Nginx使用的数字证书的小工具。

SSLCertKit调用openssl来生成数字证书,生成的证书可以给Windows或Unix(Linux)下的Nginx使用,以支持HTTPS协议。

此工具使用于以下几种情况:
1、创建自己的RootCA和服务器证书
2、创建自签名的服务器证书
3、使用第三方签名服务器证书

下载附件: SSLCertKit

1: syslog.conf的介绍

对于不同类型的Unix,标准UnixLog系统的设置,实际上除了一些关键词的不同,系统的syslog.conf格式是相同的。syslog采用可配置的、统一的系统登记程序,随时从系统各处接受log请求,然后根据/etc/syslog.conf中的预先设定把log信息写入相应文件中、邮寄给特定用户或者直接以消息的方式发往控制台。值得注意的是,为了防止入侵者修改、删除messages里的记录信息,可以采用用打印机记录或采用方式来挫败入侵者的企图。

2: syslog.conf的格式

/etc/syslog.conf文件中的一项配置记录由“选项”(selector)和“动作”(action)两个部分组成,两者间用tab制表符进行分隔(使用空格间隔是无效的)。而“选项”又由一个或多个形如“类型.级别”格式的保留字段组合而成,各保留字段间用分号分隔。如下行所示:
类型.级别 [;类型.级别] TAB 动作

2.1 类型
保留字段中的“类型”代表信息产生的源头,可以是:

auth    认证系统,即询问用户名和口令
cron    系统定时系统执行定时任务时发出的信息
daemon  某些系统的守护程序的syslog,如由in.ftpd产生的log
kern    内核的syslog信息
lpr     打印机的syslog信息
mail    邮件系统的syslog信息
mark    定时发送消息的时标程序
news    新闻系统的syslog信息
user    本地用户应用程序的syslog信息
uucp    uucp子系统的syslog信息
local0-7 种本地类型的syslog信息,这些信息可以又用户来定义
*       代表以上各种设备

2.2 级别
保留字段中的“级别”代表信息的重要性,可以是:

emerg   紧急,处于Panic状态。通常应广播到所有用户; 
alert   告警,当前状态必须立即进行纠正。例如,系统数据库崩溃; 
crit    关键状态的警告。例如,硬件故障; 
err     其它错误; 
warn    警告; 
notice  注意;非错误状态的报告,但应特别处理; 
info    通报信息; 
debug   调试程序时的信息; 
none    通常调试程序时用,指示带有none级别的类型产生的信息无需送出。如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。

2.3 动作
“动作”域指示信息发送的目的地。可以是:

/filename   日志文件。由绝对路径指出的文件名,此文件必须事先建立; 
@host       远程主机; @符号后面可以是ip,也可以是域名,默认在/etc/hosts文件下loghost这个别名已经指定给了本机。
user1,user2 指定用户。如果指定用户已登录,那么他们将收到信息; 
*           所有用户。所有已登录的用户都将收到信息。

3: 示例
我编译的MiLinux中使用了如下配置

# First some standard log files.
*.*;auth,authpriv.none;mail.none        /var/log/syslog
*.alert;*.crit;*.err                    /var/log/syserr
auth,authpriv.*                         /var/log/auth.log
mail.*                                  /var/log/mail.log
# Emergencies are sent to everybody logged in.
*.emerg                                :omusrmsg:*

假设有变量

var=http://www.google.com/test.htm

# 号截取,删除左边字符,保留右边字符。

echo ${var#*//}

其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://
结果是:www.google.com/test.htm

## 号截取,删除左边字符,保留右边字符。

echo ${var##*/}

*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符

即删除http://www.google.com/
结果是:test.htm

%号截取,删除右边字符,保留左边字符

echo ${var%/*}

%/* 表示从右边开始,删除第一个 / 号及右边的字符
结果是:http://www.google.com

%% 号截取,删除右边字符,保留左边字符

echo ${var%%/*}

%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:

从左边第几个字符开始,及字符的个数

echo ${var:0:5}

其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:

从左边第几个字符开始,一直到结束。

echo ${var:7}

其中的 7 表示左边第8个字符开始,一直到结束。
结果是:www.google.com/test.htm

从右边第几个字符开始,及字符的个数

echo ${var:0-7:3}

其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:test

从右边第几个字符开始,一直到结束。

echo ${var:0-7}

表示从右边第七个字符开始,一直到结束。
结果是:test.htm

替换一部分内容

echo ${var/com/net}
echo ${var//com/net}

表示从左边开始,替换第一个(或全部)com为net
结果是:http://www.google.net/test.htm

变量默认值

var=google
echo ${var:+yahoo}
echo ${var:-baidu}

第一行表示变量不为空时输出yahoo,第二行表示变量为空时输出baidu
结果是:yahoo google

注1:左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示
注2:替换时,不可以使用 regexp , 只能用 ? 的文件扩展方式
注3:以上操作基于ubuntu和 http://www.anrip.com/webox 平台*