Linux 常用命令总结

Posted panpan_chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 常用命令总结相关的知识,希望对你有一定的参考价值。

查询命令

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执行命令

以上是关于Linux 常用命令总结的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用命令总结

Linux常用命令总结

Linux常用命令总结

Linux常用命令总结

Linux常用命令总结--不断补充

Linux学习总结(80)—— 开发人员最常用的 Linux 命令总结