- shall编程第一行
第一行制定了执行该脚本所用的语言
#!/bin/bash
- 定义变量
- 等号两边不能有空格
- 单引号表示字符串,双引号表示特殊含义
- 变量可以用双引号引起来,主要是为了区分变量的边界
#!/bin/bash
name='xul_test'
echo $name
基本的重定向
- 输出
将标准输出,输出到当前文件夹下的test.t文件
- 输出
ls /usr/local > ./test.t //覆盖写
ls /usr/local >> ./test.t //已追加的形式输出
- 输入
将标准输入改为从文件输入
- 管道
ls /usr/local | grep bin
// -i 忽略大小写是
ls /usr/local | grep BIN
// -V 显示不匹配的行
ls /usr/local | grep -v bin
//-n 列出目标所在的行号
ls /usr/local | grep -n bin
//-c 列出匹配所在的总行数
ls /usr/local | grep -c bin
shell中的特殊字符
shell 中的通配符:
*: 代表 0 个或者多个任意字符
?: 代表一定有一个的任意字符
[]: 代表一定有一个在括号内的字符(非任意字符)。例如[abcd]代表一定有一个字符,可能是 abcd 这四个选项的任意一个。
[-]:若邮件韩在括号内时,代表在编码顺序内的所有自负。例如:[0-9]代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的。
[^]: 若括号内的第一个字符为指数字符(^),那表示反向选择,例如:[^abc]代表一定有一个字符,只要是非 abc 的其他字符就可以。shell中的特殊字符:
#:注释字符
**:将特殊字符或者通配符还原成一般字符
|:管道符,分割两个管线命令的界定
;:连续命令下达分隔符
~:用户的家目录
$:放在变量前面,正确使用变量
&:工作控制,将命令编程背景下工作
!:非(!)的意思,逻辑运算符
>,>>:输出重定向,分别是覆盖和追加
<,<<:输入重定向
‘’:单引号,不具有变量置换的功能
“”:双引号,具有变量置换的功能
():在中间的为子 shell 的起始与结束
{}:在中间为命令块的组合shell 中正则表达式的控制字符
^:匹配行首位置
$:匹配行尾位置
.:匹配任意祖父
:对之前的匹配整体或字符匹配任意次(包括 0 次)
\?:对\?之前的匹配整体或字符匹配 0 次或 1 次
{n}: 对 \ { 之前的匹配整体或字符匹配 n 次
{m,}: 对 \ { 之前的匹配整体或字符匹配至少 m 次
{m,n}: 对 \ { 之前的匹配整体或字符匹配 m 到 n 次
[abcdef]: 对单字符而言匹配[]中的字符
[a-z]: 对单字符而言,匹配任意一个小写字母
[^a-z]:不匹配括号中的内容