月度归档:2014年05月

echo的高级用法-颜色输出与光标定位

转自:http://blog.chinaunix.net/uid-26495963-id-3189345.html

echo进行颜色输出的时候,要使用参数-e

格式:echo -e “\033[字背景颜色;字体颜色m”

如:echo -e “\033[32;40m”

在上面命令中,”\033[32;40m”表示定义后面文本的颜色,“\033”表示启动一个转义序列,“[”定义开始颜色定义,“0”定义默认的字体颜色,其它部分稍后定义。“32”定义文本的前景色,这里32表示绿色;“40”定义文本的背景色,40表示黑色。

我们一共有8种字体颜色可供选择,它们分别是30 (黑色)、31 (红色)、32 (绿色)、33 (黄色)、34 (蓝色)、35 ( 紫红色)、36 (青色)和37 (白色)。

对于底色也有8种颜色可供选择,只需要将字体颜色的3修改为4即可,例如40、41、42、43、44、45、46、47。

另外,我们还可以用echo进行光标定位

如:echo -e “\033[10;5H\033[31;46mthis is a test”,表示,将光标移到第10行第5列,并输出this is a test字样,该字样前景色为红色,背景色为青色

更多echo输出的控制,具体的摘抄一些如下:

\033[0m 关闭所有属性

\033[1m 设置高亮度

\033[4m 下划线

\033[5m 闪烁

\033[7m 反显

\033[8m 消隐

\033[30m — \033[37m 设置前景色

\033[40m — \033[47m 设置背景色

\033[nA 光标上移n行

\033[nB 光标下移n行

\033[nC 光标右移n行

\033[nD 光标左移n行

\033[y;xH设置光标位置

\033[2J 清屏

\033[K 清除从光标到行尾的内容

\033[s 保存光标位置

\033[u 恢复光标位置

\033[?25l 隐藏光标

\033[?25h 显示光标

附录:

echo: echo [-neE] [参数 …]

将参数写到标准输出。

在标准输出上显示 ARG 参数后跟一个换行。

选项:

-n 不要追加换行

-e 启用下列反斜杠转义的解释

-E 显式地抑制对于反斜杠转义的解释

`echo’ 对下列反斜杠字符进行转义:

\a 警告(响铃)

\b 退格

\c 抑制更多的输出

\e 转义字符

\f 格式提供

\n 换行

\r 回车

\t 横向制表符

\v 纵向制表符

\\ 反斜杠

\0nnn 以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是

0到3个八进制数字

\xHH 以 HH (十六进制)为值的八比特字符。HH可以是

一个或两个十六进制数字

退出状态:

返回成功除非有写错误发生。

linux网络通信相关的系统调用

retcode = socket ( family, type, protocol ) ;
retcode = accept ( socket, addr, addrlen ) ;
retcode = bind ( socket, localaddr, addrlen ) ;
retcode = close ( socket ) ;
retcode = connect ( socket, addr, addrlen ) ;
retcode = fork () ;
retcode = gethostbyaddr ( addr, len, type ) ;
retcode = gethostbyname ( name )
hostid = gethostid () ;
retcode = gethostname ( name, namelen ) ;
retcode = getpeername ( socket, remaddr, addrlen ) ;
retcode = getprotobyname ( name ) ;
retcode = getservbyname ( name, proto ) ;
retcode = getsockname (socket, name, namelen)
retcode = getsockopt ( socket, level, opt, optval, optlen ) ;
retcode = gettimeofday ( tm, tmzone ) ;
retcode = listen ( socket, queuelen ) ;
retcode = read ( socket, buff, buflen ) ;
retcode = recv ( socket, buffer, length, flags ) ;
de = recvfrom ( socket, buffer, length, flags, from , fromlen ) ;
retcode = recvmsg ( socket, msg, flags ) ;
retcode = select ( numfds, refds, wrfds, exfds, time ) ;
retcode = send ( socket, msg, msglen, flags ) ;
retcode = sendmsg ( socket, msg, flags ) ;
retcode = sendto ( socket, msg, msglen, flags, to, tolen ) ;
(void) sethostid ( hostid ) ;
retcode = setsockopt ( socket, level, opt, optval, optlen ) ;
retcode = shutdown ( socket, direction ) ;
retcode = write ( socket, buff, buflen ) ;

gcc 编译的几个步骤

1. gcc -E hello.c -o hello.i
预处理过程,会包含.h文件等
2.gcc -S hello.i -o hello.s
产生汇编指令
3.gcc -c hello.s -o hello.o
产生机器代码,生成obj模块
4.gcc -o hello hello.o
链接需要的其他模块代码,生成可执行文件。