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脚本示例:

   注意两个关键词BEGINEND

   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)才有这样的权限。


  

 

  示例:

  

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页