mit 6.NULL
1 课程概览与 shell cd - 返回进入此目录之前所在目录
find用法:Linux find 命令
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
将当前目录及其子目录中的所有文件列出:
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
grep用法:Linux grep 命令 grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。
1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep test *file
2 Shell 工具和脚本 视频英语口音听不懂,直接看note
shebang:
在计算领域中,Shebang(也称为 Hashbang )是一个由井号和叹号构成的字符序列 #! ,其出现在文本文件的第一行的前两个字符。 在文件中存在 Shebang 的情况下,类 Unix 操作系统的程序加载器会分析 Shebang 后的内容,将这些内容作为解释器指令,并调用该指令,并将载有 Shebang 的文件路径作为该解释器的参数。 例如,以指令#!/bin/sh开头的文件在执行时会实际调用/bin/sh程序(通常是 Bourne shell 或兼容的 shell,例如 bash、dash 等)来执行。这行内容也是 shell 脚本的标准起始行。 由于 # 符号在许多脚本语言中都是注释标识符,Shebang 的内容会被这些脚本解释器自动忽略。 在 # 字符不是注释标识符的语言中,例如 Scheme,解释器也可能忽略以 #! 开头的首行内容,以提供与 Shebang 的兼容性。
#!/usr/bin/env python 有什么用?
当你执行 env python 时,它其实会去 env | grep PATH 里(也就是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin )这几个路径里去依次查找名为python的可执行文件。
那么对于这两者,我们应该使用哪个呢?
个人感觉应该优先使用
查看命令如何使用 最常用的方法是为对应的命令行添加-h 或 --help 标记。另外一个更详细的方法则是使用man 命令。man 命令是手册(manual)的缩写,它提供了命令的用户手册。 有时候手册内容太过详实,让我们难以在其中查找哪些最常用的标记和语法。 TLDR pages 是一个很不错的替代品,它提供了一些案例,可以帮助您快速找到正确的选项。
查找 shell 命令 history 命令允许您以程序员的方式来访问shell中输入的历史命令。这个命令会在标准输出中打印shell中的里面命令。如果我们要搜索历史记录,则可以利用管道将输出结果传递给 grep 进行模式搜索。 history | grep find 会打印包含find子串的命令。
函数 marco 和 polo 我喜欢用fish而不是bash,故我使用fish的格式编写函数 Fish Shell 精简手册 Fish for bash users
source命令是一个内置的shell命令,用于从当前shell会话中的文件读取和执行命令。source命令通常用于保留、更改当前shell中的环境变量。简而言之,source一个脚本,将会在当前shell中运行execute命令。
#!/usr/bin/env fish
function marco
set -gx MARCO (pwd)
end
function polo
cd $MARCO
end
set -gx PAGER less
set -l alocalvariable foo
find / -name "*.html" | xargs -d '\n' zip test.zip
find . -type f -print0 | xargs -0 ls -lt | head -30
xargs
-0:items are separated by a null, not whitespace;
ls
-t sort by modification time, newest first
-l use a long listing format
编辑器 (Vim) 了解基本用法即可,我用vscode :q 退出(关闭窗口) :w 保存(写) :wq 保存然后退出
数据整理 太复杂了,应该用不到,看点简单的就成 sed命令进行正则匹配替换
seq 10 | sort -r --numeric-sort
awk用于处理文本
awk '{print $1}' test.sh
|