一、Linux图解:

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


查看系统调用说明

man 2 查看系统调用
man3查看公共库函数
公共函数库对系统调用封装,简单调用用系统调用, 复杂函数用公用函数库.

查看shell版本

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

二、常用命令:
ls

cat
vi
vim
date
cal

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

cd

pwd

mkdir,加上-p递归创建目录
cp
rm
mv:改文件夹名称,如果没有指定的目录就是改文件夹名称,如果有就是移动文件夹,改文件名称,如果目标不是文件夹,就是改变文件名。
移动文件
修改文件名:
tac与cat显示顺序相反,cat正向显示,tac倒序显示

显示并显示行号:
more
按空格到下一页。

less
可以前后翻页
tail
查看最后20行
head
查看前十行
touch
创建文件
mkdir
创建文件夹
tar
解压命令
三、如何查找特定的文件:
find
语法 find path [ options ] params
面试里常用的方式
- find ~ -name “target3.java” : 精确查找文件
- find ~ -name “target*” :模糊查找文件
- find ~ -iname ”target*” :不区分文件名大小写去查找文件
- man find :更多关于find指令的使用说明
当前目录搜索[root@localhost ~]# find -name "target3.java"全局搜索[root@localhost ~]# find / -name "target.java"/root/target.java查找所有target开头的文件[root@localhost ~]# find ~ -name "target*"/root/target.java忽略大小写进行查找[root@localhost ~]# find ~ -iname "target.*"/root/target.java
man find 查看更多用法
四、检索文件内容
4.1 grep
grep
语法:grep [options] pattern file
- 全称: Global Regular Expression Print
- 作用:查找文件里符合条件的字符串
[root@localhost ~]# grep "moo" target*
mooc

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

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

查找文件名中包含mooc的文件
[root@localhost ~]# find / | grep "moo"


没办法把左边的错误信息当做输入。
使用管道注意的要点
- 只处理前一个命令正确输出,不处理错误输出
- 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
- sed,awk,grep,cut,head,top,less,more,wcjoin,sort,split等
grep -o ,做信息过滤

查询日志的某一行:-o代表的是只输出匹配的选项。
[root@localhost ~]# grep 'mo' target.java | grep -o 'engine\[[0-9a-z]*\]'
grep -v过滤掉指定要过滤的内容:
查看系统中的进程
查看进程
[root@localhost ~]# ps -ef | grep mysql

我们查询的时候也会生成一个进程,我们需要过滤掉这个进程:
[root@localhost ~]# ps -ef | grep mysql | grep -v "grep"

面试里常用的方式
- grep ‘partial[\true]‘ bsc-plat-al-data.info.log
- grep -o ‘engine[[0-9a-z]*]‘
- grep -V ‘grep’
五、对文件内容做统计

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

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

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

指定自定义的分割符

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

统计partial[true]的结果。


六、批量替换文件内容

批量替换文件内容将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 ~]#

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

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

将”.”替换成分号,s/.$/\;/ , 这里的$符代表以什么结尾。
将jack替换成me,可以发现并没有完全的进行替换,因为没有加入-g,加入-g就是全局替换。如果不加上-g,一行中只替换首次符合要求的字符。


sed还有依据规则删除某行的作用。
删除空行。
删除Integer所在的行

