学习shell编程 – 6. 一些有用的命令

#!/bin/sh #eval: 动态执行命令 command=$1 eval $command #把shell脚本的第一个参数作为命令来执行,如"shell.sh ls"将执行"ls" #用":"代表空操作 if [ 1 -eq 1 ] ; then : #啥也不干 else echo not true fi #用type, which打印一个命令的完整路径 type java which java #sleep sleep 1 #睡1秒 echo woken #用expr执行整数运算 x=`expr 8 / 4` #"/"前后必须有空格;后引号则告诉系统: 将expr 执行的结果赋值给x echo "x=$x"

学习shell编程 – 5. sed和awk

#sed #在names.txt中找到所有包含 "chen"的行,并打印出来. 选项"-n"的意思是不打印没有匹配的行 $ sed -n ‘/chen/p’ names.txt #读取names.txt中的所有行,去掉其中包含’chen’的行,再保存在新文件中 $ sed ‘/chen/d’ names.txt > names-no-chen.txt #若不指定正则表达式,则对每一行都执行操作 $ sed -n -e ‘p’ names.txt #将打印每一行 #可以在管道中使用sed $ less names.txt|sed ‘/chen/d’ ################################################ #awk #打印花名册中的第1列和第3列 $ awk ‘{print $1, $3 ; }’ names.txt #打印花名册中含有“female"的行 $ awk ‘/female/{print ; }’ names.txt #男的干活,女的看电视 $ awk ‘$2 ~ /male/ {print $1 …

学习shell编程 – 5. sed和awk Read More »

学习shell编程 – 4. 脚本参数、输入输出

#!/bin/sh #如果在外面调用 hello.sh a b echo $0 #显示 hello.sh echo $1 #显示 a echo $2 #显示 b echo $# #显示 2,即2个参数 #用while + getopts处理所有选项 while getopts c:p OPTION ; do case "$OPTION" in c) echo "c is input" ;; p) echo "p is input" ;; \?) echo "Please specify -c or -p" ; exit 1 ;; esac …

学习shell编程 – 4. 脚本参数、输入输出 Read More »

学习shell编程 – 3. 条件,循环语句和布尔操作

#!/bin/sh #if/else语句 i=1 if [ $i = 1 ] ; then #注意里面的分号 echo how elif [ $i = 2 ] ; then echo are else echo you fi #别忘了这个 #if/eles语句的单行写法,注意分号 if [ $i = 1 ]; then echo how; else echo are ; fi #bool值判断 ##用 "test xxx" if test "ab" = "ab"; then echo …

学习shell编程 – 3. 条件,循环语句和布尔操作 Read More »

按领域来分团队比按照功能来分团队更好

今天开会受启发想到了一点:互联网按领域来分团队比按照网站功能来分团队会更利于各个软件artifact的长期健康。 比如{订单小组,权限小组}这种分法比{前台系统,后台系统}这种分法更好。后一种分法中,大家都可以改订单模块,订单模块自己没有专门的责任人,可能会导致订单模块被改的乱七八糟,也没什么长期规划。

学习shell编程 – 2.变量,数组和quoting

# !/bin/bash AGE=50 #定义变量,赋值的前后一定不要有空格 AGE=5 #重新赋值 echo $AGE #访问变量 unset AGE #删除变量定义 student[0]=jack #定义数组 student[1]=john echo ${student[0]} #访问数组的第0个元素 echo ${student[*]} #打印数组中所有元素 teacher=(gates jobs) #另一种定义数组的方法 echo ${teacher[*]} #字符的quoting,像html escaping一样,使特殊字符失去特有的意义 echo Hello \; world #使分号失去连接两个命名的作用,本行将输出"Hello ; world" echo ‘Input your <name> and pay $5’ #使单引号里括起来的字符串里的所有特殊字符都失去特殊意义 price=5; echo "Input your <name> and pay $price dollars" #双引号也可实现quoting,但会保留$等符号的特殊意义

一些shell技巧

a. 显示隐藏文件ls -a b. 不显示目录“temp”里面的文件,只显示temp目录文身: ls -d temp c. cp的注意事项    i. cp hello.txt dir1 #意为把hello.txt复制到dir1/下    ii.cp hello.txt hello2.txt #意思是把hello.txt复制一份取命名为hello2.txt    iii. cp -r dir1 dir2           #如果dir2存在,将把dir1复制到dir2/下,产生dir2/dir1目录           #如果dir2不存,将把dir1复制成dir2 d. "chmod +x hello.sh"这一类命令的完整格式是      chmod (who)(action)(permissions) hello.sh    比如,      chmod  a+x hello.sh #指为所有人增加执行权限      chmod  o-w hello.sh #取消其它组成员的写权限      chmod  g=x hello.sh …

一些shell技巧 Read More »