shell编程——基本语法

一、判断语句
1、if……then……if语句

#!/bin/bash
read -p "请输入y/n:" ym
if [ "$ym" == "Y" -o "$ym" == "y" ]; then
        echo "你输入的是Y"
        exit 0
elif [ "$ym" == "N" -o "$ym" == "n" ]; then
        echo "你输入的是N"
        exit 0
else
        echo "你输入的不是N或者Y"
fi

note:if附近很多空格,全部用空格隔开

2、case……esac语句

#!/bin/bash
read -p "请输入(Y/n):" fei
case $fei in
y)
        echo '您输入的是y'
        ;;
Y)
        echo '您输入的是Y'
        ;;
n)
        echo '您输入的是n'
        ;;
N)
        echo '您输入的是N'
        ;;
*)
        echo '您输入的不符合要求'
        ;;
esac

二、循环语句
1、while语句

#!/bin/bash
s=0
i=0
while [ "$i" != 100 ]
do
        i=$(($i+1))
        s=$(($s+$i))
done
echo "the result of '1+2+……+100' is $s"

2、until语句

#!/bin/bash
until [ "$yn" == "yes" -o "$yn" == "YES" ]
do
        read -p "Please input yes/YES to stop this program: " yn
done
echo "OK! you input the correct answer."

note:当until满足是进入循环,和while相反

3、for…do…done语句

#举例一
#!/bin/bash
for var in xi fen fei
do
        echo "this is ${var} "
done

#举例二
#!/bin/bash
filelist=$(ls -la)
for var in v$filelist
do
        echo "${var}"
done

#举例三
#!/bin/bash
s=0
for i in $(seq 1 100)
do
        s=$(($s+$i))
done
echo "the result of '1+2+……+100' is $s"

#举例四
#!/bin/bash
echo "请输入从1开始累加到N的值:"
read nu
s=0
for((i=1;i<=$nu;i=i+1))
do
        s=$(($s+$i))
done
echo "1+……+$nu is ==>$s"

安装rlwrap(让sqlplus使用如同在win dos下)

在linux中,使用sqlplus不能使用上线键,有些情况下连backspace键都不能使用,给通过sqlplus对oracle的管理带来了很多不便,使用rlwrap可以解决这个问题,给你一个和win下dos一样的操作感觉
官网:http://utopia.knoware.nl/~hlub/uck/rlwrap/

1、在Ubuntu中安装rlwrap
1)sudo apt-get install rlwrap
2)在/etc/profile文件中添加
alias sqlplus=’rlwrap sqlplus’
alias rman=’rlwrap rman’

2、在centos中安装rlwrap
1)wget http://utopia.knoware.nl/~hlub/uck/rlwrap/rlwrap-0.37.tar.gz
2)tar -xzvf rlwrap-0.37.tar.gz
3)./configure
4)make
5)make install
6)在/home/oracle/.bash_profile中添加
alias sqlplus=’rlwrap sqlplus’
alias rman=’rlwrap rman’

Ubuntu网络管理

一、网络配置
1、配置静态ip地址
1)修改/etc/network/interfaces文件(eth0)
iface eth1 inet static
address 192.168.0.101
netmask 255.255.255.0
network 192.168.0.0
broadcask 192.168.0.255
gateway 192.168.0.2
2)重启网卡
/etc/init.d/networking restart 或者
$ sudo ifdown eth0
$ sudo ifup eth0
3)命令设置
sudo ifconfig eth0 192.168.0.190 netmask 255.255.255.0 (ip地址)
sudo route add default gw 192.168.0.1 (网关)
2、动态获取ip地址
sudo dhclient eth0
3、DNS信息
修改/etc/resolv.conf 文件
nameserver DNS的地址1

二、ssh配置
1、安装ssh
sudo apt-get install ssh
2、重启/开启ssh
sudo /etc/init.d/ssh start/restart
3、查看开启情况
netstat -tlp

linux下配置php+mysql

准备工作:更新源设置为中国的源,下载速度会快点,非必须项

cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
wget http://centos.ustc.edu.cn/CentOS-Base.repo.5
 mv CentOS-Base.repo.5 CentOS-Base.repo
--更新系统
yum -y update

1、安装Apahce, PHP, Mysql, 以及php连接mysql库组件
yum -y install httpd php mysql mysql-server php-mysq

2、安装mysql扩展
yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql

3、安装php的扩展
yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc

4、安装apache扩展
yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql

如果一次性安装请使用
yum -y install httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-mcrypt php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc mysql-connector-odbc mysql-devel libdbi-dbd-mysql

5、开启相关服务
/sbin/service mysqld start
/sbin/service httpd start
然后运行mysql,按照提示完成mysql初始化(后期的mysql配置也要考虑)

6、设置httpd和mysqld为开机启动状态
/sbin/chkconfig httpd on [设置apache为自启动]
/sbin/chkconfig –-add mysqld [mysql服务]–先使用chkconfig –list查看在列表中不,如果不在运行chkconfig –add 添加
/sbin/chkconfig mysqld on [mysqld服务]

7、安装ZendOptimizer3.3.9
到官网下载linux版的ZendOptimizer,然后使用tar -xzvf zendoptimizer的文件名
然后拷贝在其目录data下与php对应版本的ZendOptimizer.so到/usr/lib/httpd/modules/中
然后在/etc/php.ini的文件的末尾加上
[zend]
zend_optimizer.optimization_level=15
zend_extension=/usr/lib/httpd/modules/ZendOptimizer.so
然后执行service httpd restart,配置完成

linux压缩与解压

tar [主选项+辅选项] 文件或者目录 (主选项必须,辅选项可选)
主选项:
c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
t 列出档案文件的内容,查看已经备份了哪些文件。
u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
x 从档案文件中释放文件。
辅助选项:
b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。
f 使用档案文件或设备,这个选项通常是必选的。
k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。
m 在还原文件时,把所有文件的修改时间设定为现在。
M 创建多卷的档案文件,以便在几个磁盘中存放。
v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
w 每一步都要求确认。
z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。
例如:
$ tar cvf usr.tar /home –把home目录中的所有文件打包成usr.tar文件(包括文件夹一起被压缩)
$ tar czvf usr.tar.gz /home –把home目录中的所有文件压缩成usr.tar.gz文件
$ tar tvf usr.tar | more –查看usr.tar 中的文件信息
$ tar xvf usr.tar –解压usr.tar文件到当前文件夹中
tar xzvf ../feifei.tar.gz –解压feifei.tar.gz到当前文件夹

gzip [选项] 压缩(解压缩)的文件名
各选项的含义:
-c 将输出写到标准输出上,并保留原有文件。
-d 将压缩文件解压。
-l 对每个压缩文件,显示下列字段:
压缩文件的大小
未压缩文件的大小
压缩比
未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试,检查压缩文件是否完整。
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
-num 用指定的数字num调整压缩的速度,-1或–fast表示最快压缩方法(低压缩比),-9或–best表示最慢压缩方法(高压缩比)。系统缺省值为6。
例如:
$ gzip * 压缩该目录下的每个文件(文件被替换)
$ gzip -dv * 每个压缩被文件解压,并列出详细的信息。 (文件被替换)
$ gzip -l * 详细显示该目录每个压缩的文件的信息,并不解压。
$ gzip usr.tar 压缩tar命令打包的.tar文件生成.tar.gz

unzip [选项] 压缩文件名.zip
各选项的含义分别为:
-x 文件列表 解压缩文件,但不包括指定的file文件。
-v 查看压缩文件目录,但不解压。
-t 测试文件有无损坏,但不解压。
-d 目录 把压缩文件解到指定目录下。
-z 只显示压缩文件的注解。
-n 不覆盖已经存在的文件。
-o 覆盖已存在的文件且不要求用户确认。
-j 不重建文档的目录结构,把所有文件解压到同一目录下。
例如:
$ unzip text.zip 将压缩文件text.zip在当前目录下解压缩
$ unzip -n text.zip -d /tmp 将text.zip解压到/tmp下
$ unzip -v text.zip 查看压缩文件目录,但不解压。

zip [参数] [打包后的文件名] [打包的目录路径]
-a 将文件转成ASCII模式
-F 尝试修复损坏的压缩文件
-h 显示帮助界面
-m 将文件压缩之后,删除源文件
-n 特定字符串 不压缩具有特定字尾字符串的文件
-o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
-q 安静模式,在压缩的时候不显示指令的执行过程
-r 将指定的目录下的所有子目录以及文件一起处理
-S 包含系统文件和隐含文件(S是大写)
-t 日期 把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy
例如:
zip –q –r html.zip /home/Blinux/html
将/home/Blinux/html/ 这个目录下所有文件和文件夹打包为当前目录下的html.zip