ll -h
[code="java"]
[ -f "$file" ] 判断$file是否是一个文件
[ $a -lt 3 ] 判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于
[ -x "$file" ] 判断$file是否存在且有可执行权限,同样-r测试文件可读性
[ -n "$a" ] 判断变量$a是否有值,测试空串用-z
[ "$a" = "$b" ] 判断$a和$b的取值是否相等
[ cond1 -a cond2 ] 判断cond1和cond2是否同时成立,-o表示cond1和cond2有一成立
要注意条件测试部分中的空格。在方括号的两侧都有空格,在-f、-lt、=等符号两侧同样也有空格。
如果没有这些空格,Shell解释脚本的时候就会出错。
脚本中的引号
``---反引号 执行系统命令
''---单引号,字符串,引号内的所有变量和特殊字符都屏蔽
如:echo 'hello $res !!!'
打印hello $res !!!
""---双引号,字符串,可以包含所有变量和特殊字符串
如:echo "hello $res !!!"
打印hello 5 !!!
echo "Hi, ${res}s"
Hi,5s
二.
比较操作
-eq 数值相等
-ne 数值不相等
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
if [ $? -ge 2 ];then
return -1
fi
三.文件判断
-b 文件存在并为块文件
-c 文件存在并为字符文件
-d 文件存在且为目录
-e 路径指定的文件或目录存在
四.特定变量参数&位置变量参数
$0 当前脚本的文件名
$# 当前脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数,表示整个参数列
$$ 脚本运行的当前进程PID
$! 后台运行的最后一个进程的PID
$? 显示最后命令的退出状态。0表示没有错误,其他任何值均表
明有错误
例子:
#!/bin/sh
help()
{
cat << HELP
This is a generic command line parser demo.
USAGE EXAMPLE: cmdparser -l hello -f -- -somefile1 somefile2
HELP
exit 0
}
while [ -n "$1" ]; do
case $1 in
-h) help;shift 1;; # function help is called
-f) opt_f=1;shift 1;; # variable opt_f is set
-l) opt_l=$2;shift 2;; # -l takes an argument -> shift by 2
--) shift;break;; # end of options
-*) echo "error: no such option $1. -h for help";exit 1;;
*) break;;
esac
done
echo "opt_f is $opt_f"
echo "opt_l is $opt_l"
echo "first arg is $1"
echo "2nd arg is $2"
#echo "$0 $# $* $$ $! $?"
echo " where one is : $#"
echo "where second is:$*"
echo "where three is :$$"
echo "where foure is :$!"
echo "where fif is :$?"
五: read read命令接收标准输入(键盘)的输入,或其他文件描述符的输入
防火墙
查看配置
display current-configuration
ike pear 认证 加密
255.255.255.255
255.255.255.0
迁移方案
第一步:先迁移一台nginx,通过代理,代理到互联机房,通知部分客户切换新的ip
第二步:将lottery,数据库服务器整体搬迁
PSTN:泛指共公电话网,电话,移动电话等
ISDN:综合业务数字网(Integrated Services Digital Network,ISDN)
是一个数字电话网络国际标准,是一种典型的电路交换网络系统。
LNS(被用户最终得到访问的服务器资源)
LNS表示L2TP网络服务器(L2TP Network Server),
是PPP端系统上用于处理L2TP协议服务器端部分的设备。
它作为L2TP隧道的另一侧端点,是LAC的对端设备,是被LAC进行隧道传输的PPP会话的逻辑终止端点。
LAC(可以在上面配置本地认证或者外部认证)
LAC全称为L2TP访问集中器(L2TP Access Concentrator)。
LAC位于远程拨号用户和LNS设备之间,负责远程拨号用户和LNS设备彼此间的数据转发。
从LAC向LNS转发数据需要先利用L2TP协议在两个设备之间建立隧道,
LAC和远程拨号用户间仍使用PPP链路。
linux sed,awk
linux之sed用法
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行
替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
sed [-nefri] ‘command’ 输入文本
常用选项:
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。
但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。
常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
举例:(假设我们有一文件名为ab)
删除某行
# sed '1d' ab #删除第一行
# sed '$d' ab #删除最后一行
# sed '1,2d' ab #删除第一行到第二行
# sed '2,$d' ab #删除第二行到最后一行
显示某行
. # sed -n '1p' ab #显示第一行
# sed -n '$p' ab #显示最后一行
# sed -n '1,2p' ab #显示第一行到第二行
# sed -n '2,$p' ab #显示第二行到最后一行
使用模式进行查询
# sed -n '/ruby/p' ab #查询包括关键字ruby所在所有行
# sed -n '/\$/p' ab #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
增加一行或多行字符串
# cat ab
Hello!
ruby is me,welcome to my blog.
end
# sed '1a drink tea' ab #第一行后增加字符串"drink tea"
Hello!
drink tea
ruby is me,welcome to my blog.
end
# sed '1,3a drink tea' ab #第一行到第三行后增加字符串"drink tea"
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea
# sed '1a drink tea\nor coffee' ab #第一行后增加多行,使用换行符\n
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
end
代替一行或多行
# sed '1c Hi' ab #第一行代替为Hi
Hi
ruby is me,welcome to my blog.
end
# sed '1,2c Hi' ab #第一行到第二行代替为Hi
Hi
end
替换一行中的某部分
格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
# sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替换ruby为bird
# sed -n '/ruby/p' ab | sed 's/ruby//g' #删除ruby
插入
# sed -i '$a bye' ab #在文件ab中最后一行直接输入"bye"
# cat ab
Hello!
ruby is me,welcome to my blog.
end
bye
[/code]