Linux相关

Linux

导航:

  • 一. Linux的体系结构
  • 二. 其他常用命令

一. Linux的体系结构

1.1 体系结构

  • 图示:
    在这里插入图片描述

  • 解析:

    • 体系结构主要分为用户态(用户上层活动)和内核态
    • 内核: 本质是一段管理计算机硬件设备的程序
    • 系统调用:内核的访问接口,是一种能再简化的操作
    • 公用函数库: 系统调用的组合拳
    • Shell:命令解释器,可编程 [是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。它可以写shell脚本执行]
  • 命令:

    • echo $SHELL # 查看Shell版本
    • cat /etc/shells # 查看支持的Shell版本
    • chsh -s xxx # 切换到指定的shell版本上;比如: cash -s /bin/dash 或 cash -s /bin/sh 等

1.2 如何查找特定的文件

  • find
    • 语法: find path [options] params
    • 作用: 在 ** 指定目录 ** 下查找文件
    • 图示:

前面是输入命令,后面是显示了结果

  • 总结:
    • 当在本目录中查找指定的文件的时候:
      find -name "target3.java"
    • 全局搜索指定的文件的时候:
      find / -name "target3.java"
    • 模糊搜索:
      find ~ -name "target*" # 这里的~是路径,可以填其他
    • 忽略大小写:
      find ~ -iname "target*"
    • 搜索其他指令:
      man find

1.3 检索文件内容

  • grep:
    • 语法:
      grep [options] pattern file
    • 全称:
      • Global Regular Expression print
    • 作用:查找文件里符合条件的字符串
    • 示例:
      grep "moo" target* 		# 检索target开头的文件的内容中带有"moo" 的数据

1.4 管道操作符

  • 管道操作符: |
    • 描述:可将指令连接起来,前一个指令的输出作为后一个指令的输入

    • 图示:
      在这里插入图片描述

    • 操作:

      • 意义一样的命令: find ~ -name "target*" 与find ~ | grep "target"
    • 注意:

      • 使用管道只处理前一个命令的正确输出,不处理错误输出;即管道的语法以及内容要输入正确
      • 右边的命令必须能够接受标准输入流,否则传递过程中数据会被抛弃
      • sed,awk,grep,cut,head,top,less,more,wc,join,sort,split等

1.5 面试里常用的方式

  • grep ‘partial[true]’ bsc-plat-al.data.info.log’ 查找包含的某个文件并展示出来
  • grep -o ‘engine[[0-9a-z]*]’
  • grep -v ‘grep’

二. 其他常用命令

2.1 awk

  • 语法: awk [options] 'cmd' file
  • 解析:
    • 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
    • 将切片直接保存在内建的变量中,$1,$2…($0表示行的全部)
    • 支持对单个切片的判断,支持循环判断,默认分隔符为空格
  • 图示:
    在这里插入图片描述

这里的netstat.txt中的内容格式如图,而第二句: awk '{print $1,$4}' netstat.txt 将值以空格剪切,打印每行第一个空格和第四个空格前内容

  • 图示二:
    在这里插入图片描述

这里语句:awk '$1=="tcp" && $2==1{print $0}' netstat.txt 则将第一个空格和第二个空格前的值必须满足这两个条件显示;

  • 图示三:
    在这里插入图片描述

这里语句 cat test.txt 则显示这个文件的内容; awk -F "," '{print $2}' test.txt 是显示第二个以逗号分隔前的内容; 如果不使用** -F “,” **则不显示内容

2.2 统计

  • 操作:
    • 使用命令查找某个文件并排序展示出来| -o 筛选中符合正则表达式的内容:
      grep 'partial\[true\]' bsc-plat-al-data.info.log | grep -o 'engine\[[0-9a-z]*\]'
    • 展示的数据:
      在这里插入图片描述
  • 使用管道组合命令统计出现的次数:
    • 语句:
      grep 'partial\[true\]' bsc-plat-al-data.info.log | grep -o 'engine\[[0-9a-z]*\]' | awk '{enginearr[$1]++}END{for(i in enginearr)print i "\t" enginearr[i]}'
    • 显示的内容:
      在这里插入图片描述

2.3 面试里常用的方式:

  • awk ‘{print $1,$4}’ netstat.txt
  • awk ‘$1==“tcp” && $2==1 {print $10}’ netstat.txt
  • awk ‘{enginearr[$1]++}END{for(i in enginearr)print i “\t” enginearr[i]}’

2.4 批量替换文本的内容

  • sed

    • 语法: set [option] 'sed command' filename
    • 全名stream editor ,流编辑器
    • 适合用于对文本的行内容进行处理
  • 替换Str->String
    在这里插入图片描述

解析: 使用’sed ‘s/^Str/String/’ replace.java’ 替换掉的内容是一个类似视图的内容,它没有对源文件真正修改,如果需要修改则需要加 “-i” ,就是此句才行:sed -i 's/^Str/String/' replace.java

  • 对标点符号修改,将逗号替换为分号,以及替换姓名图示:
    在这里插入图片描述

解析: 这里使用: sed -i 's/\.$/\;/' replace.java 将结尾的句号替换为了分号;这里使用’sed -i ‘s/Jack/me/’ replace.java’ 将Jack替换为me,而有一小部分是没有被替换的,我们可以在最后面加个g,即可全部替换,语句为: sed -i 's/Jack/me/g' replace.java

  • 删除空格
    在这里插入图片描述

使用语句:sed -i '/^ *$/d' replace.java 即可删除空格;

  • 删除指定行如: Integer
    在这里插入图片描述

这里通过语句:sed -i '/Integer/d' replace.java删除了指定的Integer行

2.6 面试中常用的批量替换文本的语句:

  • sed -i 's/^Str/String/' replace.java
  • sed -i's/\.$/\;/' replace.java
  • sed -i's/Jack/me/g' replace.java

2.7 面试经常涉及到的Shell指令

  • find 文件检索
  • grep 文件内容检索
  • 管道操作符 | 输出结果当输入参数的联合操作
  • awk 数据统计和数据抽取
  • sed 批量编辑

2.8 跳槽过程中容易忽略的细节

  • 面试要偷偷摸摸的进行 [不要对工作造成影响,同时也要提前找下家,裸辞慎重]
  • 面试时间不要一味将就对方 [可以选择一个相对自己合适的时间]
  • 提离职要谨慎 [确保拿到Offer,且自己满意的工作]
  • 好聚好散 [有些公司会背调,回访以前自己的公司员工,交接要做好,不要离职就把怨气发在公司上面]
  • 跳槽时间衔接: 一般15号之后离职,下个月15号前入职社保不会断