shell脚本中的一些总结



用awk将两个文件合并。
awk '{if (NR==FNR) a[$1]=$2};{if (NR>FNR) print $0,a[$1]}' 1.txt 2.txt
NR表示行号,而 FNR也表示行号,其中当只有一个文件时,NR与FNR表示的意思是一样的,
但是当有两个文件的时候,NR仍旧表示行号,但是,FNR在读取第二个文件的时候行号从1
开始计算,并不是在第二个的基础上继续累加。
除去一个文件中重复的行,其实有很多方法,但是就目前开来运用awk命令最简洁。
awk '!seen[$0]++' file   里面自带有循环。。。
关于mkpasswd随机创建密码
-l 密码所创建的长度
-d 密码中包涵多少个数字
-s 密码中特殊字符的个数
-C 密码中至少含有多少个大写 字母
-c  密码中至少含有多少个小写字母
关于seq命令
-w 表示位宽
例如
seq -w 0 10
00
01
...10
-f 表示不足多少位补x通常(%xg)(如果为%g则默认为补空格)
例如
seq -f "%03g" 0 9(不足3位就补0,)
000
001
009
2016/2/5
关于expect脚本知识
首先看是否安装了expect包
若没有,则yum install -y expect
编写expect脚本跟shell大同小异
首先创建一个文件最好以.exp结尾,当然以其他的也行,只不过这样方便辨别
首行依旧要写所运行的环境
#!/usr/bin/expect
定义变量用 set a  变量值
有串行结构和并行结构
串行:从上到下依次执行
例如
spawn 所要执行的命令
expect  "匹配项"
send  "要发送的值\r(enter)"
expect  "匹配项"
send  "要发送的值\r(enter)"
send "exit\r"(退出脚本环境)
expext eof (结束expect脚本)
并行:同时执行
spawn 所要执行的命令
expect {

 "匹配项" { send "要发送的值\r(enter)" }
 "匹配项"  { send "要发送的值\r(enter)" }
//
把shell里面的变量传给expect脚本执行
如下是expect 里面的形参设置
set b [lindex $argv 0] ;;第一个参数
set a [lindex $argv 1] ;; 第二个参数
set . ..................第N个参数
在shell里面调用格式
如下
#!/bin/bash
a=2
b=3
./8.exp $a $b
2016/2/7
偶然的机会让我知道了expect 脚本中foreach(相当于FOR循环的作用)的用法
#!/usr/bin/expect -f

 foreach ip {
 192.168.0.1
 192.168.1.1
 192.168.1.2
 } {           //值得让人注意的是这两个大括号必须在一行,不然会出现错误
               //wrong # args: should be "foreach varList list ?varList list ...? command"
         puts "$ip"
 }
 exit

还有就是另外一种写法
set i { 1 2 3 4}
for x $i
{
puts "$x"
}
安装mysql-apache-最后php
因为php依赖前面两个
再者一定要注意安装mysql时 /etc/init.d/mysqld 中basedir的位置
2016/2/14
安装PHP
www.php.net,下载了一个源码包
但是仅仅是一个mirror文件,起初以为是镜像文件,就去用mount -o loop 去挂载
结果发现不行,然后用file命令去查了一下这个文件的文件类型,发现是一个bzip2的压缩包
然后用bunzip2 mirror.out 把压缩文件直接输出到这个标准文件.out 中然后用tar -xvf
直接解压出来了。。。。
          更新yum源
yum clean all     #清理yum缓存
yum makecache  #将服务器上的软件包信息缓存到本地,以提高搜索安装软件的速度
2016/2/16
虚拟主机目的:用指定域名访问代替ip访问,把一个服务器分割成多个部分,只不过每个
部分的域名不同,对应的端口号不同,但是ip地址可以相同,也可以不相同
需要在自己电脑上设置hosts 文件设置对应的域名 和虚拟服务器的IP
问题1
出现返回代码403显示是不允许进入该网页 或者
You don't have permission to access / on this server.错误,让我情以何堪啊,居然说我此台服务器上无权限,ok解决办法如下:

找到:apache文件,进入conf文件,打开httpd.conf 文件,做如下修改:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Satisfy all
</Directory>

修改成

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
#    Deny from all
    Allow from all

#允许所有访问
    Satisfy all
</Directory>
问题2
从ssh上传的zip包在Linux中用unzip解压出错:error [Discuz_X3.2_SC_GBK.zip]:
 missing 489 bytes in zipfile
  (attempting to process anyway)

原因及解决办法:报错原因是unzip 命令 需要解压的文件编码类型必须是二进制类型,
我用的是SSH Secure File Transfer Client 传输类型选择的是ASCII编码
,后改成二进制编码传输就ok了!
关于虚拟主机应用后台地址隐藏的模块
在虚拟主机配置文件中加入

<filesmatch admin.php>//这是对admin.php登陆网页的验证--文件限制。
可以改成<Dirctory /date/123>
         </Dirctory>

AllowOverride AuthConfig
AuthName "admin 123"//提示语
AuthType Basic
AuthUserFile /data/.htpasswd//密码文件,不用创建
require valid-user
</filesmatch>
然后利用 htpasswd -c /data/.htpasswd 创建的用户名
保存
apachectl -t
apachectl graceful 一下。。动态加载,比restart更好。
2016/2/17
配置域名重定向状态码为301
在/usr/local/apache2/conf/extra/httpd-vhosts.conf
中加入<IfModule mod_rewrite.c>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值