bash编程学习-基础(4)

8月 25, 2008 – 10:51 下午

1.if学习
语法:if TEST-COMMANDS;then CONSEQUENT-COMMANDS;fi

test-commands表达式:

Primary 意义
[ -a FILE ] 如果 FILE 存在则为真。
[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。
[ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。
[ -d FILE ] 如果 FILE 存在且是一个目录则为真。
[ -e FILE ] 如果 FILE 存在则为真。
[ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。
[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。
[ -h FILE ] 如果 FILE 存在且是一个符号连接则为真。
[ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。
[ -p FILE ] 如果 FILE 存在且是一个名字管道(F如果O)则为真。
[ -r FILE ] 如果 FILE 存在且是可读的则为真。
[ -s FILE ] 如果 FILE 存在且大小不为0则为真。
[ -t FD ] 如果文件描述符 FD 打开且指向一个终端则为真。
[ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。
[ -w FILE ] 如果 FILE 如果 FILE 存在且是可写的则为真。
[ -x FILE ] 如果 FILE 存在且是可执行的则为真。
[ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。
[ -G FILE ] 如果 FILE 存在且属有效用户组则为真。
[ -L FILE ] 如果 FILE 存在且是一个符号连接则为真。
[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。
[ -S FILE ] 如果 FILE 存在且是一个套接字则为真。
[ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。
[ FILE1 -ot FILE2 ] 如果 FILE1FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。
[ FILE1 -ef FILE2 ] 如果 FILE1FILE2 指向相同的设备和节点号则为真。
[ -o OPTIONNAME ] 如果 shell选项 “OPTIONNAME” 开启则为真。
[ -z STRING ] STRING” 的长度为零则为真。
[ -n STRING ] or [ STRING ] STRING” 的长度为非零 non-zero则为真。
[ STRING1 == STRING2 ] 如果2个字符串相同。 “=” may be used instead of “==” for strict POSIX compliance则为真。
[ STRING1 != STRING2 ] 如果字符串不相等则为真。
[ STRING1 < STRING2 ] 如果 “STRING1” sorts before “STRING2” lexicographically in the current locale则为真。
[ STRING1 > STRING2 ] 如果 “STRING1” sorts after “STRING2” lexicographically in the current locale则为真。
[ ARG1 OP ARG2 ] OP” is one of -eq, -ne, -lt, -le, -gt or -ge. These arithmetic binary operators return true if “ARG1” is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to “ARG2”, respectively. “ARG1” and “ARG2” are integers.

组合表达式:

操作 效果
[ ! EXPR ] 如果 EXPR 是false则为真。
[ ( EXPR ) ] 返回 EXPR的值。这样可以用来忽略正常的操作符优先级。
[ EXPR1 -a EXPR2 ] 如果 EXPR1 and EXPR2 全真则为真。
[ EXPR1 -o EXPR2 ] 如果 EXPR1 或者 EXPR2 为真则为真。

查看详细猛击这里 »

bash编程学习-基础(3)

8月 25, 2008 – 8:08 上午

1.算术操作符

操作符 意义
VAR++ and VAR– 变量自增和变量自减
++VAR and –VAR 变量前置加和前置减
- and + 一元减和加
! and ~ 逻辑和按位取反
** 求幂
*, / and % 乘,除,求余
+ and - 加,减
<< and >> 左移和右移
<=, >=, < and > 比较操作符
== and != 相等和不相等
& 位与
^ 位异或
| 位或
&& 逻辑与
|| 逻辑或
expr ? expr : expr 条件赋值
=, *=, /=, %=, +=, -=, <<=, >>=, &=, ^= and |= 赋值
, 表达式间的分隔符

2.建立和移除别名
alias
unalias,
注意:别名不能被子进程继承

3.用set来设置选项
显示所有的选项: set -o,注-号开启选项,+关闭选项
例如: set -o noclobber: 文件不能被overwrite

4.touch用来建立一个空文件的好方法,touch主要用于改变文件改变的时间戳

5.grep: 以行为单位搜索那些包含给出模板列表的输入文件。当在一行中找到匹配,默认把行拷到标准输出
grep中的正则: \<表地单词的开始, \>表示单词的结束
grep -w匹配单词

6.字符族:
使用语法:[:CLASS:]
“alnum”,”alpha”,”ascii”,“blank”,”cntrl”,”digit”,”graph”,”lower”,”print”,”punct”,”space”,”upper”,”word”,”xdigit”

7.awk (分析的是每一行的输入)
FS:域分割符代表内建的变量
oRS:行分割符
oFS:输出分割符
=:赋值
printf,print:输出
BEGIN: 开始的定义以及输出处理
END: 结束时的处理.

bash编程学习-基础(2)

8月 23, 2008 – 11:21 下午

1.注意:
当运行脚本文件时,系统会建立一个子shell来运行文件中命令。函数和别名等只有子shell使用。当那个shell退出,父shell重新得到控制的时候,所有的东西都被清空,脚本对shell状态所作的改变耶全部清除。如果不想建在子shell中运行脚本可以直接
source script_name.sh
这里脚本不需要可执行权限。命令在当前shell力执行,所以任何对环境的改变,将在脚本结束时同样起作用
2.脚本选择:
第一行决定了启动的shell,第一行的开始2个字符应该是#!,然后紧跟解释后面命令的shell的路径。空白行也被认为是一行,所以不要让你的脚本以空白行开始。

#!/bin/bash
3.注释:
以#开头
在一个良好的脚本中,第二行经常注明要完成的任务。然后为了明确每一大块命令将被加上注释。
4.脚本调试
调试参数:

短符号 长符号 结果
set -f set -o noglob 禁止特殊字符用于文件名扩展。
set -v set -o verbose 打印读入shell的输入行。
set -x set -o xtrace 执行命令之前打印命令。

可以在文件里面直接定义#!/bin/bash -xv,或者在执行时候指定.bash -xv scripte_name.sh

查看详细猛击这里 »

bash编程学习-简单基础(1)

8月 22, 2008 – 7:40 上午

用linux环境也有快一年多的历史了,对于shell只是用到时候查一下文档,并没有系统化。接下来想抽时间系统的学习一下。先从简单开始吧。
1.查看系统中所有的shell

cat /etc/shells
2.查看用户的默认shell
cat /etc/passwd
3.切换shell
直接输入shell名就可以。
例如:
mia:~> tcsh
[mia@post21 ~]$
4.当用户登录时机器自动运行的shell
4.1/etc/profile

4.2~/.bash_profile,~/.bash_login or~/.profile: 读取第一个存在的可读取的文件
4.3 ~/.bash_logout 登出的时候。
错误消息将会显示如果配置文件存在但是不能读取。一个文件不存在,Bash将搜索下一个。5,非登录应用一个非登陆shell就是不需要进行系统的认证。比如,通过一个图标打开一个终端,或者一个菜单项目,那样就是非登陆shell
读取的文件: ~/.bashrc
此文件通常指向 ~/.bash_profile:if [ -f ~/.bashrc]; then . ~/.bashrc; fi
7.远程调用 以 rshd 调用时读取的文件:~/.bashrc
8.默认情况下历史命令和历史扩展式开启的。历史在shell退出时都保存在 HISTFILE 指向的文件中。默认情况下,HISTFILE 指向 ~/.bash_history
9.wc统计文件的字数,与行数。 查看详细猛击这里 »

vim初始化设置

8月 20, 2008 – 11:44 下午

为了更好的在VIM下进行工作,需要手动设置一下配置文件.vimrc
.vimrc可以存放在当前用户的根目录下面.~/

  1. "显示行号
  2. set number
  3. "检测文件类型
  4. filetype on
  5. "记录历史的行数
  6. set history=1000
  7. "语法高亮
  8. syntax on
  9. "设置自动对齐
  10. set autoindent
  11. "设置智能对齐
  12. set smartindent
  13. "设置TAB键为4个空格
  14. set tabstop=4
  15. "显示匹配模式
  16. set showmatch
  17. "去掉编辑错误时的声音
  18. set vb t_vb=
  19. "在终端中使用mouse
  20. set mouse=a
  21. "查找时忽略大小写
  22. set ignorecase
  23. "当执行:make或者:next里保存文件内容
  24. set autowrite

简单Basic验证

8月 18, 2008 – 8:25 上午
  1. if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
  2.            $_SERVER['PHP_AUTH_USER'] != 'ADMIN_USERNAME' ||$_SERVER['PHP_AUTH_PW'] != 'ADMIN_PASSWORD') {
  3. Header("WWW-Authenticate: Basic realm=\"Login\"");
  4. Header("HTTP/1.0 401 Unauthorized");
  5.  
  6. echo <<<EOB
  7. <html><body>
  8. <h1>Rejected!</h1>
  9. <big>Wrong Username or Password!</big>
  10. </body></html>
  11. EOB;
  12. exit;
  13. }