读书人

那些您可能不常用却很有用的Linux命令

发布时间: 2013-03-12 11:19:35 作者: rapoo

那些你可能不常用却很有用的Linux命令及配置

1. du -sh directory 查询directory占用磁盘空间的大小,du -sh * 可查看当前目录下所有文件夹所占空间大小,如果直接用du -sh可查询当前目录占用的磁盘空间。

查找: grep "要找的字符串" -rl 目录
替换: sed -i "s/要查找的字符串/替换字符串/g" `grep "要查找的字符串" -rl 目录`
注意: 替换中的 grep 命令要被 TAB 键上边的那个引号包起来
参考链接:http://hi.baidu.com/kik107732781/blog/item/469c5d7f28c5370029388a5a.html

14. 在shell中使用ftp,避免交互
#!/bin/bash
HOST='xx.xx.xx.xx'
USER='user'
PASSWD='passwd'
FILE='yourfile'

ftp -n $HOST << END_SCRIPT
quote USER $USER
quote PASS $PASSWD
bin
prompt
get(/put) $FILE
quit
END_SCRIPT
exit 0
通过以上的脚本,就可以实现自动的从ftp服务器上下载文件,或者上传文件。

15. 检测MD5字符串的有效性
应用情形是这样的:一个文件,存储的全是MD5值,而且每一个MD5从顶格占一行。行尾可能是‘\n’或者'\r\n',需要输出所有无效的MD5的行。
使用awk,命令如下:
$ awk --re-interval '$0 !~/^[0-9A-Fa-f]{32}[\r]?$/' md5file

16. diff 递归目录的代码
$ diff -rq -x .svn dirA/ dirB/
diff中递归比较带子目录的源码使用-r选项,只打印文件名使用-q选项。要排除一些目录或者文件,不参与比较,可以使用-x选项。比如通常我们不比较版本代码中的.svn中的文件。

17. vsftp服务器上文件时间的配置
问题:直接登陆系统看到/var/ftp/pub目录下所有文件的日期与通过ftp登陆上去看到文件的时间不一致,我的测试环境上是相差8个小时,应该就是时区设置的问题。
对vsftp的配置文件/etc/vsftpd/vsftpd.conf最后添加一行内容,如下:
use_localtime=YES
重启vsftpd即可。可见,默认情况下vsftpd使用的是GMT时间。

18. 删除名字中带空格或换行符的目录或文件
通常我们想删除某些文件的时候,可以使用find+xargs命令的组合:
$find . -name filename | xargs rm -rf
但是,当搜索的文件名是某个长文件名的一部分,或者该文件的路径中某个目录名为带空格或者换行符的时候,最终无法删除该文件。
这个原因在于当前find和xargs默认文件名的分隔符是以空格或者换行符的,遇到一次空格就认为一个文件了。因此,处理带空格或者换行符的文件名时将失败,修正的方法就是修改find和xargs处理文件名是的分割符,让它们以NULL(0)为分隔符,修正方式如下:
$find . -name filename -print0 | xargs -0 rm -rf
这样就实现了find输出的所有文件名以NUL分割,xargs也以同样的方式进一步处理find输出的所有文件。

19. tar排除指定目录打包
如果 /opt/apache/目录下有 a b c d 这几个目录
现在要将 a b目录tar打包,不打包c d目录
命令如下,当前在opt目录下opt> tar -zcvf apache.tar.gz --exclude=c --exclude=d apache或opt> tar -zcvf test.tar.gz --exclude=/apache/c --exclude=apache/d apache

注意: 要打包的目录要放在最后面的!、--------------------------------------------

tar分卷压缩:tar cvzpf - somedir | split -d -b 500m (-d不是split的选项,是shell的选项,表示将tar命令的输出作为split的输入)

tar多卷合并:cat x* > mytarfile.tar.gz
引用链接:http://blog.chinaunix.net/u/19637/showart_441607.html

20. 非交互进行ftp下载--wget
下载单个文件:
#$wget -b ftp://user:pass@ftpserver/[dir/]file
其中[dir/]/file代表所欲下载的文件相对于ftp根目录的路径。
21.对于终端下命令行前缀的修改现在很多终端下使用命令行,前缀都会标记出当前目录,但是如果目录很深的话,这么长的前缀难免会影响工作,所以,我们可以使用:
ip neigh add 192.168.1.226 lladdr 00:11:09:40:68:3f dev eth0 nud perm

23.网络查找命令用namp对局域网扫描一遍,然后查看arp缓存表就可以知道局域内ip-mac的对应了,namp比较强大也可以直接扫描mac地址和端口。首先进行安装:(Ubuntu下直接apt-get即可)#apt-get install nmap
进行ping扫描,打印出对扫描做出响应的主机:   
nmap -sP 192.168.1.0/24   
仅列出指定网络上的每台主机,不发送任何报文到目标主机:   
nmap -sL 192.168.1.0/24   
探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):   
nmap -PS 192.168.1.234   
使用UDP ping探测主机:   
nmap -PU 192.168.1.0/24   
使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:   
nmap -sS 192.168.1.0/24
执行扫描之后就可以 cat /proc/net/arp查看arp缓存表了


注:本文有部分摘抄网上前辈的博客(有些已发现错误本文中已改正),但是我会为这篇博客添加更多我自己的东西,所以在此处就先标记为原创。本文会不断更新,记录我学到的比较好的命令。最后再次祈求原作者不要介意。 [1] http://blog.chinaunix.net/uid-10167808-id-25956.html

读书人网 >UNIXLINUX

热点推荐