Linux下各种技巧集粹


1.远程copy大文件
利用ssh和tar,一边压缩,一边copy. 当文件大小上G了以后比较有用.
如果你要copy的文件名为big_file.img,则可以用如下命令.
tar -czvf - big_file.img | ssh dest_host "cd /share/; tar -xvf"
copy 到dest_host的/share/目录.

2.文件自动备份
用rsync,查一下 rsync的manual就会了,很方便也比较简单。我用rsync来备份几百G的数据依然工作的非常好。
用rsync还有几个原因:
增量式备分
远程文件可进行一边压缩一边备分

3.Linux X Window下连接Windows的桌面
1).用rdesktop命令,请先安装rdestktop的RPM包,然后把Windows的远程桌面打开
2).用VNC,在Windows下安装 realvnc的server,然后在Linux下用vncviewer命令连接Windows的桌面

4.用wget下载整个网站
wget -r -p -np -k http://www.shaohui.org

5.解决vim中文乱码问题
把一下配置copy到你的vimrc里面,然后问题就解决了,另外对于中文的显示,pietty比putty做得更好。推荐一下。

set fileencodings=utf-8,cp936,big5,latin1

an 20.4109 &Edit.-SEP6-
an 20.4109.10 &Edit.Encoding.&GBK :set encoding=gbk
an 20.4109.11 &Edit.Encoding.&Big5 :set encoding=big5
an 20.4109.12 &Edit.Encoding.&UTF-8 :set encoding=utf-8

an 20.4119.10 &Edit.Fileencodings.&GBK :set fileencodings=gbk
an 20.4119.11 &Edit.Fileencodings.&Big5 :set fileencodings=big5
an 20.4119.12 &Edit.Fileencodings.&UTF-8 :set fileencodings=utf-8

an 20.4139 &Edit.gb\ \ convert.gb->big5 :%!autogb -i gb -o big5
an 20.4139 &Edit.gb\ \ convert.gb->utf8 :%!autogb -i gb -o utf8

an 20.4149 &Edit.big5\ \ convert.big5->gb :%!autogb -i big5 -o gb
an 20.4149 &Edit.big5\ \ convert.big5->utf8 :%!autogb -i big5 -o utf8

an 20.4159 &Edit.utf8\ \ convert.utf8->gb :%!autogb -i utf8 -o gb
an 20.4159 &Edit.utf8\ \ convert.utf8->big5 :%!autogb -i utf8 -o big5

6. 字符集转换
也是用来解决中文乱码问题,尤其是用wget下载网页的时候出现的乱码,tip 5解决了用vim的乱码问题,但是用cat命令查看问题的时候依然乱码。最近想写个脚本去baidu mp3去抓歌曲,顺便解决了这个问题。
iconv -f gbk -t utf8 srcfile > dstfile

7. Shell中多行变一行的方法
一直都用vim来做,就是太ugly了一些。
vi filename -c ":%s/\n//g" -c ":x"

google了一把,有意外的收获
文本内容:
$cat test.txt
001
002
003
004
005
006
0000999

需要格式化成:
001 002 003 004 005 006 0000999

方法一、最好的答案
xargs < test.txt

方法二、整个文件读入一个变量,然后直接打印,也很容易理解
a=`cat test.txt`;echo $a

方法三、使用tr把换行符替换成空格:
tr -s "\n" " " < test.txt;echo

方法四、使用sed,把整个文件读入保持空间,处理最后一行的时候,替换所有换行符为空格,打印:
sed -n '1h;1!H;${g;s/\n/ /g;p;}' test.txt

方法五、使用awk,读入一行打印一行,但是不打印换行符,最后一行多打印一个换行符:
awk '{printf("%s ",$0);}END{print}' test.txt

方法六、使用paste命令格式化打印,-d指定分隔符,-s表示合并成一行:
paste -d" " -s - < test.txt

方法七、使用pr格式化打印,-s指定分隔符,-50指定每行打印多少域,-t指定取消页眉、页尾:
pr -50t -s" " test.txt

8.Linux下的多线程下载工具
wget是单线程下载,所以速度很慢。 prozilla是个不错的选择,有命令行的,也有GUI版本的,下载速度超级快。
官方网站:http://prozilla.genesys.ro/
安装很简单, 我用source自己make的。

另外一个是multiget,没有试过,有兴趣可以去看看
http://multiget.sourceforge.net

相关内容