man命令:查看帮助
一、文本操作命令
sed/awk/find/grep/tail/less/more……
1、sed
sed -i 's/原字符串/新字符串/g' 'grep 原字符串 -rl 所在目录'
参数解释:
-i 表示inplace edit,就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名
sed -i.bak 's/2015-10-01/2015-08-01/g' file_path # 备份源文件
2、awk
awk '{print $1, $4}' filename.txt # $0代表整行
awk '{printf "%-8s %-15s\n",$1,$4}' filename.txt # 格式化输出
awk ' $3>0 {print $0}' filename.txt # 过滤输出
awk '$3==0 && $6=="LISTEN" ' filename.txt # 过滤输出
awk '$3==0 && $6=="LISTEN" || NR==1 {printf "%-20s %-20s %s\n",$4,$5,$6}' filename.txt #过滤&格式化输出
awk '$6 ~ /FIN/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" filename.txt # 字符串匹配
awk 'NR!=1{print > $6}' filename.txt # 拆分文件(不处理表头)
* awk中的END表示处理完所有行
参考:AWK简明教程|酷壳
3、find:
find . | xargs fgrep 'string you want to search' # 查找包含指定字符串的文件名
二、文件系统结构和基本操作
ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip……
1、vim
字符串替换
%s/2015-07-01/2015-10-01/g
三、管理命令
ps/top/lsof/netstat/kill/tcpdump/iptables/dd…
1、查看端口占用情况:lsof(list open files)
lsof -i:端口号
2、ps:
ps aux # 使用BSD方式展示,据说命令有被截断的可能,推荐使用-ef
ps -ef # 比上条命令多了一个PPID
ps aux --sort user # 排序
3、netstat
netstat -anp
四、其他
1、du使用详解:http://www.lowxp.com/g/article/detail/290
du,disk usage。-s,--summarize。
du -sh #统计当前目录的大小,以直观方式展现,文件夹越大越多统计时间越长
du和df的区别:
简单来说du 命令是用户级的程序,它不考虑Meta Data,而df命令则查看文件系统的磁盘分配图并考虑Meta Data。df命令获得真正的文件系统数据,而du命令只查看文件系统的部分情况。
2、sudo
sudo -l
sudo -u [username]
sudo -s
3、nohup
nohup cmd_line & # 输出: [1] 14378
fg # 命令移到前台执行
带&的命令行,即使terminal关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上);不带仅是后台运行。
重定向
nohup cmd_line > output 2>&1 & 意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,所以结果是标准错误和标准输出都导入文件output里面了。
至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。
nohup cmd_line >output 2>output # 会出错
这样写会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的.
丢弃输出
最后谈一下/dev/null文件的作用
这是一个无底洞,任何东西都可以定向到这里,但是却无法打开。
所以一般很大的stdou和stderr当你不关心的时候可以利用stdout和stderr定向到这里>cmd_line >/dev/null 2>&1
5、base64编码
echo 'cat /Users/rathan/441.svg' | base64 | pbcopy