函数传参
shell中如何写一个函数呢?
这个问题, 首先说, shell中的函数, 在方法体里, 没有形参, 都是通过默认的特殊值获得的, 比如$1, $2, 参数的数量用.
而传参呢, 也是通过方法名后面跟参数来实现的.
数字是直接量,而"abc",即带引号的是字符串. 没有引号的字符串也是直接量.
grep 查找命令
如何查找多个文件中的关键词呢?
相当于跨文件查找, 一般我们在vscode, 或者其他重量级IDE里面都有用到跨文件查找, 但是一个简单的shell命令也可以办到.
这个关键字就是 grep, grep “关键字” -n(显示文件名和行号) file_name(接受正则表达式)
那么接下来, 如何递归的跨文件查找含有某个关键字的行呢? 下面会介绍, 请继续看.
grep命令也非常的简单, 它的基本用法是这样的, grep 关键字 文件名(支持正则表达式), 意思是, 去找匹配的文件里的含有关键字的那一行. grep 也支持管道用法, 但是有些不一样, grep作为管道的下游,则必须直接读取内容. 例如 ps -ef | grep python
例外是, ls | grep python 那就不行了. 我们的意思是, 根据ls查找到的文件, 去查阅里面还有 “python” 的行,其实 ls 得到的都是文件名, 自然就没有结果了.(如果这个文件夹里没有名字叫 python 的文件夹). 但是如果加上一个 xargs 命令, 就达到我们的目的了, ls | xargs grep python.
find命令
find 命令,最常用的用法是 find 目录 -name “关键字”, 如果使用正则表达式了,一律加上 双引号。*表示数量不限的通配符
因为find是不限制深度的, 会进入全部的子文件夹逐一搜索, 如果只想搜某一个层级, 使用 -d N 或者 --depth N 参数.
xargs命令
xargs命令怎么用呢?
xargs 可以把左边的命令输出值存储起来, 然后转发给下一个命令, 比如
echo “a b c” | xargs mkdir , 创建三个文件夹 a,b,c
比如 find . -name “*.md” | xargs grep “关键字” , 搜索后缀以 md 结尾的文件, 含有特定关键字的文件.
查看进程命令 ps 命令
如何查看进程命令呢?
我们说,有经典的 ps -ef, 以 linux 标准格式显示进程情况. 有 ps aux, 以 bsd(unix的一个子分支) 的形式显示进程情况.
ps [选项]
下面对命令选项进行说明:
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
a 显示终端上的所有进程,包括其他用户的进程。
r 只显示正在运行的进程。
u 以用户为主的格式来显示程序状况。
x 显示所有程序,不以终端机来区分。
ps -ef 显示出的结果:
1.UID 用户ID
2.PID 进程ID
3.PPID 父进程ID
4.C CPU占用率
5.STIME 开始时间
6.TTY 开始此进程的TTY—-终端设备
7.TIME 此进程运行的总时间
8.CMD 命令名
最后一个大礼包
查找 tomcat 进程,并且杀掉它
一个结合ps 和 xargs以及grep, awk的命令
ps -ef | grep tomcat | grep -v grep | awk ‘{print $2}’ | xargs kill -9
grep -v 的命令是排除 grep 命令本身启动的进程
diff命令
diff命令的应用场景, 其实是很少的.
如果你把一个代码改了好几个版本, 那么diff就发挥作用了.
diff -u 比较文件 基准文件
参考
[1] ps -ef 的意思
https://blog.csdn.net/persever/article/details/78739855