Archive for 十一月, 2008

mysqldump导出sql中insert语句的问题

0

mysqldump怎么样才能够将导出的sql中,每条记录对应一个insert语句,默认总是导出一个长的insert语句,如下所示:
[zzx@localhost ~]$ mysqldump –compact -uroot test t1> a
[zzx@localhost ~]$ more a
CREATE TABLE `t1` (
`id` int(10) default NULL,
UNIQUE KEY `idx_1` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
INSERT INTO `t1` VALUES (1),(2),(3);

我们希望把导出语句中的insert改为:
INSERT INTO `t1` VALUES (1);
INSERT INTO `t1` VALUES (2);
INSERT INTO `t1` VALUES (3);

这样在不支持insert多值的数据库中,可以很方便的进行迁移,其实方法很简单,只需要加–extented-insert=false即可:
[zzx@localhost ~]$ mysqldump –compact –extended-insert=false -uroot test t1> a
[zzx@localhost ~]$ more a
CREATE TABLE `t1` (
`id` int(10) default NULL,
UNIQUE KEY `idx_1` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
INSERT INTO `t1` VALUES (1);
INSERT INTO `t1` VALUES (2);
INSERT INTO `t1` VALUES (3);

我们从mysqldump中可以看到此参数的默认值为true:
[zzx@localhost ~]$ mysqldump –help|grep extended-insert
。。。。。。
extended-insert TRUE

awk输出时不换行

0

1.输出时使用printf
2.输出后,利用tr -d ‘n’实现替换换行
3.awk ‘BEGIN{ORS=”"}{print $0;}’ //推荐
4.awk ‘{printf(“%s”,$0);}’

Linux下调节进程优先级

0

命令:

nice(1): 以指定优先级运行程序
nice [OPTION] [COMMAND [ARG]…]
nice –n 1 ls

renice(8): 调整运行进程的优先级
renice priority [[-p] pid …] [[-g] pgrp …] [[-u] user …]
renice +1 987 -u daemon root -p 32

API:
nice(2): 改变进程优先级
int nice(int inc);

getpriority(2): 获取优先级
int getpriority(int which, int who);

setpriority(2): 设置优先级
int setpriority(int which, int who, int prio);

Reference:
http://unix-cd.com/unixcd12/article_4602.html

FileZilla Server虚拟路径设定

0

不用还不知道,原来设定filezilla的虚拟路径还有语法。关键处解决了,设定就简单多了。

方法如下:按下filezilla server的「edit」下拉选单选择「user」,进入user窗口之后,找到「shared folders」。设定好主要的目录(home dir)后,就可以设定其它次要的目录。

设定其它目录的方法如下,首先点选「Add」键,依次把其余的目录设置。但要注意的是,如果仅仅把别的目录添加进 去,那么从远程登入连接后,会发现除了主目录和它的子目录之外,另外设置的目录是看不见。
为了解决这个问题,必需要透过filezilla server内建的「虚拟路径」(Aliases)的设置。

虚拟路径,就是在客户端看到的目录结构。由于一个用户只能有一个主目录,别的目录如果不映像成虚拟目录的话,客户端将看不到它。所以只有把除了主目录之 外的其它目录,虚拟成主目录的子目录,这样在客户端才能看到。

所 以为了要让其它目录能够顺利在的客户端显示,当放置新的目录之后,都要对其作「虚拟路径」的设定,设定的方式假设主目录为C:FTP,新设置的目录为 E:UPLOAD。在新设置的目录按下鼠标右键,在下拉选单中选择「Edit aliases」就可以编辑「虚拟路径」。

编辑的规则:要把E:UPLOAD目录作为客户端uploae的目录,在「Edit aliases」输入「C:FTPupload」按下「ok」确定就可以了。上述的例子中,编写的规则在于路径的前面必须是主目录的路径。如此一来当使用者登入到ftp server时,才能顺利的显示出upload数据夹。

Shell程序设计的流程控制

0

和其他高级程序设计语言一样,Shell提供了用来控制程序执行流程的命令,包括条件分支和循环结构,用户可以用这些命令创建非常复杂的程序。

与传统语言不同的是,Shell用于指定条件值的不是布尔运算式,而是命令和字串。

1.测试命令

test命令用于检查某个条件是否成立,它可以进行数值、字符和文件3个方面的测试,其测试符和相应的功能分别如下。

(1)数值测试:

-eq 等于则为真。

-ne 不等于则为真。

-gt 大于则为真。

-ge 大于等于则为真。

-lt 小于则为真。

-le 小于等于则为真。

(2)字串测试:

= 等于则为真。

!= 不相等则为真。

-z字串 字串长度伪则为真。

-n字串 字串长度不伪则为真。

(3)文件测试:

-e文件名 如果文件存在则为真。

-r文件名 如果文件存在且可读则为真。

-w文件名 如果文件存在且可写则为真。

-x文件名 如果文件存在且可执行则为真。

-s文件名 如果文件存在且至少有一个字符则为真。

-d文件名 如果文件存在且为目录则为真。

-f文件名 如果文件存在且为普通文件则为真。

-c文件名 如果文件存在且为字符型特殊文件则为真。

-b文件名 如果文件存在且为块特殊文件则为真。

另外,Linux还提供了与(!)、或(-o)、非(-a)三个逻辑操作符,用于将测试条件连接起来,其优先顺序为:!最高,-a次之,-o最低。

同时,bash也能完成简单的算术运算,格式如下:

$[expression]

例如:

var1=2

var2=$[var1*10+1]

则var2的值为21。

2.if条件语句

Shell程序中的条件分支是通过if条件语句来实现的,其一般格式为:

if 条件命令串

then

条件为真时的命令串

else

条件为假时的命令串

fi

3.for循环

for循环对一个变量的可能的值都执行一个命令序列。赋给变量的几个数值既可以在程序内以数值列表的形式提供,也可以在程序以外以位置参数的形式提供。for循环的一般格式为:

for变量名    [in数值列表]

do

若干个命令行

done

变量名可以是用户选择的任何字串,如果变量名是var,则在in之后给出的数值将顺序替换循环命令列表中的$var。如果省略了in,则变量var的取值将是位置参数。对变量的每一个可能的赋值都将执行do和done之间的命令列表。

4.while和until循环

while和until命令都是用命令的返回状态值来控制循环的。While循环的一般格式为:

while

若干个命令行1

do

若干个命令行2

done

只要while的“若干个命令行1”中最后一个命令的返回状态为真,while循环就继续执行do…done之间的“若干个命令行2”。

until命令是另一种循环结构,它和while命令相似,其格式如下:

until

 若干个命令行1

do

 若干个命令行2

done

until循环和while循环的区别在于:while循环在条件为真时继续执行循环,而until则是在条件为假时继续执行循环。

Shell还提供了true和false两条命令用于创建无限循环结构,它们的返回状态分别是总为0或总为非0。

5.case条件选择

if条件语句用于在两个选项中选定一项,而case条件选择为用户提供了根据字串或变量的值从多个选项中选择一项的方法,其格式如下:

case string in

exp-1)

若干个命令行1

;;

exp-2)

 若干个命令行2

;;

……

*)

其他命令行

esac

Shell通过计算字串string的值,将其结果依次和运算式exp-1, exp-2等进行比较,直到找到一个匹配的运算式为止。如果找到了匹配项,则执行它下面的命令直到遇到一对分号(;;)为止。

在case运算式中也可以使用Shell的通配符(“*”、“?”、“[ ]”)。通常用 * 作为case命令的最后运算式以便在前面找不到任何相应的匹配项时执行“其他命令行”的命令。

6.无条件控制语句break和continue

break用于立即终止当前循环的执行,而contiune用于不执行循环中后面的语句而立即开始下一个循环的执行。这两个语句只有放在do和done之间才有效。

7.函数定义

在Shell中还可以定义函数。函数实际上也是由若干条Shell命令组成的,因此它与Shell程序形式上是相似的,不同的是它不是一个单独的进程,而是Shell程序的一部分。函数定义的基本格式为:

functionname

{

 若干命令行

}

调用函数的格式为:

functionname param1 param2…

Shell函数可以完成某些例行的工作,而且还可以有自己的退出状态,因此函数也可以作为if, while等控制结构的条件。

在函数定义时不用带参数说明,但在调用函数时可以带有参数,此时Shell将把这些参数分别赋予相应的位置参数$1, $2, …及$*。

8.命令分组

在Shell中有两种命令分组的方法:()和{}。前者当Shell执行()中的命令时将再创建一个新的子进程,然后这个子进程去执行圆括弧中的命令。 当用户在执行某个命令时不想让命令运行时对状态集合(如位置参数、环境变量、当前工作目录等)的改变影响到下面语句的执行时,就应该把这些命令放在圆括弧 中,这样就能保证所有的改变只对子进程产生影响,而父进程不受任何干扰。{}用于将顺序执行的命令的输出结果用于另一个命令的输入(管道方式)。当我们要 真正使用圆括弧和花括弧时(如计算运算式的优先顺序),则需要在其前面加上转义符()以便让Shell知道它们不是用于命令执行的控制所用。

9.信号

trap命令用于在Shell程序中捕捉信号,之后可以有3种反应方式:

(1)执行一段程序来处理这一信号。

(2)接受信号的默认操作。

(3)忽视这一信号。

trap对上面3种方式提供了3种基本形式:

第一种形式的trap命令在Shell接收到与signal list清单中数值相同的信号时,将执行双引号中的命令串。

trap commands signal-list

trap "commands" signal-list

为了恢复信号的默认操作,使用第二种形式的trap命令:

trap signal-list

第三种形式的trap命令允许忽略信号:

trap " " signal-list

注意:

(1)对信号11(段违例)不能捕捉,因为Shell本身需要捕捉该信号去进行内存的转储。

(2)在trap中可以定义对信号0的处理(实际上没有这个信号),Shell程序在其终止(如执行exit语句)时发出该信号。< br />
(3)在捕捉到signal-list中指定的信号并执行完相应的命令之后,如果这些命令没有将Shell程序终止的话,Shell程序将继续执行收到信号时所执行的命令后面的命令,这样将很容易导致Shell程序无法终止。

另外,在trap语句中,单引号和双引号是不同的。当Shell程序第一次碰到trap语句时,将把commands中的命令扫描一遍。此时若 commands是用单引号括起来的话,那么Shell不会对commands中的变量和命令进行替换,否则commands中的变量和命令将用当时具体 的值来替换。 
(http://www.fanqiang.com)

Windows 7 中的新字体: Gabriola

0

Windows 7 测试版中添加了好几种新字体, 其中大部分是为了解决某一种语言的显示问题而制作, 不过这一款 Gabriola 则是额外献给大家的礼物. Gabriola 由 Tiro Typeworks 的 John Hudson 所设计, 属于 TT-OT 字体, 其中包含了相当多的花体字母, 花饰, 连字, 以及配套的扩展拉丁字母, 体积达到了 3MB 之巨… 微软在 PDC 大会上还特地介绍到它. 刚装了 Windows 7, 找出来分享给大家.

点击下载

Go to Top