《剑指Java面试-Offer直通车》--Linux

目录

一、Linux体系结构

二、查找特定文件

三、检索文件内容

四、对文件内容做统计

五、批量替换文件内容

推荐资料


一、Linux体系结构

体系结构主要分为用户态(用户上层活动)和内核态。

Linux启动时会先启动内核即Kernel。内核本质是一段管理计算机硬件设备的程序,包括cpu、内存空间、硬盘接口、网络接口等等。所有计算机操作都要通过内核传递给硬件。

用户态即上层应用程序的活动空间。应用程序的执行必须依托内核提供的资源,包括cpu资源、存储资源、IO资源等。为了使上层应用访问到这些资源,内核必须为上层应用提供访问的接口,即系统调用,是一种不能再简化的操作,类似于原子操作。一个操作系统的功能可以看作系统调用组合的结果。一个操作系统不可能做出超越系统调用的动作。

公共函数库实现对系统调用的封装,将简单的业务逻辑接口呈现给用户,方便用户调用。简单操作直接调用系统调用来访问资源,复杂操作借助库函数实现。

Shell本质上是命令解释器,下通系统调用,上通应用程序,通常充当胶水的角色。没有图形界面之前,Shell充当用户界面,当用户运行某些应用的时候,通过Shell输入命令,已建立运行程序。Shell是可编程的,可以执行符合Shell语法的文本,这样的文本称为Shell脚本。Shell语句对系统调用做了一层封装,为了方便用户和系统交互,一般一个Shell对应一个终端,终端是一个硬件设备,呈现给用户的是一个图形化窗口。

常用Shell指令:

查询目录下的文件:ls(平铺)、ll(列表)

创建文件夹 mkdir

移动 mv

拷贝 cp

删除文件夹 rm -r(递归)f(不询问) 

新建文件 touch

查看文件内容:cat (所有)、less 、more 、head、tail

编辑文件:vi、vim

ps:用来查看当前运行的进程状态,一次性查看。如果需要动态连续结果使用 top。

df:显示磁盘空间使用情况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

du:对文件和目录磁盘使用的空间的查看。

free:显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

netstat:显示各种网络相关信息。

chmod:控制文件或目录的访问权限。该命令有两种用法:一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

目前用的Shell是Linux主流中的bash,输入指令echo $SHELL查看当前Shell的版本。cat /etc/shells查看本机器支持的Shell版本。chsh -s Shell路径,切换到指定的Shell(chsh即change shell)。

Linux常用命令已知服务的端口和IP,如何找到该服务所在的位置

 

二、查找特定文件

find在指定目录下查找文件。

find 路径名 -name "XX.java":精确查找文件

find 路径名 -name "XX*":模糊查找文件

find 路径名 -iname "XX*":不区分文件名大小写去查找文件

man find:更多关于find指令的说明

(/是指根目录,所有目录最顶层的目录

~是当前用户的主目录,如果是root用户就是/root/目录,如果是其他用户/home/下用户名命名的目录)

 

三、检索文件内容

grep查找文件里符合条件的字符串,使用正则表达式搜索文本并把匹配的行打印出来。

grep “要查找的文本内容” XX*:以XX打头的所有文件中查找包含要查找内容的行,grep只会筛选出目标字符串所在的行。

不指定路径,grep从标准输入设备读取数据,系统等待输入,直到输入了要查找的文本内容。

grep -o “正则表达式”:筛选出符合正则表达式的内容。

grep -v "文本内容“:过滤掉包含相关字符串的内容。

管道操作符 | 将前面一个指令传出的正确输出信息即stdoutput的信息,传递给下一个指令作为标准的输入即stdinput

使用管道注意的要点:

1)管道命令只处理前一个命令正确的输出,不处理错误的输出。

2)右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃。

常用来接收数据管道的命令有sed、awk、grep、cut、head、top、less、more、wc、join、sort、split等

 

四、对文件内容做统计

awk一次读取一行文本,按输入分割符进行切片,切成多个组成部分。将切片直接保存在内建的变量中,$1,$2...引用指定的变量可以显示指定的切片($0表示行的全部)。支持对单个切片的判断,支持循环判断,默认分割符为空格。

awk '{print $1,$2}' 文件名1 文件名2:文件内容以空格分开,打印第一列和第四列(跟操作相关需要加上{})

awk '$1==条件 && $2==条件{print $0}' 文件名:打印文件中满足条件的全部行

awk '($1==条件 && $2==条件) || NR==1 {print $0}' 文件名:在上一条执行结果的基础上显示表头(NR表示从awk开始执行后按照记录分割符读取的数据次数,默认的记录分割符为换行符,所以NR是默认读取的数据行数)

awk -F "," '{print $1}' 文件名:文件是按,分隔开,打印第一列

awk '{数组名[$1]++}END{for(i in 数组名)print i "\t" 数组名[i]}' 文件名:逐行进行统计,打印第一列和第一列出现的次数,中间以制表符分开(数组名随便起,END表示扫描结束后进行什么操作)

 

五、批量替换文件内容

sed流编辑器,利用正则表达式对行进行处理做文本的编辑。

替换

sed -i 's/被替换的正则表达式/替换的目标内容/' 文件名:替换行,s表示对字符串的操作,-i表示改变文本内容,不加只是输出到终端(^表示以某某打头,$表示以某某结尾,特殊字符需要\转译)

eg:sed -i 's/\.$/\;/' 文件名 筛选出以.结尾的行替换成以;结尾

sed -i 's/被替换的正则表达式/替换的目标内容/g' 文件名:g表示全局替换,没有g只替换行中首次符合条件的字符

删除行:

sed -i '/条件/d' 文件名

eg:sed -i '/^ *$/d' 文件名 删除文件中空行(d表示删除符合条件的行)

sed指令还可以移动和搜索数据

 

推荐资料

《操作系统原理》、《鸟哥的Linux私房菜》基础篇

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值