学习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 »

linux PATH 中的几个目录

Linux的PATH一般会包含的目录:    1. /bin: 包含用于启动系统的程序    2. /usr/bin: 给用户用的标准程序, 如gcc, vim等    3. /usr/local/bin: 给用户用的,installation-specific程序    4. /sbin & usr/sbin,root用户专用    5. /opt: OS可选组件和第三方程序   给所有用户用的第三方程序最好放在/usr/local下或/opt下。考虑OS升级前备份文件的场景     1. 如果第三方程序在/bin或/usr/bin下,就会跟OS相关程序混在一起;备份第三方程序时就要先把它们从/bin或/usr/bin中拣出来     2. 如果放/usr/local下,备分第三方程序时直接备份/usr/local即可       给单个用户的第三方程序,直接放到用户目录下即可