一、Linux图解:

image.png

  • 体系结构主要分为用户态(用户上层活动)和内核态
  • 内核:本质是一段管理计算机硬件设备的程序
  • 系统调用:内核的访问接口,是一种能再简化的操作
  • 公用函数库:系统调用的组合拳
  • Shell :命令解释器,可编程

查询所有的系统调用

image.png

image.png

查看系统调用说明

image.png

man 2 查看系统调用

man3查看公共库函数

公共函数库对系统调用封装,简单调用用系统调用, 复杂函数用公用函数库.

image.png

查看shell版本

image.png

cat /etc/shells 查看系统还支持的shell版本

image.png

chsh -s 后接shell路径切换到shell上面。

二、常用命令:

ls

image.png

cat

image.png

vi

image.png

vim

image.png

date

image.png

cal

image.png

sync

:输入sync,在内存中尚未被更新的数据,就会被写入硬盘,所以这个命令在系统关机重启前输入,最好多执行几次。

image.png

cd

image.png

pwd

image.png

mkdir,加上-p递归创建目录
image.png

cp
image.png

rm
image.png

mv:改文件夹名称,如果没有指定的目录就是改文件夹名称,如果有就是移动文件夹,改文件名称,如果目标不是文件夹,就是改变文件名。
移动文件
image.png

修改文件名:
image.png

tac与cat显示顺序相反,cat正向显示,tac倒序显示

image.png

显示并显示行号:
image.png

more

按空格到下一页。

image.png

less

可以前后翻页
image.png

tail

查看最后20行
image.png

head

查看前十行
image.png

touch

创建文件
image.png

mkdir

创建文件夹
image.png

tar

解压命令
image.png

三、如何查找特定的文件:

find
语法 find path [ options ] params

面试里常用的方式

  • find ~ -name “target3.java” : 精确查找文件
  • find ~ -name “target*” :模糊查找文件
  • find ~ -iname ”target*” :不区分文件名大小写去查找文件
  • man find :更多关于find指令的使用说明
  1. 当前目录搜索
  2. [root@localhost ~]# find -name "target3.java"
  3. 全局搜索
  4. [root@localhost ~]# find / -name "target.java"
  5. /root/target.java
  6. 查找所有target开头的文件
  7. [root@localhost ~]# find ~ -name "target*"
  8. /root/target.java
  9. 忽略大小写进行查找
  10. [root@localhost ~]# find ~ -iname "target.*"
  11. /root/target.java

man find 查看更多用法

四、检索文件内容

4.1 grep

grep
语法:grep [options] pattern file

  • 全称: Global Regular Expression Print
  • 作用:查找文件里符合条件的字符串
[root@localhost ~]# grep "moo" target*
mooc

image.png

grep只会显示出关键字所在的行,如果grep没有指定要查询的关键字,那么就会等待系统标准输入流输入,也就是我们手动输入的内容。

直接使用grep “hahah”直到输出hahah才会有反应。

image.png

4.2 管道操作符|

可将指令连接起来,前一个指令的输出作为后一个指令的输入。

image.png

查找文件名中包含mooc的文件

[root@localhost ~]# find / | grep "moo"

image.png

image.png

没办法把左边的错误信息当做输入。

使用管道注意的要点

  • 只处理前一个命令正确输出,不处理错误输出
  • 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
  • sed,awk,grep,cut,head,top,less,more,wcjoin,sort,split等

grep -o ,做信息过滤

image.png

查询日志的某一行:-o代表的是只输出匹配的选项。

[root@localhost ~]# grep 'mo' target.java | grep -o 'engine\[[0-9a-z]*\]'

grep -v过滤掉指定要过滤的内容:

查看系统中的进程

查看进程
[root@localhost ~]# ps -ef | grep mysql

image.png

我们查询的时候也会生成一个进程,我们需要过滤掉这个进程:

[root@localhost ~]# ps -ef | grep mysql | grep -v "grep"

image.png

面试里常用的方式

  • grep ‘partial[\true]‘ bsc-plat-al-data.info.log
  • grep -o ‘engine[[0-9a-z]*]‘
  • grep -V ‘grep’

五、对文件内容做统计

image.png

获取切片1和切片4,获取第一列和第四列

image.png

第一列等于tcp,第二列等于1,print $0显示全部信息。

image.png

显示带有表头的数据,符合要求或者NR=1。

image.png

指定自定义的分割符

image.png

-F 以什么符号作为分隔符。

image.png

统计partial[true]的结果。

image.png

image.png

六、批量替换文件内容

image.png
批量替换文件内容将Str替换成String,/s/要替换的内容(^以某某开头)/替换的内容/ 文件名

[root@localhost ~]# vim abc.java 
[root@localhost ~]# cat abc.java 
Str
Str
Str c = new String("abc`");
[root@localhost ~]# sed 's/^Str/String/' abc.java
String
String
String c = new String("abc`");
[root@localhost ~]#

image.png

再次查看发现并没有改变,仅仅会输出到终端,如果想要改变文件内的内容需要加上-i

image.png

加了-i参数,成功改变了文件内容

image.png

将”.”替换成分号,s/.$/\;/ , 这里的$符代表以什么结尾。
image.png

将jack替换成me,可以发现并没有完全的进行替换,因为没有加入-g,加入-g就是全局替换。如果不加上-g,一行中只替换首次符合要求的字符。

image.png

image.png

sed还有依据规则删除某行的作用。
删除空行。
image.png

删除Integer所在的行
image.png

image.png