Linux 指令留存备忘

image

Linux 服务端开发常用指令,不包含基础指令,方便自己回顾以及熟记。(不定期更新)

基础小指令

  1. 查看端口详细信息

    1
    2
    sudo lsof -i tcp:port
    netstat -pan | grep port
  2. 杀死某个进程

    1
    sudo kill -9 PID
  3. 建立一个软连接,其实就是快捷方式,源路径文件更改后,目标路径的文件也会随着更改

    1
    ln -s /Users/Rocka/Desktop/downjoy_workspace/xa-game-idle/struct /Library/apache-tomcat-8.5.34/bin/

GREP查找

GREP(search regular expression(RE) and print out the line),使用正则表达式搜索文本,并把匹配的行打印出来。

  • 基础

    1
    grep [-option] '字符串' 文件名
    • -a: 将二进制文件也以text文件的方式搜寻数据
    • -c: 计算找到’字符串’三个字的次数
    • -i: 忽略大小写的不同,所以大小写视为相同
    • -n: 顺便输出行号
    • -v: 反向选择,也就是显示出没有’字符串’三个字内容的那一行!
    • -r: 根据文件内容递归查找目录
    • -r -l: 根据文件内容递归查找目录,但是不显示匹配的行,只显示匹配的文件
  • 规则表达式

    • ^xxx锚定行的开始 如:’^hey’匹配所有以hey开头的行。
    • xxx$锚定行的结束 如:’goodbye$’匹配所有以goodbye结尾的行。
    • .匹配一个非换行符的字符 如:’fi.d’匹配fi后接一个任意然后接一个d的字符
    • 用*匹配零个或多个先前字符 如: ‘*find’匹配所有一个或多个空格后紧跟find的行。
    • .*一起用代表任意字符
    • [] #匹配一个指定范围内的字符,如’[Ff]ind’匹配Find和find
    • [^] 匹配一个不在指定范围内的字符,如:’[^A-F]rep’匹配不包含A-F的一个字母开头,紧跟rep的行
  • 举个栗子

    1. 查询字段并列查询

      grep ‘activity|416839952’ /data/misc_apps/hero-provider-6/logs/session/statics.log.2018-11-21 | grep ‘5b1247a04f0cfa3879c0fd2b’

AWK语句

awk是一种编程语言,是一个优良的文本处理工具;用于在linux/unix下对文本和数据进行处,它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。

  • 基本语法

    1
    awk 'pattern1 {command1;command 2…; command 3}  pattern2 { command …}'
    • pattern 默认表示所有记录,pattern可以是正则表达式,也可以是关系运算表达式, command之间用;
    • comamnd可以是输出,可以是算术运算,逻辑运算,循环控制等等
  • 举个栗子

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Rocka 1977 male computer 83
    Tom Hanks 1989 male math 99
    Meg Ryan 1990 female chinese 78
    Matt Demon 1977 male economic 89
    Joey 1986 female english 99
    Channdler 1978 male math 89
    Phebe 1989 male math 99
    Monica 1990 female chinese 78
    Rose 1977 male computer 83
    Richlaer 1978 male math 89
    1. 输出1990年生的人

      1
      awk '/1990/{print $0}' s.txt

      %0代表匹配输出所有列

    2. 查找女生的成绩并且只输出姓名、成绩

      1
      awk '$3 == "female" {print $1,$5}' s.txt
    3. 查找1986和1977年出生的人,打印姓名

      1
      awk '$2~/(1986|1977)/" {print $1}' s.txt
    4. 找出大于1990年出生的人,打印姓名,年龄

      1
      awk '$2 > "1990"{print $1,$2}' s.txt
    5. 统计数学成绩大于90的个数

      1
      awk 'BEGIN{goodMath=0;}($4=="math" && $5>90){goodMath++}END{print goodMath}' s.txt
  • 复合表达式的常规写法如下:

    • ( 第一个表达式 ) & ( 第二个表达式 )
      这里只有当“第一个表达式” 和“第二个表达式”都是真值时整个表达式才为真。

    • ( 第一个表达式 ) || ( 第二个表达式)
      这里只要“第一个表达式” 为真或“第二个表达式”为真,整个表达式就为真

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器