linux 部分常用命令

1.Linux 删除除了某个文件之外的所有文件

[root@localhost abc]# ls |grep -v 'a' |xargs rm -f

其中rm -f  !(a) 最为方便。如果保留a和b,可以运行rm -f !(a|b)来实现。

“-bash: !: event not found ” 可以通过运行shopt -s extgolb来解决。如下:
[root@localhost /]# mkdir abc
[root@localhost /]# cd abc
[root@localhost abc]# touch a b c
[root@localhost abc]# ls
a  b  c
[root@localhost abc]# rm -f !(a)
-bash: !: event not found
[root@localhost abc]# shopt -s extglob
[root@localhost abc]# rm -f !(a)
[root@localhost abc]# ls
a

2.命令的信息返回在屏幕上,同时保存在文件who.info中

$ who | tee who.info

3.显示当前目录下文件+目录占用空间前10,排序要用k参数,如果用h会带上单位,排序时会有问题,比如 10k 和1M 排序就不对了

SIZE 可以是一个可选的整数,后面跟着以下单位中的一个:
KB 1000,K 1024,MB 1000*1000,M 1024*1024,还有 G、T、P、E、Z、Y。

du –skc *|sort –rn |head -10
pc-csesb01-aiosb% du --help

4.一次创建多层级多个目录

mkdir -p /apps/temp{1,2,3,4}/temp

5.查看当前主机版本,位数

uname -a
cat /proc/version
cat /etc/issue
lsb_release -a

6.重复执行同一命令50次

seq 50|xargs -i cmd

7.Linux 删除指定时间前的文件

-amin n  查找系统中最后N分钟访问的文件
-atime n  查找系统中最后n*24小时访问的文件
-cmin n  查找系统中最后N分钟被改变文件状态的文件
-ctime n  查找系统中最后n*24小时被改变文件状态的文件
-mmin n  查找系统中最后N分钟被改变文件数据的文件
-mtime n  查找系统中最后n*24小时被改变文件数据的文件

显示20分钟前的文件
find /home/prestat/bills/test -type f -mmin +20 -exec ls -l {} ;

删除20分钟前的文件
find /home/prestat/bills/test -type f -mmin +20 -exec rm {} ;

显示20天前的文件
find /home/prestat/bills/test -type f -mtime +20 -exec ls -l {} ;

删除20天前的文件
find /home/prestat/bills/test -type f -mtime +20 -exec rm {} ;

8.将/home/Blinux /html/ 这个目录下所有文件和文件夹打包为当前目录下的html.zip

zip –q –r   html.zip /home/Blinux /html

linux中往zip档里添加文件 newfile

zip -u ttt.zip newfile

9.tar使用

打包不包含.log后缀的 并且更新日期为2013-7-7开始之后的时间的文件,包含7月7的

tar --exclude=*.log -N '2013/07/07' -cvf test3.tar *

追加用“-r"选项,取出用“-x”选项:

如:有一个包 file.tar.bz2 ,需要把file2.txt添加进去,就用命令:
tar -rvf file.tar.bz2 file2.txt
取出file2.txt则用:
tar -xvf file.tar.bz2 file2.txt
tar -xvf file.tar.bz2 ,后面不跟文件名,就会解压整个file.tar.bz2包。

  .tar.gz
  解压:tar -zxvf FileName.tar.gz
  压缩:tar -zcvf FileName.tar.gz DirName

10.alias使用

时间方面 :
% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00-23)
%I : 小时(01-12)
%k : 小时(0-23)
%l : 小时(1-12)
%M : 分钟(00-59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00-60)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面 :
%a : 星期几 (Sun-Sat)
%A : 星期几 (Sunday-Saturday)
%b : 月份 (Jan-Dec)
%B : 月份 (January-December)
%c : 直接显示日期与时间
%d : 日 (01-31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001-366)
%m : 月份 (01-12)
%U : 一年中的第几周 (00-53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0-6)
%W : 一年中的第几周 (00-53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000-9999)

BSH
alias cdesb='cd /home/was/task-ai/app/opp'
alias cdd='cd $OLDPWD'
alias cdesb='cd /home/was/task-ai/app/opp'
alias cd...="cd $OLDPWD"

  alias sqlplus='rlwrap sqlplus'
  alias rman='rlwrap rman'



CSH , 这里`date +%Y%m%d`表示执行命令,加在拼接一个文件名 alias elog tail
-f /home/aiesb1/app/oppf/log/opp_esb-`date +%Y%m%d`.log alias cdr cd $HOME/release cd... 返回cd的上一个目录

11.cp 命令参数不覆盖

shell>awk 'BEGIN { cmd="cp -i a1 a2"; print "n" |cmd; }'

12.查看文件内某时间段内的部分,用于日志很多,且日志开头会打印时间的场景,使用awk

# cat bbs.ttlsa.com.access.log | awk '$4 >="[21/Jul/2014:14:37:50" && $4 <="[21/Jul/2014:14:38:00"'

13.grep使用

从文件内容查找匹配指定字符串的行: 
$ grep "被查找的字符串" 文件名 
从文件内容查找与正则表达式匹配的行: 
$ grep –e “正则表达式” 文件名 
查找时不区分大小写: 
$ grep –i "被查找的字符串" 文件名 
查找匹配的行数: 
$ grep -c "被查找的字符串" 文件名 
从文件内容查找不匹配指定字符串的行: 
$ grep –v "被查找的字符串" 文件名 
从根目录开始查找所有扩展名为.txt的文本文件,并找出包含"phpzixue.cn"的行 
find . -type f -name "*.txt" | xargs grep "phpzixue.cn" 

14.查找包含start*.sh 不包含 opf  _all 的文件并打印出来

find ./ -name "start*.sh" ! -name "*opf*" ! -name "*_all*" -print

15.取某个行区间的数据

sed -n '138438,239766p' 20141205.log  test1205.log

16.top交互命令

在top 命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了s 选项, 其中一些命令可能会被屏蔽。
h 显示帮助画面,给出一些简短的命令总结说明
k 终止一个进程。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序
r 重新安排一个进程的优先级别
S 切换到累计模式
s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s
f或者F 从当前显示中添加或者删除项目
o或者O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中

其他:

Linux crontab 命令格式与详细例子
*  *  *  *  *  command
分 时  日  月  周  命令

JAVA:

Seconds
Minutes
Hours
Day-of-Month
Month
Day-of-Week
Year (可选字段)
'*'字符表示指定字段的所有可能值,比如Day-Of-Week字段的*表示每天。

下面是一些示例:
创建一个每五分钟激活一次的触发器:
java 代码
"0 0/5 * * * ?"

创建一个触发器在当前分钟的第10秒后,每五分钟执行一次,比如上午10:00:10 am,上午10:05:10:
java 代码
"10 0/5 * * * ?"

创建一个触发器,在每个星期三和星期五的10:30, 11:30, 12:30, 和13:30执行。
java 代码
"0 30 10-13 ? * WED,FRI"

创建一个触发器,在每个月的第5天和第20天的上午8点到10点执行,每隔半小时执行一次,注意上午10:00不会执行:
java 代码
"0 0/30 8-9 5,20 * ?"