功能說明:顯示文字。
語 法: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;
}