最常见的shell脚本Bash(Bourne Again Shell)是sh(Bourne Shell)的增强版,shell是用于让用户与操作系统kernel沟通的一个界面软件。
查看系统上可用的shell程序:
cat shells

| 命令 | 用法 | 示例 |
|---|---|---|
| history | 查询历史 | |
| alias | 查询命令别名,设置命令别名 | alias *name* |
| type | 查询命令是否为bash的内置命令 | type [-tpa] *name* |
| echo | 打印变量 | echo $var |
| unset | 重置变量 | unset var |
| $n | 获取参数 | n=1时就为第一个参数 |
| $? | 上一次的返回值 | |
| set | 观察或定义环境变量 | 不含参数时打印当前环境变量和脚本,含有参数时定义某个环境变量 |
| locale | 查看语言 | |
| export | export后的变量可以被当前shell进程的子进程所使用 |
双引号与单引号:双引号可以保留变量的含义,单引号会将变量名变成字符串失去变量含义
反单引号:在反单引号之内的命令会被先执行,其结果将作为外部的输入信息
| 命令 | 用法 | 示例 |
|---|---|---|
| read | 读取来自键盘输入的变量 | read [-pt] *var* |
| declare | 声明变量的类型(-a:array,-i:integer,-x:export为环境变量,-r:readonly) | declare [-aixr] *var* |
| unlimit | 限制文件系统或程序 | unlimit [-SHacdfltu] [配额] |
| ${变量#替换文字} | 删除符合替换文字的最短环境变量 | |
| ${变量##替换文字} | 删除符合替换文字的最长环境变量 | |
| source | 读入环境配置未见的命令 | source ~/.bashrc |
| cut | 管道选取命令,把一段信息中的部分给切出来 | echo ${PATH} | cut -d ':' -f 3,5 |
| grep | 管道选取命令,分析并取出有我们想要的信息的所有内容 | grep --color=auto ‘MANPATH’ /etc/man_db.conf |
| sort | 排序命令 | sort [-fbMnrtuk] [文件或输入] |
| wc | 统计多少字 -w 多少行 -l 多少字符-m | wc [-lwm] |
| uniq | 排序后仅显示一个 | uniq [-ic] |
| tee | 双向重定向 | tee [-a] file |
| 通配符/特殊符号 | 意义 |
|---|---|
| * | 代表0到无穷多个任意字符 |
| ? | 代表一个任意字符 |
| [ ] | 代表一定有一个在括号内的字符,但不是任意字符,例如[abc]代表有abc种任意一个 |
| [^] | 代表一定有个字符,但排除括号内字符 |
| | 管道,分割两个管道命令 |
| $ | 使用变量前导符 |
| & | 把当前任务变成后台任务,bg可以切换回来 |
| >,>> | 数据流重定向,输出定向,分别是替换和累加 |
| <,<< | 数据流重定向,输入定向 |
| ( ) | 括号内为子shell的开始与结束 |
字符转换命令
| 命令 | 用法 | 示例 |
|---|---|---|
| tr | 删除-d或替换-s一段文字 | tr [-ds] SET1 ... |
| col | 把tab替换为空格 | col -x |
| join | 若两个文件有相同数据行则加在一起 | join [-ti12] *file1* *file2* |
| paste | 两个文件每行用tab分隔直接贴在一起 | paste -d *file1* *file2* |
| expand | 把tab替换为空格 | expand [-t] *file* |
| split | 大文件划分为小文件 | split [-bl] *file* PREFIX |
| xargs | 参数代换 |
命令执行判断
cmd1 && cmd2:cmd1执行结束且返回0(正确)开始执行cmd2,返回非0(错误)不执行cmd2.
cmd1 || cmd2:cmd1执行结束,正确,不执行cmd2;错误,执行cmd2
多文件日志定位
find ./ -type f -name "*.log" |xargs grep "keyword"
确定行数
cat -n 01.log |grep "Login"
获取日志内容
cat -n 01.log |tail -n +45100 |head -n 100 //tail一般为了日志完整会选择行号减小一定值
本文详细介绍了Bash shell脚本的基本用法,包括历史查询、命令别名、变量管理、参数传递、环境变量、文件操作、通配符与特殊符号、字符转换等。深入探讨了alias、echo、unset、read、declare、unlimit、source等核心命令及其实例应用。适合shell初学者和进阶者阅读。
3571

被折叠的 条评论
为什么被折叠?



