Perl Command-Line Options

-c # compiles the program without runing it.

-M # -Mmodule 和 use module 一样.

例如:

-MLWP::Simple
-MDigest::MD5='md5_hex,md5_base64'

-m # -mmodule 和 use module() 一样, 不会导入 module 默认导入的包.

-n # add loops around your -e code.

$ perl -n -e 'some code' $file

相当于:

LINE:
    while (<>) { 
        #some code 
    }

-p

$ perl -p -e 'some code' $file

相当于:

LINE:
    while (<>) { 
        #some code 
    } continue {
        print or die $!;
    }

假如在 main code loop 之前或之后需要处理代码, 你可以使用 BEGIN 或 END block.

例如:

$ perl -ne 'END {print $t} @w = /(\w+)g; $t += @w' $file

-a # 打开自动分割模式(autosplit mode), 输入会被分割(默认是一个或多个空格分割)成数组并存入 @F

例如:

$ perl -ane 'END {print $t} $t += @F'

-F # 指定分割字符

例如:

$ perl -F'\t' -MData::Dumper -ane 'print Dumper \@F' $file

-l # 自动 chomps 输入, 设置 $\ 等于 $/. $\ 是输出后面加的字符, 默认是空串(empty string). $/ 是读入的分割符, 默认是新行(new line)

例如:

$ perl -le 'print "Hello World"'
$ perl -le 'print for @INC' # 打印出 @INC
$ perl -F':' -MData::Dumper -alne 'print Dumper \@F' /etc/passwd # 对比加 l 和不加 l 的区别
$ perl -lp -e '$_ = $_ . "abc"' $file # 对比加 l 和不加 l 的区别

-i # 把输入文件(源文件)改名(rename), 并且读改名后的文件, 把转化后的记录写入名字是源文件的名字的文件(其实是一种比较有效的覆盖源文件的方法)

例如:

$ perl -i -pe 's/\bPHP\b/Perl/' $file
$ perl -i.bak -pe 's/\bPHP\b/Perl/' $file # 把源文件保存在 "源文件名.bak"
$ 对比 perl -pi -e 's/\bPHP\b/Perl/' $file 和 perl -ip -e 's/\bPHP\b/Perl/' $file # 因为 i 后面可以跟参数, 所以后者无效

这篇文章: 有用 无用 创建 2014-07-11 20:47:07 / 更新 2017-02-07 14:59:27

打开 mysql 的 query log

vi /etc/mysql/my.cnf

打开 general_log_file = /var/log/mysql/mysql.log

mysql 控制台

SET global general_log = 1|0, 动态控制打开或关闭 query log

tail -f /var/log/mysql/mysql.log


这篇文章: 有用 无用 创建 2014-06-22 23:12:15 / 更新 2014-11-10 00:14:40

ant solr source code for eclipse

ant -p # print project help information        

ant ivy-bootstrap # Download and install Ivy in the users ant lib dir        

ant compile # Compile Lucene and Solr        

ant eclipse # Setup Eclipse configuration

cd $DIR/solr-4.8.1/solr

mkdir dist        

ant dist

cp dist/solr-4.8-SNAPSHOT.war example/webapps/solr.war

cd example

java -jar start.jar

这篇文章: 有用 无用 创建 2014-06-05 01:38:47 / 更新 2015-05-05 10:15:50

curl 的一些用法

  1. curl -o|--output $filename www.baidu.com 或 curl www.baidu.com > filename # 保存网页至filename

  2. curl -O|--remote-name $url # e.g. curl -O http://www.etao.com/sitemap.xml -O http://www.amazon.com/robots.txt

  3. curl -I|--head baidu.com # 发送 HEAD 方法给 http server, 显示 header 信息

  4. curl -i|--include $url # 输出中包含 HTTP-header 信息

  5. curl -D|--dump_header $filename $url # 把 response header 信息写入文件

  6. curl -L|--location jd.com # follow redirect

  7. curl -A|--user-agent "[User Agent]" baidu.com # 设置User Agent

  8. curl -e|--referer $referer $url # 设置 $referer

  9. curl -b|--cookie "NAME1=VALUE1; NAME2=VALUE2" $url # 设置 cookie

  10. curl -H|--header 'Content-type:application/xml' $url # 设置 request header 信息

  11. curl -v|--verbose $url # curl HTTP 详情

  12. curl -x|--proxy <[protocol://][user@password]proxyhost[:port]>

    # This option overrides existing environment variables that set the proxy to use. If there's an environment variable setting a proxy, you can set proxy to "" to override it.

  13. curl --socks5 127.0.0.1:7070

POST
  1. curl -X|--request # e.g: curl -X POST

  2. curl --data-binary @$file|$str $url # to post data purely binary, post $url $file or $str

  3. curl -d|--data|--data-ascii @$file|$str $url # post $url $file or $str

  4. curl --data-urlencode @$file|$str $url # (HTTP) similar to the other --data options with the exception that this performs URL-encoding.

  5. curl -F|--form # POST data 使用 Content-Type multipart/form-data.

    e.g: curl -F password=@/etc/passwd www.foo.com

    e.g: curl -F "web=@index.html;type=text/html" www.foo.com

    e.g: curl -F "file=@localfile;filename=nameinpost" www.foo.com

    e.g: curl -F file=@file1 -F file=@file2 www.foo.com

如何给curl添加代理
vi .curlrc
添加socks5 = "127.0.0.1:1080"

这篇文章: 有用 无用 创建 2014-02-25 07:50:35 / 更新 2017-02-07 14:59:38

ssh 命令翻墙

  1. terminal 下输入命令 ssh -fCNq -D [127.0.0.1:]7070 username@servername # 中括号里的代表可以选择输入

    NOTE:

    • -f 后台执行
    • -C 压缩所有数据
    • -N 指定一个本地的 ‘动态的‘ 应用级的端口转发.
    • -D 不执行远程命令, 仅仅用于端口转发.
    • -q 安静模式, 不要输出 timeout 之类的信息
  2. 设置FireFox浏览器

    NOTE:

    • 首选项 -》高级-》网络-》设置, 在弹出的窗口下, 选择“手动配置代理“, SOCKS 主机:localhost, 端口:7070, 点击确定.
    • 在地址栏输入: about:config 然后回车, network.proxy.socks_remote_dns设为 true.

OK!


这篇文章: 有用 无用 创建 2014-01-28 10:09:23 / 更新 2017-02-07 14:59:41