Linux总结

Linux总结

  • Linux
    • 体系结构分为用户态(用户上层活动)和内核态
    • 内核
      • 一段管理计算机硬件设备的程序
    • 系统调用
      • 内核的访问接口,是不能在简化的操作(类似原子操作
    • 公共函数库
      • 对系统调用的封装
    • shell
      • 命令解释器 可编程交互时,一般一个shell对应一个终端
      • echo $SHELL 查看当前shell版本
      • cat /etc/shells 查看支持的shell版本
      • chsh -s 路径切换shell版本
  • Linux常用指令
    • find
      • 语法: find path [options] params
      • 作用: 在指定目录下查找文件
      • 注:若不设置路径,就在当前路径的子目录下查找
      • eg:
        • find -name "a.go"
        • find / -name "a.go"
        • find ~ -name "a*" 模糊匹配
        • find ~ -iname "a*" 忽略大小写
        • man find 查看find的用法
    • grep
      • 语法 grep [options] patttern file
      • 作用:查找文件里符合条件的字符串
      • 注:
        • 只会筛选出目标字符串所在的行
        • 若不指定文件名称,则会从标准输入中读取数据
      • eg:
        • grep "abc" fileA*
    • |
      • 管道操作符
      • 可将指令连起来,前一个指令的输出作为后一个指令的输入
        Linux总结
      • 注:
        • 只会传正确输出,若出错,则不会往后传
        • 右边命令必须能接收标准输入流,否则传递过程中数据将被抛弃
      • eg:
        • find ~ | grep "target"
        • grep 'aa\[true\]' a.log | grep -o '\[[0-9a-z]*\]' (\为转义,-o表示匹配正则)
        • grep -v "aa" (筛选出不含aa的)
    • awk
      • 语法: awk [options] 'cmd' file
      • 作用:
        • 一次读取一行文本按输入的分隔符进行切片,切成多个组成部分
        • 将切片保存在内建变量里($1,$2…$0表示全部
        • 支持对单个切片进行判断,支持循环判断
        • 默认分隔符为空格
        • 注:NR为内建变量,默认为读取的行数
        • eg
          • awk '{print $1,$4}' netstat.txt
            Linux总结
          • awk '$1=="tcp" && $2==1{print $0}' netstat.txt
          • awk '($1=="tcp" && $2==1) || NR == 1{print $0}' netstat.txt
          • awk -F "," '{print $2}' test.txt -F 以什么符号分割
          • awk ‘{arr[$1]++}END{for(i in arr)print i “\t” arr[i]}’
            • 解释: 定义arr数组,下表为$1,值为int,若果遇到下标相同的,则值++,然后遍历arr,输出下表和对应的值
            • 作用:统计次数
              Linux总结
    • sed
      • 语法:sed [option] 'sed command' filename
      • 作用:对文本内容进行处理
      • eg
        • sed -i 's/^Str/String/' replace.go
          • -i 表示会在文本中替换,不加只是在终端输出,文本不会替换
          • s 表示替换的是字符串
          • ^表示以…开头
        • sed -i 's/\.$/\;/g' test.go
          • $表示以…结尾
          • \为转义
          • g为全部替换,不加只替换每行的第一个
        • sed -i '/^ *$/d' a.go
          • d表示删除