linux第4天 shell socket
$[ ] 表示形式告诉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的更多相关文章
- Linux内核 TCP/IP、Socket参数调优
Linux内核 TCP/IP.Socket参数调优 2014-06-06 Harrison.... 阅 9611 转 165 转藏到我的图书馆 微信分享: Doc1: /proc/sy ...
- Linux安全基础:shell及一些基础命令
1.什么是shell?Shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash. 2.shell的分类(1)bash bash shell 是 Bourn ...
- 利用ganymed-ssh2远程执行其它Linux机器上的shell命令
实际应用中,有时候需要从web管理界面上,远程去启动其它linux主机上的程序,利用ssh协议可以方便的满足这一需求.事实上hadoop架构中,从nn上启动dn时,就是利用了免密码ssh登录.gany ...
- [20150925]Linux之文件系统与SHELL
Linux之文件系统与SHELL 文件系统介绍 ext2/ext3/ext4 Ext2是GNU/Linux系统中标准的文件系统.这是Linux中使用最多的一种文件系统,它是专门为Linux设计的,拥有 ...
- Linux 网络编程二(Socket创建)
TCP通信 一个程序使用套接字需要执行4个步骤. --分配套接口和初始化 --连接 --发送或接收数据 --关闭套接字 涉及到的调用包括socket.bind.listen.connect(阻塞线程) ...
- linux查看有哪些shell可用
1.命令cat /etc/shells [tansheng@localhost ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/das ...
- linux系统ecshop拿shell方法
Title:linux系统ecshop拿shell方法 --2011-06-08 13:23 最近弄一个站,对ECSHOP拿shell不了解,导致走了很多的弯路. nginx/0.8.54的服务器, ...
- 在Linux下如何用Shell脚本读写XML?现有一个config.xml(转)
在Linux下如何用Shell脚本读写XML?现有一个config.xml <?xml version="1.0" encoding="UTF-8"?&g ...
- TCP/IP协议栈源码图解分析系列10:linux内核协议栈中对于socket相关API的实现
题记:本系列文章的目的是抛开书本从Linux内核源代码的角度详细分析TCP/IP协议栈内核相关技术 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswang@gmail.com linu ...
随机推荐
- JavaScript中的prototype
关于prototype: 理解prototype不应把它和继承混淆.A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍.A能使用B的方法和属性.这里强调的是克隆而不是继承 ...
- pro5
1.本次课学到的知识点 (1)循环结构的概念 在我们需要重复进行某个步骤是就需要运用到循环结构. (2)三种循环语句 for,while,do-while是三种常用的循环语句,其中while的适用范围 ...
- WPF自定义RoutedEvent事件示例代码
************************* 引用网友,便于查找所用..... 创建自定义路由事件和应用分为6个步骤: (1)自定义路由事件参数对象 (2)声明并注册路由事件 (3)为路由事件添 ...
- C/C++ 判断主机字节存储序列
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0oAAADFCAIAAADltpUqAAAgAElEQVR4nOyd65XyvA6FqYASKIEWqI
- css背景图片定位练习(二): background-position的百分比
background-position:x y; 百分比定位并不能直观的看出来,需要通过计算. background-position百分比计算公式: (容器宽度—背景图片的宽度)*x%=xpx(容器 ...
- Windows-005-显示隐藏文件
此文主要讲述如何设置 Win7 系统显示隐藏的文件.文件夹和驱动器,敬请亲们参阅.若有不足之处,敬请大神指正,不胜感激!详情如下: Win7 系统安装完成后,默认是不显示隐藏的文件.文件夹和驱动器的( ...
- Sql server与Excel的数据互通导入导出
现在,我先从Sql server数据表导出到Excel中,再从Excel数据表导出到Sql server中: 一.Sql server数据表导出到Excel中: 1.新建一个Excel,选择“数据”菜 ...
- T450的Fn lock
新到手一台T450,有一点让我比较恼火,就是F1~F12不能直接按必须先按Fn. 使用一阵突然发现,按住Fn+Esc能锁定/解锁Fn,锁定后F1~F12就可以直接按了. 设计者想得还是比较周到的. 2 ...
- 微信小程序:开发之前要知道的三件事
前言 微信之父张小龙在年初的那次演讲中曾表示:"我自己是很多年的程序员,我觉得我们应该为开发的团队做一些事情".几个月后,微信正式推出微信应用号(即微信小程序),在互联网中掀起了又 ...
- web storage: sessionStorage 和 localStorage
// sessionStorage.setItem("message",str);function saveStorage(id){ var target = document.g ...