距离上一次发博客有一段时间了,这段时间其实写了一个shell+expect+python的通过ssh拉取数据的脚本,又用jython调用Java写了一个公司内用的脚本,感觉linux在平时的工作里面越发重要的。
话说回来,linux平时的命令行的使用也有点小成果,在这里和各位分享。
xargs
find -type f -name "*.xml" | xargs fgrep --color -m 10 -Hn FOO
从当前目录下所有XML文件中查找FOO。find中使用xargs的作用和
find -type f -name "*.xml" -exec fgrep --color -m 10 -Hn FOO {} \;
类似,不过可以用于别的命令。比如:
cat files | xargs rm -rf
删除文件中指定的文件或者目录等等。
cut
简单的分割和提取工具,如果你不想用awk的话。
echo "1,2,3" | cut -d',' -f2
结果为2,d后面为分割符,f为列号(貌似从1开始)。
vim $()
经常有这种需求,用vim编辑find找出来的文件。比如你记得某个文件名为foo.xml,但是可能目录很深,一时找不到,这时你可以用命令:
vim $(find -type f -name "foo.xml")
如果有多个也没有关系,会全部找出来。不过个人感觉找出来太多的话vim可能会崩?最好事先运行下命令看下有多少文件。
fgrep
简单的字符串查找的grep,不使用正则表达式,速度上会有点提升。同时学到的有如下参数:
-m 10 最大匹配数,对于有几万的匹配的刷屏很有效……
-n 列出行数,代码中找内容很有效
-H 列出文件,多文件fgrep时比较有用
-c 列出匹配数,原先我是用grep FOO | wc -l的……
–color 启用颜色模式,ubuntu好像默认是启用的,看alias,不过xargs里面好像无效。
小结个查找含有某个字符串的文件命令:
find -type f -name "*.xml" | xargs fgrep -H FOO | cut -d':' -f1 | uniq
bash vi mode
set -o vi
部分操作和vi是一样的。如果你按v的话,可能会出来编辑器,对于VISUAL/EDITOR没设置的环境,默认使用的好像是nano,所以个人会额外export EDITOR=vim避免不小心按出nano。
view
vim的书里面学到的,查看文件的命令,只读,不能写。
view /path/to/your/file
最后,感觉以前买的那本《Linux命令大全》可以拿出来再看看拉。