$[ ] 表示形式告诉shell对方括号中的表达式求值

echo $[3+9]

赋值运算符

=,+=,-=,*=,/=,%=,&=,^=、|=,<<=,>>=

let count = $count + $change

let count += $change

cat longfile |more使用分页

tee   命令把结果输出到标准输出,另一个副本输出到相应文件

该命令一般用于管道之后  (一般看到输出,并存文件)

合并标准输出和标准错误

grep “standard” standard.txt >grep.out 2>&1

文件状态测试

格式    test condition    或 [ condition ]

使用方括号时,要注意在条件两边加上空格。

文件测试状态 :测试的结果可以用$?(上一个命令的返回值)的值来判断,0表示成功,其他为失败

-d       目录                   -s        文件长度大于0、非空

-f        正规文件           -w       可写

-L      符号链接          -u        文件有suid位设置

-r       可读                  -x        可执行

-z        字符串为空

数值测试

格式    测试两个数值大小

"number" numberic_operator "number"
    或者
    [ "number" numberic_operator "number" ]
    numberic_operator可为:
    -eq         数值相等。
    -ne         数值不相等。
    -gt         第一个数大于第二个数。
    -lt          第一个数小于第二个数。
    -le         第一个数小于等于第二个数。
    -ge         第一个数大于等于第二个数。

语法1

if 条件

then 命令

fi

注意if语句必须以fi终止

练习:

#if test

if [ "13" -lt "12" ]; then # "13" 前一个空格,“13”后也有一个空格。

  ...to do

fi

CASE

#!/bin/bash

#case select

echo -n "enter a number from 1 to 3:"

read num

case $num in

1)

echo "you select 1"

;;

2)

echo "you select 2"

;;

3)

echo "you select 3"

;;

y|Y)

echo “you select y”

;;

*)

echo "`basename $0`:this is not between 1 and 3">&2

exit;

;;

esac

for

#!/bin/bash

start=`ipcs | sed -n '/共享内存段/='`
 end=`ipcs | sed -n '/信号量数组/='`

for i in `ipcs | sed -n ${start},${end}p | grep slmax | awk '{print $2}'`
 do
 echo -e $i
 done

until

#!/bin/sh

#until_mom 监控分区

Part="/backup"

Look_Out=`df | grep "$Part" | awk '{print $5}' | sed 's/%//g' `

echo $Look_Out;

until [ "$Look_Out" -gt "90" ]

do

echo -e "Filesystem $Part is nearly full " | mail root

Look_Out=`df | grep "$Part" | awk '{printf $5}' | sed 's/%//g' `

sleep 3600

done

while

#!/bin/bash
 while echo -n "请输入一个字符:";read ch
do
 echo $ch
 done

A\{3\}B   AAAB

A\{3,\}B AAAB AAAAB ...

A\{3,5\}B AAAB AAAAB AAAAAB

行首以^匹配

行尾以$匹配

^$   匹配空行

^.$  匹配包含一个字符的行

使用\屏蔽一个特殊字符的含义

假定要匹配任意一个数字,可以使用:

[0123456789]

然而,通过使用“-”符号可以简化操作:

[ 0  -  9  ]

或任意小写字母

[  a  -  z  ]

要匹配任意字母,则使用:

[  A  -  Z  a  -  z  ]

表明从A - Z、a - z的字母范围。

如要匹配任意字母或数字,模式如下:

[  A  -  Z  a  -  z  0  -  9  ]

在字符序列结合使用中,可以用 [ ]指出字符范围。假定要匹配一单词,以 s开头,中间有

任意字母,以t结尾,那么操作如下:

s[a-z A-Z]t

[ou] .*t

匹配以字母o或u开头,后跟任意一个字符任意次,并以t结尾的任意字母。

注意^符号的使用,当直接用在第一个括号里,意指否定或不匹配括号里内容。

[^a-zA-Z]匹配任一非字母型字符

[  ^  0  -  9  ]匹配任一非数字

5.8使用\{\}匹配模式结果出现的次数

使用*可匹配所有匹配结果任意次,但如果只要指定次数,就应使用 \ { \ },此模式有三种

形式,即:

pattern\{n\} 匹配模式出现n次。

pattern\{n,\} 匹配模式出现最少n次。

pattern\{n,m} 匹配模式出现n到m次之间,n , m为0 - 2 5 5中任意整数。

请看第一个例子,匹配字母A出现两次,并以B结尾,操作如下:

A  \  {  2  \  }  B ;A出现2次匹配值为A A B

A  \  {  4  ,  \  }  B;匹配A至少4次

可以得结果A A A A B或A A A A A A A B,但不能为A A A B。

如给出出现次数范围,例如A出现2次到4次之间:

A  \  {  2  ,  4  \  }  B

则结果为A A B、A A A B、A A A A B,而不是A B或A A A A A B等。

[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}; 匹配IP地址

find -name *sh | xargs grep "done" -n 从当前目录往下查找文件以sh结尾的,并且文件内容里有 "done"字符串,列出来并打印该字符串在第几行

而grep一般只是筛选出上一次屏幕打印出来的内容

find -name *.sh | xargs grep "done" -n | awk -F":" '{print $1, "\t\t\t", $2}'

sed -n '2,5p'  打印第二到第五行

df | sed -n ${AAA},${BBB}p 有变量情况下的打印

sed -n $

sed -n '/关键字/=' 返回关键字所在的行数

sed -i 's/old/new/g'  把old替换成new

什么是socket?

socket可以看成是用户进程与内核网络协议栈的编程接口。

socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。

IPv4套接口地址结构通常也称为“网际套接字地址结构”,它以“sockaddr_in”命名,定义在头文件<netinet/in.h>中

网络字节序

X86平台一般为小端字节序,网络一般为大端.我们发送数据的时候,一般要将发送的数据转换为网络字节序(大端),在接收的时候又要转换回来.

字节序转换函数

uint32_t htonl(uint32_t hostlong);

uint16_t htons(uint16_t hostshort);

uint32_t ntohl(uint32_t netlong);

uint16_t ntohs(uint16_t netshort);

说明:在上述的函数中,h代表host;n代表network s代表short;l代表long

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

地址转换函数

#include <netinet/in.h>

#include <arpa/inet.h>

int inet_aton(const char *cp, struct in_addr *inp);

in_addr_t inet_addr(const char *cp);

char *inet_ntoa(struct in_addr in);

linux第4天 shell socket的更多相关文章

  1. Linux内核 TCP/IP、Socket参数调优

    Linux内核 TCP/IP.Socket参数调优 2014-06-06  Harrison....   阅 9611  转 165 转藏到我的图书馆   微信分享:   Doc1: /proc/sy ...

  2. Linux安全基础:shell及一些基础命令

    1.什么是shell?Shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash. 2.shell的分类(1)bash bash shell 是 Bourn ...

  3. 利用ganymed-ssh2远程执行其它Linux机器上的shell命令

    实际应用中,有时候需要从web管理界面上,远程去启动其它linux主机上的程序,利用ssh协议可以方便的满足这一需求.事实上hadoop架构中,从nn上启动dn时,就是利用了免密码ssh登录.gany ...

  4. [20150925]Linux之文件系统与SHELL

    Linux之文件系统与SHELL 文件系统介绍 ext2/ext3/ext4 Ext2是GNU/Linux系统中标准的文件系统.这是Linux中使用最多的一种文件系统,它是专门为Linux设计的,拥有 ...

  5. Linux 网络编程二(Socket创建)

    TCP通信 一个程序使用套接字需要执行4个步骤. --分配套接口和初始化 --连接 --发送或接收数据 --关闭套接字 涉及到的调用包括socket.bind.listen.connect(阻塞线程) ...

  6. linux查看有哪些shell可用

    1.命令cat /etc/shells [tansheng@localhost ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/das ...

  7. linux系统ecshop拿shell方法

    Title:linux系统ecshop拿shell方法  --2011-06-08 13:23 最近弄一个站,对ECSHOP拿shell不了解,导致走了很多的弯路. nginx/0.8.54的服务器, ...

  8. 在Linux下如何用Shell脚本读写XML?现有一个config.xml(转)

    在Linux下如何用Shell脚本读写XML?现有一个config.xml <?xml version="1.0" encoding="UTF-8"?&g ...

  9. TCP/IP协议栈源码图解分析系列10:linux内核协议栈中对于socket相关API的实现

    题记:本系列文章的目的是抛开书本从Linux内核源代码的角度详细分析TCP/IP协议栈内核相关技术 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswang@gmail.com linu ...

随机推荐

  1. 【转】Eclipse Class Decompiler——Java反编译插件

    闲暇之余,写了一个Eclipse下的Java反编译插件:Eclipse Class Decompiler,整合了目前最好的2个Java反编译工具Jad和JD-Core,并且和Eclipse Class ...

  2. 文件管理php代码操作文件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. C语言PRO2

    2-5 #include<stdio.h>#include<math.h>int main(){ int money , year; double rate , sum; pr ...

  4. Java高级之虚拟机垃圾回收机制

    博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 区别于C语言手动回收,Java自动执行垃圾回收,但为了执行高效 ...

  5. Introduction to Project Management(II)

    Introduction The purpose of this paper is to gain an understanding of project management and to give ...

  6. Selenium2学习-016-WebUI自动化实战实例-014-Selenium 窗口选择

    在日常的 WebUI 自动化测试脚本编写过程中,经常需要打开新的页面,或者在多个打开的页面之间进行切换,以对页面元素进行相应的操作,以模拟用户的行为,实现 UI 的自动化测试.在过往的时间中,经常有初 ...

  7. Excl 的一些用法--如何给很多列赋同一个值

    1.用鼠标选定要负责的列(多列) 2.在处填写值 3.Ctrl+Enter

  8. Condition

    1.Condition是个接口,其实现类是同步器里面的一个内部静态类:ConditionObject. 2.Lock是个接口,该接口里面有个方法是:Condition newCondition(); ...

  9. Altium designer 小技巧

    平常收集的小技巧都放在这里备忘. 1.连线完成后怎么检查飞线没连上? Ctrl+D,选择所有元素隐藏,剩下的就是没有连上的飞线了.

  10. 源码搭建SVN+Apache+Setpass

    1.安装配置apache2.2.18 http://download.csdn.net/download/YH555/3299526tar xf httpd-2.2.18.tar.bz2cd http ...