The Missing Semester of Your CS Education----shell工具和脚本

发布时间 2023-12-20 21:27:22作者: mikasa_ack

一.shell脚本

1.$的关键字

$0 - 脚本名

$1 到 $9 - 脚本的参数。 $1 是第一个参数,依此类推。

$@ - 所有参数

$# - 参数个数

$? - 前一个命令的返回值

$$ - 当前脚本的进程识别码

!! - 完整的上一条命令,包括参数。常见应用:当你因为权限不足执行命令失败时,可以使用 sudo !!再尝试一次。

$_ - 上一条命令的最后一个参数。如果你正在使用的是交互式 shell,你可以通过按下 Esc 之后键入 . 来获取这个值。

var=$(pwd) - 把(pwd)命令的输出赋给变量var;个人理解,$()可以把命令的输出转化为string,因此可以 echo “i am in $(pwd) now"

2.命令替换、进程替换

https://blog.csdn.net/Dreamhai/article/details/111500761
https://www.runoob.com/w3cnote/shell-process-substitution.html

二.工具

1.查看命令如何使用 tldr

2.查找文件 find fd locate

查找所有名称为src的文件夹
find . -name src -type d
查找所有文件夹路径中包含test的python文件
find . -path '/test/.py' -type f
查找前一天修改的所有文件
find . -mtime -1
查找所有大小在500k至10M的tar.gz文件
find . -size +500k -size -10M -name '.tar.gz'
删除全部扩展名为.tmp 的文件
find . -name '
.tmp' -exec rm {} ;
查找全部的 PNG 文件并将其转换为 JPG
find . -name '*.png' -exec convert {} {}.jpg ;

3.查找代码 grep

4.查找 shell 命令 history,例子:history | grep find 会打印包含find子串的命令,ctrl+R对命令历史记录进行回溯搜索,可以输入子串来进行匹配,查找历史命令行。

5.文件夹导航 fasd和 autojump ,tree, broot,nnn 或 ranger