魏长东

weichangdong

正在查看: shell 分类下的文章(第 1 页 / 共 22 篇)

casperjs的安装

好早之前了解了写casperjs,发现很强大.最近工作刚好又用到了.真的是平时的积攒,很有用处.

linux的安装方法.(win下也安装过,主要是下载文件,配置系统路径)

 

yum install gcc gcc-c++ make git openssl-devel freetype-devel fontconfig-devel 
git clone git://github.com/ariya/phantomjs.git 
cd phantomjs 
git checkout 1.9 
./build.sh 
phantomjs --version 

git clone git://github.com/n1k0/casperjs.git 
cd casperjs 
ln -sf `pwd`/bin/casperjs /usr/local/bin/casperjs 
casperjs --version 

比较全的shell操作时间

. 显示当前日期时间.

$ date 
Mon Jun 2 13:55:47 HKT 2014

2. 按照指定格式显示当前时间(date +format).

(1). 显示年月日.

$ date "+%Y-%m-%d" 
2014-06-02

$ date "+%F" 
2014-06-02

$ date "+%Y/%m/%d" 
2014/06/02

格式也可以不用引号,但是最好加引号(不然中间有空格的话还得转义!).

$ date +%Y/%m/%d 
2014/06/02

(2)显示年月日时分秒.

$ date "+%Y-%m-%d %H:%M:%S" 
2014-06-02 14:02:29

3. 相关格式列表(更多man date).

%Y  YYYY格式的年份(Year)

%m  mm格式的月份(),01-12

%d   dd格式的日期(day of month),01-31

%H   HH格式的小时数(),00-23

%M  MM格式的分钟数(),00-59

%S   SS格式的秒数(),00-59

%F   YYYY-mm-dd格式的完整日期(Full date),同%Y-%m-%d

%T   HH-MM-SS格式的时间(Time),同%H:%M:%S

%s   自1970年以来的秒数。C函数time(&t) 或者Java中 System.currentTimeMillis()/1000, new Date().getTime()/1000

%w   星期几,0-6,0表示星期天

%u   星期几,1-7,7表示星期天

以上格式可以任意组合,还可以包括非格式串,如 date "+今天是%Y-%d-%m,现在是$H:%M:%S".

4.显示指定的日期时间(是显示,不是设置!)

格式: date -d STRING +FORMAT

(1) 显示明天

$ date -d tomorrow "+%Y-%m-%d" 
2014-06-03

$ date -d tomorrow 
Tue Jun 3 14:11:04 HKT 2014

(2) 其他STRING--日期的加减.

»»阅读全文

linux history命令高级用法

之前一直想实现,history记录历史命令的时候,带上时间和操作人,原来很easy就可以实现。

export HISTTIMEFORMAT="%F %T `whoami` "

shell wait命令

wait我的理解是,等多个进程执行完,之后在执行wait后面的脚本。

#!/bin/bash

  for ((i=0;i<5;i++));do

  {

  sleep 3;echo 1>>aa && echo "done!"

  }

  done

  wait

  cat aa|wc -l

  rm aa

  这种情况下,程序顺序执行,每个循环3s,共需15s左右。

  $ time bash test.sh

  done!

  done!

  done!

  done!

  done!

  5

  real    0m15.030s

  user    0m0.002s

  sys     0m0.003s

»»阅读全文

linux奇葩现象wc -l 0行

很大的一个文件,无论是 wc -l  文件名字 还是cat 文件名字|wc -l 都显示0行。

[root@op-crawl-misc-1-us opera]# wc -l MTIwODcwOTI1OXwxNDU4NjkxMjAw
0 MTIwODcwOTI1OXwxNDU4NjkxMjAw
[root@op-crawl-misc-1-us opera]# du  -hs MTIwODcwOTI1OXwxNDU4NjkxMjAw
16K	MTIwODcwOTI1OXwxNDU4NjkxMjAw

原来是文件末尾没有换行符结尾造成的。

判断shell元素是否在数组中

shell判断数组中是否包含某个元素:

ary=(1 2 3)

a=2

if [[ "${ary[@]}" =~ "$a" ]] ; then
    echo "a in ary"
else
    echo "a not in ary"
fi

判读字符串($str)是否包含另一个字符串($str1):

方法1:

if [  `echo $str | grep -e '$str1'`  ] ; then

    echo yes

fi

方法2(如果$str1在判断中直接使用字符串而不是变量,则不能加引号,如if [[ $str =~ ^dx ]]判读字符串$str是否以dx开头,^dx不能加引号):

if [[ $str =~ $str1 ]] ; then

    echo yes

fi

 

300个进程,如果那个进程挂掉了,则重新开启。

all_pid=$(seq 1 300)
ok_pid=($(ps  axf|grep last_step_text|grep  -v  grep |awk  '{print  $7}'|sort -n))
#echo  ${ok_pid[*]}
#echo   ${ok_pid[@]}
for pid in $all_pid
do
        if [[ ! "${ok_pid[@]}" =~ "$pid" ]]
        then
                 /usr/bin/php /work/opera/last_step_text.php $pid &
                echo "$pid ok"
        fi
done

sh字符串操作

// 数字或者数字组合(能够返回结果,即程序退出状态是0,说明属于这种类型,反之不然)
$ i=5;j=9423483247234;
$ echo $i | grep [0-9]*
5
$ echo $j | grep [0-9]*
9423483247234
$ echo $j | grep [0-9]* >/dev/null
$ echo $?
0
// 字符组合(小写字母、大写字母、两者的组合)
$ c="A"; d="fwefewjuew"; e="fewfEFWefwefe"
$ echo $c | grep [A-Z]
A
$ echo $d | grep "[a-z]*"
fwefewjuew
$ echo $e | grep "[a-zA-Z]*"
fewfEFWefwefe
// 字母和数字的组合
$ ic="432fwfwefeFWEwefwef"
$ echo $ic | grep "[0-9a-zA-Z]*"
432fwfwefeFWEwefwef
// 空格或者Tab键等
$ echo " " | grep " "
  
$ echo -e "\t" | grep "[[:space:]]" #[[:space:]]会同时匹配空格和TAB键
 
$ echo -e " \t" | grep "[[:space:]]"
 
$ echo -e "\t" | grep "<tab>" #<tab>为在键盘上按下TAB键,而不是字符<tab>
// 匹配邮件地址
$ echo "test2007@lzu.cn" | grep "[0-9a-zA-Z\.]*@[0-9a-zA-Z\.]"
test2007@lzu.cn
// 匹配URL地址(以http链接为例)
$ echo "http://news.lzu.edu.cn/article.jsp?newsid=10135" | grep "http://[0-9a-zA-Z\./=?]*"
http://news.lzu.edu.cn/article.jsp?newsid=10135

»»阅读全文

linux grep高级用法

1. 使用用正则表达式

语法:
grep "REGEX" filename


如果你能有效地利用正则表达式,这是个很有用的特点。在下面的例子中,搜索全部以“lines”开始以“empty”结束的字串,如搜索“lines[之间任意字]empty” ,并且忽略大小写。

 

$ grep -i "lines.*empty" demo_file
Two lines above this line is empty.

 

正则表达式遵循的几个重复的操作

  • ? 最多匹配一次
  • * 匹配零次或者任意多次
  • + 匹配一次以上
  • {n} 匹配n次
  • {n,} 最少匹配n次
  • {,m} 最多匹配m次
  • {n,m} 匹配n到m次

»»阅读全文

vim&perl对匹配数字做运算

遇到这样个事情,php读取excel的时候,40多列,然后读取后到一个数组,然后key就是0到40多,然后去除每个列的数值。如下代码,但是突然要在最前面或者中间增加一列,然后数组的数字就的变。

»»阅读全文

perl命令行学习

网上遇见这样一个问题:

perl解析报文,每3行输出到1行,怎么实现
例如
a1
a2
a3
b1
b2
b3
c1
c2
c3
结果
a1a2a3
b1b2b3
c1c2c3

»»阅读全文