LINUX常用命令
一、编码转换
1、iconv
应该算是LINUX下最常用的文本编码转换工具,一般系统自带。使用方法如
iconv -f gb2312 -t utf-8 filename -o newfilename
参数解释:
-f,--from 文件原编码 -t,--to 转换之后的编码 -o,--output 转换成功后另存为的文件名,如果省略此参数和新文件名,则将转换结果输出到标准输出)
2、enca
这个和 iconv 命令一样,也是用来转换文本编码的。相对于 iconv ,它有两个优点,一是可以查看文件编码,二是可以直接批量转换文件夹下所有文件(非递归)。 但它有一个非弱点的弱点,即非系统内置。下载地址:
使用方法:
//转换编码: -x 表示目标编码 -L zh_CN 指定语言,这个好蛋疼,能省略么?不省略真心不想用^^ enca -L zh_CN -x utf-8 filename //enca -L zh_CN -x utf-8 * //可以批量转换文件夹下所有文件(非递归) //查看文件编码 enca -L zh_CN filename
这个工具不太建议使用,只是因为它不是系统内置。而且可以被 iconv 替代,如下面我简单写了个 iconv1 放到PATH目录下:
dir=$1 touch tmp for i in $dir/* do iconv -c -f gbk -t utf8 $i > tmp cp tmp $i done rm -rf tmp
执行 iconv1 src/ 即可批量转换 src 目录下所有文件编码,效果同 enca 想要递归转换?也很简单:
dir=$1 filelist=`find $dir -type f` for i in $filelist do iconv -c -f gbk -t utf8 $i > tmp mv tmp $i echo $i done
使用方法同上。
3、convmv
这个命令不同于上面两个,它是用来转换文件名中的乱码的。比如说我们项目中一般会有 "协议文档.doc",在LINUX下文件名就会显示乱码,就可以通过下面命令转换:
convmv -f gb2312 -t utf-8 -r doc/ --notest
其它参数不用说吧,用法和 iconv 非常相似,不同的是,它内置了递归,即 -r 参数,另一个参数 --notest 如果不加上,表示测试显示而非正式转换,所以呢如果只是想看一下乱码中的文件名是什么,就忽略此参数吧,否则记得加上此参数。 同样可惜的是,此命令也非一般LINUX发行版内置,下载地址同上:
二、批量搜索和替换
1、grep
带上 --color=auto 参数可以使用搜索的结果彩色显示。
grep -r "find_str" dir/ --color=auto
另外,也可以使用
export GREP_OPTIONS='--color=auto' //或: export GREP_OPTIONS='--color=auto' GREP_COLORS='ms=01;4;31:fn=36'
来导入 grep 的配色方案,其中 ms 表示查找的关键字颜色,fn 表示查找关键字所在文件名的颜色。(LINUX下,项与项之间一般使用冒号或空格分开)
带上 --include *.{h,cpp} 可以指定搜索的文件格式(或文件名关键字)
grep -n -B2 -A3 errno ./ -r //显示行号,显示前2行,后3行的共6行内容
2、find
全局替换文件中指定字符串:
find dir/ -name "*.cpp" -exec sed 's/vector/list/g' -i {} \;
三、进程相关
1、lsof (list open file)
lsof -i:80
2、netstat
查看所有端口占用情况:
netstat -anp
查看通讯的数据是否阻塞:
netstat -tn
可以看 Recv-Q Send-Q 是否很大。
3、查看进程详细信息
查看进程完整路径:
ll /proc/$PID/exe
四、md5加密
md5sum config.plist | cut -d ' ' -f1
五、zip 压缩与解压缩
http://www.cnblogs.com/chinareny2k/archive/2010/01/05/1639468.html
zip -r test.zip ./test unzip -o -d /root/ test.zip -o:覆盖文件时不提示,直接覆盖 -d:指明解压路径
三、批量删除SVN目录
find . -type d -name ".svn" | xargs rm -rf
find . -type d -name ".svn" | xargs rm -rf
find . -type f -name "*.meta" | xargs rm -rf