代码改变世界

老大让我学Linux之echo指令,awk,grep,sed指令及shell上的socket程序实例

2011-07-22 10:42  Aga.J  阅读(4785)  评论(0编辑  收藏  举报

下文摘自网络文章

Linux echo命令

功能说明:显示文字。

语 法:echo [-ne][字符串] 或 echo [--help][--version]

补充说明:echo默认会将结果字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。

参 数:

-n   不要在最后自动换行

-e   若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

\a   发出警告声;

\b   删除前一个字符;

\c   最后不加上换行符号;

\f    换行但光标仍旧停留在原来的位置;

\n   换行且光标移至行首;

\r   光标移至行首,但不换行;

\t   插入tab;

\v   与\f相同;

\\   插入\字符;

\nnn   插入nnn(八进制)所代表的ASCII字符;

--help 显示帮助

--version 显示版本信息

echo要变换颜色的时候,要使用参数-e

格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"

例如:

echo -e "\033[41;36m something here \033[0m"

其中41的位置代表底色, 36的位置是代表字的颜色

那些ascii code 是对颜色调用的始末.

\033[ ; m …… \033[0m

让字体变为红色并且不停的闪烁

#echo -e "\033[31m \33[05m 请确认是否要停止当前的squid进程,输入 [Y/N] \033[0m"

或者

#echo -e "\033[31m \033[05m 请确认是否要停止当前的squid进程,输入 [Y/N] \033[0m"

字背景颜色范围:40----49

40:黑

41:深红

42:绿

43:黄色

44:蓝色

45:紫色

46:深绿

47:白色

字颜色:30-----------39

30:黑

31:红

32:绿

33:黄

34:蓝色

35:紫色

36:深绿

37:白色

===============================================ANSI控制码的说明

\33[0m 关闭所有属性

\33[1m 设置高亮度

\33[4m 下划线

\33[5m 闪烁

\33[7m 反显

\33[8m 消隐

\33[30m -- \33[37m 设置前景色

\33[40m -- \33[47m 设置背景色

\33[nA 光标上移n行

\33[nB 光标下移n行

\33[nC 光标右移n行

\33[nD 光标左移n行

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

\33[2J 清屏

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

\33[s 保存光标位置

\33[u 恢复光标位置

\33[?25l 隐藏光标

\33[?25h 显示光标

Linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。

ECHO命令是大家都熟悉的DOS批处理命令的一条子命令,但它的一些功能和用法也许你并不是全都知道,不信你瞧:

1. 作为控制批处理命令在执行时是否显示命令行自身的开关 格式:ECHO [ON|OFF] 如果想关闭“ECHO OFF”命令行自身的显示,则需要在该命令行前加上“@”。

2. 显示当前ECHO设置状态 格式:ECHO

3. 输出提示信息格式:ECHO信息内容上述是ECHO命令常见的三种用法,也是大家熟悉和会用的,但作为DOS命令淘金者你还应该知道下面的技巧:

4. 关闭DOS命令提示符 在DOS提示符状态下键入ECHO OFF,能够关闭DOS提示符的显示使屏幕只留下光标,直至键入ECHO ON,提示符才会重新出现。

5. 输出空行,即相当于输入一个回车格式:ECHO.值得注意的是命令行中的“.”要紧跟在ECHO后面中间不能有空格,否则“.”将被当作提示信息输出到屏幕。另外“.”可以用,:;”/[/]+等任一符号替代。在下面的例子中ECHO.输出的回车,经DOS管道转向作为TIME命令的输入,即相当于在TIME命令执行后给出一个回车。所以执行时系统会在显示当前时间后,自动返回到DOS提示符状态: C:〉ECHO.|TIME ECHO命令输出空行的另一个应用实例是:将ECHO.加在自动批处理文件中,使原本在屏幕下方显示的提示画面,出现在屏幕上方。

6. 答复命令中的提问格式:ECHO答复语|命令文件名上述格式可以用于简化一些需要人机对话的命令(如:CHKDSK/F;FORMAT Drive:;del *.*)的操作,它是通过DOS管道命令把ECHO命令输出的预置答复语作为人机对话命令的输入。下面的例子就相当于在调用的命令出现人机对话时输入“Y”回车: C:〉ECHO Y|CHKDSK/F C:〉ECHO Y|DEL A :*.*

7. 建立新文件或增加文件内容 格式:ECHO 文件内容>文件名 ECHO 文件内容>>文件名 例如:C:〉ECHO @ECHO OFF〉AUTOEXEC.BAT建立自动批处理文件 C:〉ECHO C:/CPAV/BOOTSAFE〉〉AUTOEXEC.BAT向自动批处理文件中追加内容 C:TYPE AUTOEXEC.BAT显示该自动批处理文件 @ECHO OFF C:/CPAV/BOOTSAFE

8. 向打印机输出打印内容或打印控制码 格式:ECHO 打印机控制码>PRN ECHO 打印内容>PRN 下面的例子是向M-1724打印机输入打印控制码。<Alt>156是按住Alt键在小键盘键入156,类似情况依此类推: C:〉ECHO 〈Alt〉+156〈Alt〉+42〈Alt〉+116〉PRN(输入下划线命令FS*t) C:〉ECHO 〈Alt〉+155@〉PRN(输入初始化命令ESC@) C:〉ECHO.〉PRN(换行)

9. 使喇叭鸣响 C:〉ECHO ^G “^G”是用Ctrl+G或Alt+007输入,输入多个^G可以产生多声鸣响。使用方法是直接将其加入批处理文件中或做成批处理文件调用。

10.执行ESC控制序列修改屏幕和键盘设置我们知道DOS的设备驱动程序ANSI.SYS提供了一套用来修改屏幕和键盘设置的ESC控制序列。如执行下述内容的批处理程序可以把功能键F12定义为DOS命令“DIR/W”,并把屏幕颜色修改为白色字符蓝色背景。 @ECHO”←[0;134;”DIR/W”;13p @ECHO”←[1;37;44m (注:批处理文件中“←”字符的输入方法是在编辑状态下按Alt中小键盘上的27)

-------------------------------------------------------------------------------------------------------------------------------------------

初识Shell socket

#include<netdb.h>

#include<sys/socket.h>

#include<errno.h>

#include<stdio.h>

#include<unistd.h>

#define ECHO_PORT 8080

#define MAX_CLIENT_NUM 10

int main()

{

int socketfd;

socketfd = socket (AF_INET, SOCK_STREAM, 0);

//aga:create server socket for listening

if ( socketfd == -1)

{

printf("errno=%d",errno);

exit(1);

}

else

{

printf("socket create successfully");

}

struct sockaddr_in sa;

bzero(&sa, sizeof(sa));

sa.sin_family = AF_INET;

sa.sin_port = htons(ECHO_PORT);

sa.sin_addr.s_addr = htons(INADDR_ANY);

//aga: set socket port and address

bzero(&(sa.sin_zero),8);

if( bind( socketfd, (struct sockaddr *)&sa, sizeof(sa) )!=0)

//aga: bind socket with socket address

{

printf("bind failed");

printf("errno=%d",errno);

}

else

{

printf("bind successfully");

}

//aga: after successfully binding, begin to listen!

if(listen(socketfd,MAX_CLIENT_NUM)!=0)

{

printf("listen error");

exit(1);

}

else

{

printf("listen successfully");

}

int clientfd;

struct sockaddr_in clientAdd;

//aga: client socket address

char buff[101];

socklen_t len = sizeof(clientAdd);

int closing=0;

while( closing == 0 && ( clientfd= accept( socketfd,(struct sockaddr*)&clientAdd,&len))>0)

//aga: listening socket waits for accepting client connection

{

send(clientfd,"connect successfully!",21,0);

int n;

while( (n=recv( clientfd,buff,100,0))>0)

//aga: after connection established, server begins to recvive msg

{

printf("number of receive bytes = %d ",n);

write ( STDOUT_FILENO, buff, n);

send( clientfd,buff,n,0);

buff[n]=' ';

if( strcmp(buff,"quit")==0)

{

break;

}

else if( strcmp(buff, "close")==0)

{

closing =1;

printf("server is closing ");

break;

}

}

close(clientfd);

}

close(socketfd);

return 0;

}

------------------------------------------------------------------------------------------------------------------------------------------------

下面是awk grep sed的网上文章整理笔记

awk_grep_sed学习笔记.rar