- 浏览: 4752326 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
bzhao:
你也应该可以这样:(not tested)./rbtunnel ...
在Bash脚本中怎么关闭文件描述符? -
bzhao:
如果有A进程原代码情况下,通过如下调用,把他的子进程继承关闭则 ...
在Bash脚本中怎么关闭文件描述符? -
Master-Gao:
楼主咋没分析下源码呢?
我使用过的Linux命令之dirname - 截取给定路径的目录部分 -
jiedushi:
tail -F 就可以吧
Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能 -
java_is_new:
新手学习了,就是不明白为一个网卡配多个ip有什么用
我使用过的Linux命令之ifconfig - 网络配置命令
用Google AJAX Search API对互联网上Linux命令出现次数排名
本文链接:http://codingstandards.iteye.com/blog/798861 (转载请注明出处)
基本思路
最近开始编写《我使用过的Linux命令系列 》博文,忽然想到一个问题,在互联网上到底哪些Linux命令更热一些,或者介绍的文章多些。基本思路如下:
首先确定有哪些命令,为了得到尽可能全面的命令列表,我用VMWare把RHEL5.5进行了完整的安装,安装好之后利用Bash提供的命令补全功能,得到了命令列表,见附件rhel55.txt,具体做法是在Bash命令行上直接按TAB键然后不断按空白键列出所有命令。
然后得到每个命令出现的次数,开始时我做了一下尝试,在Google上手工输入了一些命令,关键字选择“linux 命令”的形式。比如adduser命令采用的关键字就是“linux adduser”,可以得到有255,000条结果,中文页面有137,000条结果。但是这样手工一条条做,显然工作量太大,因此想到了Google Search API,在其上注册了一个账号,然后编写Bash脚本测试。经过一些尝试,发现这种方式还是可行的:对每个命令进行遍历,执行Google搜索得到估计数量,输出到文件中。关于Google AJAX Search API在Linux命令行下的使用方法详见这里 。
最后将得到的命令统计数量文件进行排序,就大功告成了。
Bash脚本
Bash脚本文件 estimate.sh
#!/bin/sh # usage: google_search <STR> # Google搜索 google_search() { REF="http://codingstandards.iteye.com/" KEY="ABQIAAAAHg_ENG5Yq9pOZd19v64gyxTMcdcN4KfyGCBxustvF1FXdNe4WBQOej_ZiBgIK6-a4M3hTxcVfSkt2g" STR="$1" # 采用网页搜索 #curl -e $REF "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=$STR&hl=zh-CN" 2>/dev/null # 采用博客搜索 #curl -e $REF "http://ajax.googleapis.com/ajax/services/search/blogs?v=1.0&q=$STR&hl=zh-CN" 2>/dev/null #curl --retry 5 -e $REF "http://ajax.googleapis.com/ajax/services/search/blogs?v=1.0&q=$STR&hl=zh-CN" 2>/dev/null curl --retry 5 -e "$REF" "http://ajax.googleapis.com/ajax/services/search/blogs?v=1.0&q=$STR&hl=zh-CN&key=$KEY" 2>/dev/null } # usage: get_estimate_count <CMD> # 得到指定命令的Google搜索结果的估计数量 get_estimate_count() { CMD=$1 # 得到google搜索的结果 #RESPONSE_DATA=$(google_search "Linux+%2B$CMD+%2B命令") RESPONSE_DATA=$(google_search "Linux+%2B\"$CMD命令\"") #echo $RESPONSE_DATA echo $RESPONSE_DATA >temp/$CMD.json # 将"estimatedResultCount":"左边的部分截掉 ESTIMATE_COUNT=${RESPONSE_DATA#*\"estimatedResultCount\":\"} #echo $ESTIMATE_COUNT # 有时候会没有结果,比如对add_jar3进行搜索时 if [ "$RESPONSE_DATA" == "$ESTIMATE_COUNT" ]; then #echo - # 不输出任何东西 return fi # 将"右边的部分截掉 ESTIMATE_COUNT=${ESTIMATE_COUNT%%\"*} #echo $ESTIMATE_COUNT echo $ESTIMATE_COUNT } #get_estimate_count add_jar3 #get_estimate_count sesearch #get_estimate_count in # usage: proc_cmd proc_cmd() { CMD=$1 NUM=$(get_estimate_count $CMD) # 发现有时候并不能得到数值,因此只有返回数值的时候才打印信息 if [ "$NUM" ]; then printf "%-36s\t%12s\n" $CMD $NUM else echo $CMD >&2 echo $CMD >>failed.dat fi } # usage: estimate_file <FILE> # 对指定文件中的命令进行Google搜索,显示成“命令 数量”的格式 estimate_file() { FILE=$1 MAX_PROCESSES=1 CUR_PROCESSES=0 for CMD in $(cat $FILE) do # 没有处理过的命令才进行搜索 if ! grep -q "$CMD " estimate.dat; then proc_cmd $CMD & CUR_PROCESSES=$[CUR_PROCESSES+1] if [ "$CUR_PROCESSES" == "$MAX_PROCESSES" ]; then wait CUR_PROCESSES=0 fi fi done if [ "$CUR_PROCESSES" != "0" ]; then wait fi } # usage: estimate_files <FILE1> <FILE2> ... # 对多个文件进行数量统计 estimate_files() { for FILE in "$@" do estimate_file $FILE done } # usage:main main() { # 对当前目录下的所有txt文件进行处理 #estimate_files ?.txt | tee estimate.dat #estimate_files "$@" | tee estimate.dat estimate_files "$@" | tee -a estimate.dat # 按照数量倒序排列 sort -k 2 -n -r estimate.dat >estimate_sorted.dat } if [ "reset" == "$1" ]; then rm -rf temp rm -f failed.dat rm -f estimate.dat estimate_sorted.dat else rm -f failed.dat mkdir -p temp #main ?.txt #main rhel55.txt main "$@" fi
使用方式:./estimate.sh <command-file>
比如:./estimate.sh rhel55.txt
这个需要很长时间运行,我是使用screen命令 来运行的。
运行结果
排在前100位的Linux命令统计数据如下
数据文件 estimate_sort.dat
for 14717552 php 3633635 POST 3500295 if 3105116 free 3077812 GET 2754997 Mail 2546814 X 2354642 c++ 2078740 install 1663794 then 1496335 look 1382716 do 1382077 red 1297329 while 1296227 r++ 1278640 ip 1159486 g++ 1090350 co 1072202 jobs 1064459 screen 1061419 case 1038589 command 1020028 complete 969708 touch 939152 times 929702 true 922490 done 881188 chat 843574 else 837265 talk 830200 patch 804871 fi 734431 spam 703822 open 703104 break 699024 until 694978 continue 687704 python 670149 groups 670066 wish 658274 HEAD 649301 star 623613 return 595490 du 595178 function 583288 clear 557484 history 553110 compare 531711 amd 519778 join 504890 cut 490316 ruby 482702 sudo 481834 firefox 448990 apt 432220 replace 431444 export 425227 pr 422921 reboot 411582 bash 409009 ar 408693 ac 408108 clock 406453 kill 399793 reset 390244 import 382678 wall 382328 crash 381835 states 361991 exit 356256 gcc 344048 newer 333310 factor 319654 column 312702 spent 301818 ci 290611 paste 286709 accept 280039 grub 275932 false 274413 arch 273525 flex 269829 flex++ 268928 sort 266867 weather 259220 ab 248634 nl 244664 chmod 226770 osx 226762 cancel 223539 fc 219973 telnet 216743 batch 215047 units 207773 yum 200619 alternatives 193568 wget 190392 emacs 190248 tux 189157
不足之处
在使用Google Search API的进行网页数量估算的时候,发现数量不太准确,比如直接使用Google搜索得到的数量与通过Google Search API得到的数量不一致,差别还蛮大。后来在Google上搜索一下,发现很多人提到了这个问题,说得到的estimatedResultCount并不准确。
还有就是,通过关键字“linux 命令”的方式得到的搜索结果中,并不是所有的页面都是来关于这个Linux命令的,比如通过"linux complete"这个关键字搜索到的主要是介绍Linux参考大全的页面。这也是美中不足的地方。后来我还尝试过使用"linux adduser命令"这种形式的关键字,或者不采用网页搜索而采用博客搜索。都无法彻底解决这个问题。
列位看官,如果您有什么好主意,请留下您的想法。
- estimate.rar (80.4 KB)
- 下载次数: 3
评论
谢谢支持!
发表评论
-
在Linux下将整个目录的文件转换字符编码的脚本
2012-06-18 20:47 3649源文件编码:gbk 源文件名称模式:*.ftl.gbk 目 ... -
Bash小技巧(惯用法)-2
2012-05-12 07:17 2199读取文件的第一行 很简单: head -1 file.tx ... -
Bash小技巧(惯用法)-1
2012-05-10 20:55 2621Bash小技巧(惯用法) 退出码判断(命令执行成功与否的判断 ... -
写一个Bash脚本来计算母亲节和父亲节的日期(推荐)
2012-05-10 20:31 2798写一个Bash脚本来计算母亲节和父亲节的日期 母亲节(每年 ... -
推荐Bash提高资料:写出健壮的Bash脚本
2012-03-20 13:58 3472写出健壮的Bash脚本 本文链接:http://coding ... -
在Linux下使用top命令查看所有java进程的状态
2011-10-28 11:09 9687在Linux下使用top命令查 ... -
导入MySQL数据库模式及数据的Bash脚本 (导出的姊妹篇)
2011-10-11 09:48 2823导入MySQL数据库模式及数据的Bash脚本 本文链接:ht ... -
导出MySQL数据库模式及数据的Bash脚本 真的很好用!
2011-10-10 10:14 3975导出MySQL数据库模式及数据的Bash脚本 本文链 ... -
导出MySQL数据库模式及数据的Bash脚本
2011-10-08 14:41 0导出MySQL数据库模式及数据的Bash脚本 ... -
AA制消费金额统计的Bash脚本
2011-09-02 19:57 2086AA制消费金额统计的Bash ... -
AA制消费金额统计的Bash脚本
2011-09-02 16:27 0AA制消费金额统计的Bash ... -
Bash字符串处理总结(与Java对比)
2011-08-26 22:02 0。 Bash字符串处理总结(与Java对比) ... -
Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能
2010-11-05 13:08 7780Linux下实时跟踪log4j日志文件的bash脚本 - 增强 ... -
Linux下把多个子目录中的源代码添加到CVS仓库的Bash脚本
2010-10-23 15:19 3486Linux下把多个子目录中的源代码添加到CVS仓库的Bash脚 ... -
我使用过的Linux命令之history
2010-09-30 14:03 0我使用过的Linux命令之history 本文链接: ( ... -
我使用过的Linux命令之g++
2010-09-29 13:51 0我使用过的Linux命令之g++ 用途说明 常用参数 使 ... -
我使用过的Linux命令之gzip
2010-09-29 13:51 0我使用过的Linux命令之gzip 用途说明 常用参数 ... -
我使用过的Linux命令之gunzip
2010-09-29 13:50 0我使用过的Linux命令之gunzip 用途说明 常用参数 ... -
我使用过的Linux命令之groups
2010-09-29 13:50 0我使用过的Linux命令之groups 用途说明 常用参数 ... -
我使用过的Linux命令之groupmod
2010-09-29 13:49 0我使用过的Linux命令之groupmod 用途说明 常用 ...
相关推荐
Linux Bitch是一个基于Go语言构建的轻量级Linux发行版搜索引擎。这个项目旨在提供一个高效且用户友好的接口,帮助用户查找和探索各种Linux发行版。让我们深入了解一下这个项目涉及的技术和知识点。 首先,让我们...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...
得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于...
10. **云计算与大数据**:AWS(Amazon Web Services)、Azure、Google Cloud Platform等云服务提供商,以及Hadoop、Spark等大数据处理框架,对于现代互联网公司的运营和发展至关重要。 以上只是部分电脑专业英语...