查询命令
find
* find [指定查找目录] [查找规则] [查找完后执行的action] * find ~/.m2 -name “*.lastUpdated” -exec grep -q “Could not transfer” {} \; -print -exec rm {} \;(查找以lastUpdated 为后缀的文件中包含 “Could not…”的文件,打印并删除他)(`*`表示 通配任意的字符;?表示 通配任意的单个字符) * -iregex/regex (后面跟正则表达式,i忽略大小写) * -user //根据属主来查找文件 * -group //根据属组来查找文件 * -a and -o and –not //连接多个条件,-a是与关系,-o是或关系,-not是取反 * -atime;-mtime;-ctime;-amin;-mmin;-cmin //这里atime,mtime,ctime就是分别对应的“最近一次访问时间”“最近一次内容修改时间”“最近一次属性修改时间”,这里的atime的单位指的是“天”,amin的单位是分钟 ( find /tmp –atime +5 //表示查找在五天内没有访问过的文件;find /tmp -atime -5 //表示查找在五天内访问过的文件) * -type //根据文件类型来查找文件(f 普通文件;d目录文件; l 链接文件; b块设备文件;c 字符设备文件; p 管道文件;s socket文件) * -size //根据文件大小来查找文件(“find /tmp -size 2M”查找在/tmp 目录下等于2M的文件;+2M,大于;-2M,小于) * -perm //根据文件权限来查找文件(“find /tmp -perm 755 ” 查找在/tmp目录下权限是755的文件) * [查找完执行的action] [ “-print”默认情况下的动作;”-ls”查找到后用ls 显示出来;”-ok [commend] “查找后执行命令的时候询问用户是否要执行;” -exec [commend]”查找后执行命令的时候不询问用户,直接执行] * “find /tmp -atime +30 –exec rm –rf {} \;” //删除查找到的超过30天没有访问过文件 * “find /tmp -iregex “.*.[sh,bat]” -exec cp {} {}.old \;” // 替代查找到的文件,保留源文件(mv不保留) |
locate
locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。 locate [option] [pattern] |
less
less 工具是对文件或其它输出进行分页显示的工具(建议结合管道针对其他输出使用,文件vim处理),提供前后翻页功能,以及搜索功能。 -b [缓冲区大小] 设置缓冲区的大小 -e 当文件显示结束后,自动离开 -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -g 只标志最后搜索的关键词 -i 忽略搜索时的大小写 -m 显示类似more命令的百分比 -N 显示每行的行号 -o [文件名] 将less 输出的内容在指定文件中保存起来 -Q 不使用警告音 -s 显示连续空行为一行 -S 行过长时间将超出部分舍弃 -x [数字] 将“tab”键显示为规定的数字空格 /字符串:向下搜索“字符串”的功能 ?字符串:向上搜索“字符串”的功能 n:重复前一个搜索(与 / 或 ? 有关) N:反向重复前一个搜索(与 / 或 ? 有关) b 向后翻一页 d 向后翻半页 h 显示帮助界面 Q 退出less 命令 u 向前滚动半页 y 向前滚动一行 空格键 滚动一页 回车键 滚动一行 [pagedown]: 向下翻动一页 [pageup]: 向上翻动一页 |
which
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 |
whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。(eg:whereis -b tomcat) 和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下是一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。 |
tail
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. tail[必要参数][选择参数][文件] -f 循环读取 -q 不显示处理信息 -v 显示详细的处理信息 -c[数目] 显示的字节数 -n[行数] 显示行数 –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束. -q, –quiet, –silent 从不输出给出文件名的首部 -s, –sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒 |
grep
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来 grep [选项]… PATTERN [FILE]… -n 在显示符合范本样式的那一列之前,标示出该列的编号。 -q 不显示任何信息。 -R/-r 此参数的效果和指定“-d recurse”参数相同。 -e [范本样式] 指定字符串作为查找文件内容的范本样式。 -E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。 -f [范本文件] 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。 grep 支持的正则语法 ^ 锚定行的开始 如:’^grep’匹配所有以grep开头的行。 $ 锚定行的结束 如:’grep$’匹配所有以grep结尾的行。 . 匹配一个非换行符的字符 如:’gr.p’匹配gr后接一个任意字符,然后是p。 * 匹配零个或多个先前字符 如:’*grep’匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。 [] 匹配一个指定范围内的字符,如’[Gg]rep’匹配Grep和grep。 [^] 匹配一个不在指定范围内的字符,如:’[^A-FH-Z]rep’匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 \(..\) 标记匹配字符,如’\(love\)’,love被标记为1。 \ 锚定单词的开始,如:’\匹配包含以grep开头的单词的行。 \> 锚定单词的结束,如’grep\>’匹配包含以grep结尾的单词的行。 x\{m\} 重复字符x,m次,如:’0\{5\}’匹配包含5个o的行。 x\{m,\} 重复字符x,至少m次,如:’o\{5,\}’匹配至少有5个o的行。 x\{m,n\}重复字符x,至少m次,不多于n次,如:’o\{5,10\}’匹配5–10个o的行。 \w 匹配文字和数字字符,也就是[A-Za-z0-9],如:’G\w*p’匹配以G后跟零个或多个文字或数字字符,然后是p。 \b 单词锁定符,如: ‘\bgrep\b’只匹配grep。 eg: ls -R 查找目录 | grep “文件名所带字符”(递归查找当前文件夹下,指定文件名) grep -R “word” “dir”(递归查文件夹下所有文件中的”word“) grep -E “[1-9]+” 等于 egrep “[1-9]+” |
Other Command
chmod
chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法:一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。 chmod [-cfvR] [–help] [–version] mode file 权限范围: u :目录或者文件的当前的用户 g :目录或者文件的当前的群组 o :除了目录或者文件的当前用户或群组之外的用户或者群组 a :所有的用户及群组 权限代号: r :读权限,用数字4表示 w :写权限,用数字2表示 x :执行权限,用数字1表示 - :删除权限,用数字0表示 s :特殊权限 ([特殊权限](http://alan-hjkl.iteye.com/blog/1526858)) |
tar
Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。 常见解压/压缩命令 tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName .tar.gz 和 .tgz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz DirName .bz2 解压1:bzip2 -d FileName.bz2 解压2:bunzip2 FileName.bz2 压缩: bzip2 -z FileName .tar.bz2 解压:tar jxvf FileName.tar.bz2 压缩:tar jcvf FileName.tar.bz2 DirName .bz 解压1:bzip2 -d FileName.bz 解压2:bunzip2 FileName.bz 压缩:未知 .tar.bz 解压:tar jxvf FileName.tar.bz 压缩:未知 .Z 解压:uncompress FileName.Z 压缩:compress FileName .tar.Z 解压:tar Zxvf FileName.tar.Z 压缩:tar Zcvf FileName.tar.Z DirName .zip 解压:unzip FileName.zip 压缩:zip FileName.zip DirName .rar 解压:rar x FileName.rar 压缩:rar a FileName.rar DirName |
netstat
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 netstat [-acCeFghilMnNoprstuvVwx][-A [网络类型]][–ip] 命令参数: -a或–all 显示所有连线中的Socket。 -A[网络类型]或–[网络类型] 列出该网络类型连线中的相关地址。 -c或–continuous 持续列出网络状态。 -C或–cache 显示路由器配置的快取信息。 -e或–extend 显示网络其他相关信息。 -F或–fib 显示FIB。 -g或–groups 显示多重广播功能群组组员名单。 -h或–help 在线帮助。 -i或–interfaces 显示网络界面信息表单。 -l或–listening 显示监控中的服务器的Socket。 -M或–masquerade 显示伪装的网络连线。 -n或–numeric 直接使用IP地址,而不通过域名服务器。 -N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。 -o或–timers 显示计时器。 -p或–programs 显示正在使用Socket的程序识别码和程序名称。 -r或–route 显示Routing Table。 -s或–statistice 显示网络工作信息统计表。 -t或–tcp 显示TCP传输协议的连线状况。 -u或–udp 显示UDP传输协议的连线状况。 -v或–verbose 显示指令执行过程。 -V或–version 显示版本信息。 -w或–raw 显示RAW传输协议的连线状况。 -x或–unix 此参数的效果和指定”-A unix”参数相同。 –ip或–inet 此参数的效果和指定”-A inet”参数相同。 状态说明: LISTEN:侦听来自远方的TCP端口的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了) SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了) ESTABLISHED:代表一个打开的连接 FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认 FIN-WAIT-2:从远程TCP等待连接中断请求 CLOSE-WAIT:等待从本地用户发来的连接中断请求 CLOSING:等待远程TCP对连接中断的确认 LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击) TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认 CLOSED:没有任何连接状态 eg: netstat -apu 显示UDP端口号的使用情况 netstat -a | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ 显统计机器中网络连接各个状态个数 netstat -nat | grep “192.168.120.20:16067” |awk ‘{print $5}’|awk -F: ‘{print $4}’|sort|uniq -c|sort -nr|head -20查看连接某服务端口最多的的IP地址 netstat -anpt | grep ‘:16064’找出运行在指定端口的进程 |
ps
ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。 命令参数: -a 显示同一终端下的所有程序 -A 显示所有进程 c 显示进程的真实名称 -N 反向选择 -e 等于“-A” e 显示环境变量 f 显示程序间的关系 -H 显示树状结构 r 显示当前终端的进程 T 显示当前终端的所有程序 u 指定用户的所有进程 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的行程 -C【命令】 列出指定命令的状况 –lines[行数]每页显示的行数 –width[字符数] 每页显示的字符数 –help 显示帮助信息 –version 显示版本显示 linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) ps工具标识进程的5种状态码: D 不可中断 uninterruptible sleep (usually IO) R 运行 runnable (on run queue) S 中断 sleeping T 停止 traced or stopped Z 僵死 a defunct (”zombie”) process 输出含义: F 代表这个程序的旗标 (flag), 4 代表使用者为 super user S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍 UID 程序被该 UID 所拥有 PID 就是这个程序的 ID ! PPID 则是其上级父程序的ID C CPU 使用的资源百分比 PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍 NI 这个是 Nice 值,在下一小节我们会持续介绍 ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 “-“ SZ 使用掉的内存大小 WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作 TTY 登入者的终端机位置 TIME 使用掉的 CPU 时间。 CMD 所下达的指令为何 eg: ps -u root 显示指定用户信息 ps -ef 显示所有进程信息,连同命令行 ps aux 列出目前所有的正在内存当中的程序 |
watch
可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令 命令参数: -n或–interval watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。 -d或–differences 用-d或–differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。 -t 或-no-title 会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。 -h, –help 查看帮助文档 eg: watch -n 1 -d ‘pstree|grep http’ 每隔一秒高亮显示http链接数的变化情况 watch -d ‘ls -l|grep scf’ 监测当前目录中 scf’ 的文件的变化 watch -n 10 ‘cat /proc/loadavg’ 10秒一次输出系统的平均负载 |
Other Command Reference
vim
模式切换
其它模式==>普通模式 Esc 普通模式==>插入模式 i 在光标前插入 I 在行首插入 a 在光标后插入 A 在行末插入 o 在当前行之下新建行 O 在当前行之上新建行 r 替换当前字符 R 从当前字符开始替换 普通模式==>命令模式 : 普通模式==>可视模式 v ,V ,<Ctrl+v> |
插入
i 在光标之前插入 I 在一行的开头处插入 a 在光标之后追加 A 在一行的结尾处追加 o 在光标所在位置的下一行打开新行插入 O 在光标所在位置的上一行打开新行插入 |
查找
查询环境设置 :set hlsearch 打开高亮显示查找的文本 :set nohlsearch 关闭高亮显示查找的文本 :nohlsearch 关闭当前高亮显示的结果 :set incsearch 打开显示查找匹配过程 :set noincsearch 关闭显示查找匹配过程 :set ignorecase 忽略大小写 :set noignorecase 精确匹配大小写 :set nowrapscan 禁止循环查找方式 :set wrapscan 启用循环查找方式 Command /csdn 向下查找一个名称为csdn的字符串 ?csdn 向上查找一个名称为csdn的字符串 * 和 # 匹配光标当前所在的单词,移动光标到下一个匹配单词(*是下一个,#是上一个) n 表示向下继续查找前一个查找的操作(和上面的操作配合使用) N 表示向上继续查找前一个查找的操作(和上面的操作配合使用) /csdn\c 忽略大小写的查找时候,在索要查找的字符串后面加\c :%s///gn 统计当前模式匹配的次数(实际上调用了substitute命令,标志位n会抑制正常的替换操作,替换域无论为什么都是不生效的。) |
替换
:[range]s/from/to/[flags] [range] 不写 默认为光标所在的行。 . 光标所在的行。 1 第一行。 $ 最后一行。 33 第33行。 ‘a 标记a所在的行(之前要使用ma做过标记)。 .+1 当前光标所在行的下面一行。 $-1 倒数第二行。(这里说明我们可以对某一行加减某个数值来取得相对的行)。 22,33 第22~33行。 1,$ 第1行 到 最后一行。 1,. 第1行 到 当前行。 .,$ 当前行 到 最后一行。 ‘a,’b 标记a所在的行 到 标记b所在的行。 % 所有行(与 1,$ 等价)。 ?chapter? 从当前位置向上搜索,找到的第一个chapter所在的行。(其中chapter可以是任何字符串或者正则表达式。 /chapter/ 从当前位置向下搜索,找到的第一个chapter所在的行。(其中chapter可以是任何字符串或者正则表达式。 [flags] 无 只对指定范围内的第一个匹配项进行替换。 g 对指定范围内的所有匹配项进行替换。(g 放在命令末尾,表示对搜索字符串的每次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作) c 在替换前请求用户确认。 e 忽略执行过程中的错误。 eg: :s/from/to/ 将当前行中的第一个from,替换成to。如果当前行含有多个from,则只会替换其中的第一个。 :s/from/to/g 将当前行中的所有from都替换成to。 :s/from/to/gc 将当前行中的所有from都替换成to,但是每一次替换之前都会询问请求用户确认此操作。 :33s/from/to/g 在第33行进行替换操作。 :$s/from/to/g 在最后一行进行替换操作。 :%s/from/to/g 对所有行的内容进行替换。 :g/str1/s//str2/g (等于”:1,$ s/str1/str2/g“) 用字符串 str2 替换正文中所有出现的字符串 str1 :g/str1/s/str2/str3/g 用字符串 str3 替换正文中所有出现str1所在行的所有字符串 str2 |
复制粘贴
vim有12个粘贴板(某些版本大于12个),0-9,a,”,+等,其中”为默认粘贴板,+为系统剪贴板(:reg查看有没有+剪贴板,没有的话需要安装gnome) y 复制选定的内容(结合v,V命令) yy/Y 复制当前行 yw 复制当前词 2yy/y2y 两行 y$ 复制至行尾 y^ 复制至行首 “+yy 复制当前行到系统剪贴板 p 小写p代表贴至游标后(下)。 P 大写P代表贴至游标前(上)。 “+p 粘贴系统剪贴板内容 |
跳转
NG/:N 到第 N 行 gg 到第一行。(相当于1G,或 :1) G 到最后一行。 w 到下一个单词的开头。 e 到下一个单词的结尾。(若单词是由blank字符分隔,需要使用大写的E和W) % 匹配括号移动,包括 (, {, [. (需要把光标先移到括号上) 0 到行头 $ 到本行最后一个字符 ^ 到本行的第一个非blank字符 g_ 到本行最后一个不是blank字符的位置。 fa 到本行下一个为a的字符处,你也可以fs到下一个为s的字符。 t, 到本行逗号前的第一个字符。逗号可以变成其它字符。 3fa 在当前行查找第三个出现的a。 F 和 T 和 f 和 t 一样,只不过是相反方向。 hjkl(←↓↑→) 左下上右 <Ctrl+f> 下翻一页 <Ctrl+d> 下翻半页 <Ctrl+b> 上翻一页 <Ctrl+u> 上翻半页 |
选择
v 选中字符 V 选中行 Ctrl+v 选中块 区域选择 vi” 选中当前光标所在”“里的内容 va” 选中当前光标所在”“里的内容,同时包含”“ v2a” 选中当前光标(#)所在”*”ro#d“***“里的内容,同时包含”“ |
分屏
split 创建分屏 (:vsplit创建垂直分屏,:new 空白文档) <Ctrl-w><dir> dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一个,其用来切换分屏。 <Ctrl-w>+ (或 <Ctrl-w>-) 增加尺寸 |
标签页
:tabe /path/to/file.txt 在一个新的 tab 页中打开文件 :tabnew 新建一个 tab 页 :tabs 查看 tab 页列表,通过“>”显示当前窗口、“+”显示可修改的缓冲区 :tabc 关闭当前的 tab 页 :tab split 在当前缓冲区使用新的 tab 页打开文件 :tabn 切换到下一个 tab 页 :tabp 切换到上一个 tab 页 :tabr[ewind] 转到第一个 tab 页 :tabf[irst] 与上一命令作用相同 |
More Command
d 删除选中内容 x 剪切当前字符 r 替换光标所在字符 u 撤销 Ctrl+r 撤销撤销 gU 选中内容变大写 gu 选中内容变小写 gD 跳转到当前word第一次出现的位置,可用于局部变量的定义处查找 dd 删除当前行 Ctrl+n,Ctrl+p 自动补全 J 合并行 ” 跳转到光标上次停靠的地方, 是两个’, 而不是一个” mx 设置书签,x只能是a-z的26个字母 `x 跳转到书签处(“`”,反引号,1左边的键) ‘x 跳转到书签所在行的首字符(“`”,引号) > 增加缩进,”x>”表示增加以下x行的缩进 < 减少缩进,”x< “表示减少以下x行的缩进 :!<命令> 临时切换到Shell执行命令 |