文本处理html
替换:sed 's/被替换字符/替换字符/g' file_namejava
删除文件全部空行:sed '/^$/d' file_namepython
删除文件全部注释:sed '/*#/d' file_namegit
查看第一行的第一栏:echo a b c | awk '{print $1}'vim
查看一行的第一和第三栏:echo a b c | awk '{print $1,$3}'安全
合并两个文件或两栏的内容:paste file1 file2less
合并两个文件或两栏的内容用“+”号区分:paste -d '+' file1 file2ssh
排序两个文件的内容:sort file1 file2 fetch
取出两个文件的并集(重复的行只保留一份):sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)线程
删除交集,留下其余的行:sort file1 file2 | uniq -u 删除交集,留下其余的行
取出两个文件的交集(只留下同时存在于两个文件中的文件):sort file1 file2 | uniq -d
比较两个文件的内容只删除 'file1' 所包含的内容:comm -1 file1 file2
比较两个文件的内容只删除 'file2' 所包含的内容:comm -2 file1 file2
比较两个文件的内容只删除两个文件共有的部分:comm -3 file1 file2
字符设置和文件格式转换
将一个文本文件的格式从MSDOS转换成UNIX:dos2unix filedos.txt fileunix.txt
将一个文本文件的格式从UNIX转换成MSDOS:unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS
将一个文本文件转换成html:recode ..HTML < page.txt > page.html 将一个文本文件转换成html
显示全部容许的转换格式:recode -l | more
各类备份命令
制做一个 '/home' 目录的完整备份:dump -0aj -f /tmp/home0.bak /home
制做一个 '/home' 目录的交互式备份:dump -1aj -f /tmp/home0.bak /home
还原一个交互式备份:restore -if /tmp/home0.bak
同步两边的目录:rsync -rogpav --delete /home /tmp
经过SSH通道rsync:rsync -rogpav -e ssh --delete /home ip_address:/tmp
经过ssh和压缩将一个远程目录同步到本地目录:rsync -az -e ssh --delete ip_addr:/home/public /home/local
经过ssh和压缩将本地目录同步到远程目录:rsync -az -e ssh --delete /home/local ip_addr:/home/public
经过ssh在远程主机上执行一次备份本地磁盘的操做:dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz'
备份磁盘内容到一个文件:dd if=/dev/sda of=/tmp/file1
作一个将 MBR (Master Boot Record)内容复制到软盘的动做:dd if=/dev/hda of=/dev/fd0 bs=512 count=1
从已经保存到软盘的备份中恢复MBR内容:dd if=/dev/fd0 of=/dev/hda bs=512 count=1
执行一次对 '/home/user' 目录的交互式备份操做:tar -Puf backup.tar /home/user
经过ssh在远程目录中复制一个目录内容:( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p'
经过ssh在远程目录中复制一个本地目录:( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p'
本地将一个目录复制到另外一个地方,保留原有权限及连接:tar cf - . | (cd /tmp/backup ; tar xf - )
从一个目录查找并复制全部以 '.txt' 结尾的文件到另外一个目录:find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents
查找全部以 '.log' 结尾的文件并作成一个bzip包:find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2
文件的特殊属性
使用 "+" 设置权限,使用 "-" 用于取消
只容许以追加方式读写文件:chattr +a file1
容许这个文件能被内核自动压缩/解压:chattr +c file1
在进行文件系统备份时,dump程序将忽略这个文件:chattr +d file1
设置成不可变的文件,不能被删除、修改、重命名或者连接:chattr +i file1
容许一个文件被安全地删除:chattr +s file1
一旦应用程序对这个文件执行了写操做,使系统马上把修改的结果写到磁盘:chattr +S file1
若文件被删除,系统会容许你在之后恢复这个被删除的文件:chattr +u file1
显示特殊的属性:lsattr
用户设置
设置用户口令的失效期限:chage -E 2016-4-22 user1
检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户:pwck
检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组:grpck
登录进一个新的群组以改变新建立文件的预设群组:newgrp group_name
工做经常使用
检查进程运行状态:ps -ef | grep 进程名称
杀死进程:kill -9 进程号 如:ps aux|grep zabbix |awk '{print $2}' |xargs kill -9
查看某个时间段到如今日志:sed -n '/2016-04-23 09:00:00/,$p' system.log.2016-04-23 | less
根据条件查找文件:grep server_name *.conf --color=auto
批量替换:find . -type f -name "*.conf"|xargs perl -pi -e 's|listen 80|#listen 80|g'
a,b机器之间文件传输:
a机器:python -m SimpleHTTPServer(默认端口是8000) #须要在当前文件执行
b机器:wget http://ip_add:8000/文件的名字
获取Java堆栈信息:
sudo -u user1 /usr/local/java/bin/jstack 进程号(top查看最高的java进程) > a.txt
找到最高的JAVA线程
top -H -p 进程号
把线程号转成16进制
printf "%x" 327
147
去a.txt里面查找147
vim a.txt /147
jstat -gcutil 23116 1000 5
git经常使用
查看版本:git remote -v
拉取用户的代码:git fetch user1
切换并建立新的分支:git checkout -b 建立的分支名 分支
删除分支:git branch -D 分支
查看分支:git branch
切换分支:git checkout 分支名称