Linux常用开发命令
一、 将一个命令的结果作为下一个命令的参数
符号:` `
说明:反引号,在键盘的左上角,数字1的左边,不要将其同单引号(’)混淆。
功能:反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。
示例:(tomcat.pid文件中存放有容器的进程Id)
$()
说明:效果同` `,写shell脚步时看起来更加清晰。
示例:
xargs
功能:通过缓冲方式(批处理,效率比较高)并以前面命令行的输出结果作为后面命令的参数。
常用参数:
`-n`:一次传递几个参数
`-L`:一次传递几行参数
`-I`:标示参数使用位置
示例一:
示例二:
-i 参数或者-I(大写i)参数配合{},在任何位置引用前面命令的结果:
注意,加-i 参数直接用 {}就能代替管道之前的标准输出的内容;加 -I 参数 需要事先指定替换字符。
若忽略 xargs 的 options 来看的话, cm1 | xargs cm2,可以单纯看成: cm2`cm1`,因此, find .... |xargs rm 也可作 rm `find ...` 来处理;xargs由于是并发处理的,可能由于参数数量过多(成千上万),导致后面的命令执行失败,若遇此情况,可以用find .... -exec rm {} \; 替换,此命令为逐条处理。
二、 一个命令行上执行多个命令
符号 ;
说明:被分号(;)所分隔的命令会连续的执行下去,即使前面有错误的命令也会继续执行后面的命令。
示例:
符号 &&
说明:被 && 所分隔,那么命令也会一直执行下去,但是中间有错误的命令存在就不会执行后面的命令,没错就直行至完为止。
示例:
符号 ||
说明:被双竖线 || 所分隔,那么一遇到可以执行成功的命令就会停止执行后面的命令,而不管后面的命令是否正确与否。如果执行到错误的命令就是继续执行后一个命令,一直执行到遇到正确的命令为止。
示例:
三、 压缩&解压
tar
压缩:tar –cvf 文件名.tar *.jpg
-c:建立新压缩档案
-v:显示所有过程
-f:使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
解压:tar –xvf 文件名.tar
-x:解压文件。
追加:tar –rf文件名.tar *.gif
-r向压缩归档文件末尾追。将所有.gif的文件增加到 文件名.tar 的包里面去。加文件。
更新:tar -uf all.tar logo.gif
-u更新原压缩包中的文件,更新原来tar包all.tar中logo.gif文件。
查看:tar –tf all.tar
-t是列出文件的意思,列出all.tar包中所有文件。
tar.gz (只需要在tar命令上加-z即可,例如:)
压缩:tar –zcvf 文件名.tar.gz *.jpg
解压:tar –zxvf 文件名.tar.gz
-z带有gzip属性的。
zip
压缩:
把/home目录下面的mydata目录压缩为mydata.zip
zip -r mydata.zip mydata #压缩mydata目录
把/home目录下面的abc文件夹和123.txt压缩成为mydata.zip
zip -r mydata.zip abc 123.txt
解压:
把/home目录下面的mydata.zip解压到mydata目录里面
unzip mydata.zip -d mydata
把/home目录下面的mydata.zip直接解压到/home目录里面
unzip mydata.zip
把/home目录下面的abc12.zip、abc23.zip、abc34.zip同时解压到/home目录里面
unzip abc\*.zip
查看:
查看把/home目录下面的mydata.zip里面的内容
unzip -v mydata.zip
验证:
验证/home目录下面的wwwroot.zip是否完整
unzip -t wwwroot.zip
主要参数解析:
-c:将解压缩的结果
-l:显示压缩文件内所包含的文件
-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换
-t:检查压缩文件是否正确
-u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其它文件解压缩到目录中
-v:执行是时显示详细的信息
-z:仅显示压缩文件的备注文字
-a:对文本文件进行必要的字符转换
-b:不要对文本文件进行字符转换
-C:压缩文件中的文件名称区分大小写
-j:不处理压缩文件中原有的目录路径
-L:将压缩文件中的全部文件名改为小写
-M:将输出结果送到more程序处理
-n:解压缩时不要覆盖原有的文件
-o:不必先询问用户,unzip执行后覆盖原有文件
-P:使用zip的密码选项
-q:执行时不显示任何信息
-s:将文件名中的空白字符转换为底线字符
-V:保留VMS的文件版本信息
-X:解压缩时同时回存文件原来的UID/GID
gz
压缩:
把test6目录下的每个文件压缩成.gz文件:
gzip* 不保留源文件
gzip–c file >fileName.gz 保留源文件
压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz:
gzip-r log.tar
递归地压缩目录:
gzip-rv test6
这样,所有test下面的文件都变成了*.gz,目录依然存在只是目录里面的文件相应变成了*.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。
解压:
把当前目录每个压缩的文件解压,并列出详细的信息
gzip–dv * (或者用gunzip相当于gzip –d ,例如gunzip test.gz)
gzip–c file.gz>newFileName 保留源文件
递归地解压目录
gzip–dr test6
查看:
详细显示当前目录每个压缩的文件的信息,并不解压
gzip –l *
主要参数解析:
rar
压缩:
rara file.rar file1 保留源文件
rarm file.rar file1 不保留源文件
说明:如果此时abc.rar档案不存在,会自行创建abc.rar文档案,如果abc.rar档案已经存在,则将file1文件压缩进abc.rar档案中,若abc.rar档案中已存在一个file1文件,则会更新file1文件。
注意:如果只输入"rar a file1.rar"命令,而没有接文件名或目录名的话,会将当前目录下所有的文件和文件夹压缩进file1.rar文档中。这点要注意一下。
解压:
rar efile.rar
rarx file.rar
说明:假设file.rar目录中有一个名为file1的文件和一个名为test的目录,test目录中有一个名为file2的文件。使用e命令,会将abc.rar中的file1文件连同test目录下的file2文件解压到当前目录。如果想保持abc.rar目录中的目录结构请使用x命令。
删除:
rard file.rar file1
删除abc.rar档案中的file1文件。
四、 查看文件
查看全部
cat:可以一次显示整个文件,如果文件比较大,只能看到末尾部分,使用不是很方便;从第一行开始显示。
nl:同cat,显示行号。
tac:类似于cat;从最后一行开始显示。
more:可以让屏幕在显示满一屏幕时暂停,此时可按空格健继续显示下一个画面,或按Q键停止显示。
less:也可以分页显示文件,和more命令的区别就在于它支持上下键卷动屏幕,当结束浏览时,只要在less命令的提示符“: ”下按Q键即可。
od:以二进制方式显示文档内容。
示例:
cat install.log | grep “i686”| more
命令实际上是将install.log文件内的所有内容管道给grep,然后查找包含i686的文本行,最后将查找到的内容管道给more分页输出。
cat install.log | grep “i686”| less
含义也是一样只不过最后管道给的不是more而是less。
查看部分
tail:仅仅显示后面几行;tail-500f bus.log,如需逆序显示加-r
head:仅仅显示前面几行
过滤grep
只过滤匹配行,直接grep[关键字]即可(反取加-v参数),如想过滤匹配行的上下几行,规则如下:
$grep -5'parttern' inputfile //打印匹配行的前后5行
$grep -C 5'parttern' inputfile //打印匹配行的前后5行
$grep -A 5'parttern' inputfile //打印匹配行的后5行
$grep -B 5'parttern' inputfile //打印匹配行的前5行
或操作:
grep -E '123|abc' filename // 找出文件(filename)中包含123或者包含abc的行
egrep '123|abc' filename // 用egrep同样可以实现
awk '/123|abc/' filename // awk 的实现方式
与操作:
grep pattern1 files | grep pattern2 //显示既匹配 pattern1 又匹配 pattern2 的行
cat files|grep pattern1|grep pattern2 //注意利用管道的概念
其它操作:
grep -i pattern files //不区分大小写地搜索,默认情况区分大小写
grep -l pattern files //只列出匹配的文件名
grep -L pattern files //列出不匹配的文件名
grep -w pattern files //只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
grep -C number pattern files //匹配的上下文分别显示[number]行
awk
基础文本:(以下操作都围绕此文件进行)
输出某几列:(默认的列分隔符为空格)
awk '{print $1,$4}' wzp.log
awk '{printf "%-16s%-10s\n",$1,$4}' wzp.log
指定分隔符:(例如#)
awk -F \# '{print $1,$3}' wzp.log
awk 'BEGIN{FS="\#"} {print$1,$3}' wzp.log
awk -F '[#:]' '{print $1,$3,$4}' wzp.log
自定义变量:(-v)
awk -va=10 -vb=hello '{print $4,$4+a,$4b}'wzp.log
过滤符合条件的记录行:
根据运算符过滤:
awk '$4=="t2"' wzp.log
awk '$2=="INFO" &&$13>=2' wzp.log
运算符种类:
根据正则过滤:~ 表示模式开始;// 中是模式内容
awk '/t2/' wzp.log
awk 'BEGIN{IGNORECASE=1} /t2/' wzp.log
awk '$3 ~ /3/ {print $1,$2,$3}' wzp.log
根据脚本文件过滤:
awk脚本示例:
注意两个关键词BEGIN和END:
BEGIN{ 这里面放的是执行前的语句 }
END {这里面放的是处理完所有的行后要执行的语句 }
{这里面放的是处理每一行时要执行的语句}
内置变量:(可以在脚步任意地方引用)
sed
概述:
grep 更适合单纯的查找或匹配文本;awk 更适合格式化文本,对文本进行较复杂格式处理;sed 更适合编辑匹配到的文本。
语法:
sed [-hnV][-e<script>][-f<script文件>][文本文件]
举例:
实战一:例如取IP地址
实战二:取文件中间位置的内容
vi(只简单介绍常用的,简单的不说)
查找
向下查找:./
向上查找:?
定位下一个匹配下:n
删除(在命令行模式即可,不用进入编辑模式)
删除光标后一字符:x
删除光标后n字符:nx
删除光标前一字符:X
删除光标前一字符:nX
撤销(在命令行模式即可,不用进入编辑模式)
撤销上一步操作:u
恢复上一步被撤销的操作:Ctrl+r
行号
显示行号:setnumber/ set nu
取消行号:setnonumber/set nonu
光标
跳到下一单词:w(类似e)
跳到上一个单词:b
跳到文件首行:gg(同H)
跳到文件尾行:G(同L)
跳到文件第n行:nH(同nG)
跳到行首:^(同0)
跳到行尾:$
下面附上超级牛x的vi键位图:
五、 授权
chmod
Linux/Unix的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以给这三级人员授权、减权。
语法
chmod [-cfvR] [--help] [--version]mode file...
示例:
此外chmod也可以用数字来表示权限如 : chmod 777 file 与 chmod a=rwxfile效果相同;chmod ug=rwx,o=xfile 与 chmod 771 file 效果相同。详情如下:
这里要说一下chmod4755和chmod 755的区别:(1)755不用多说,即让文件所有者可读可写可执行;与文件所有者同属一个用户组的其他用户可读可执行;其它用户组可读可执行。(2)chmod 4755与chmod 755 的区别在于开头多了一位,这个4表示其他用户执行文件时,具有与所有者相当的权限。就是为了防止其他用户执行文件时,该文件可能需要访问一些只有root用户才有权访问的其它文件。因此,虽然其它用户有该文件的可执行权限,但是没有该文件关联的一些文件的可执行权限,从而不能执行该文件。这种情况下,就可以用 chmod 4755,从而让其它用户拥有了文件拥有者一般的该文件执行权限。
chown
Linux/Unix是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。
一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限可以自己的文件拥有者改设为别人。只有系统管理者(root)才有这样的权限。
示例: