附上教学视频,仅用于教学交流,
链接: https://pan.baidu.com/s/1Lo7meFHhL7sUQRKyCLH0wg 密码: dz2s
echo输出命令:
(1)输出‘\’,需要在前面加另一个\,
(2)\b :删除前一个字符
echo 'ab\bc': 输出ac
(3) \t: 插入tab,
(4) \e[1; .... \e[0m 输出颜色
echo -e '\e[1;31m abcd\e[0m'
!/bin/Bash: 标识以下的程序是shell脚本
执行方法:
1,给予执行权限直接执行,
sudo chomd 755 xx.sh
./xx.sh
2,使用bash 命令执行
bash xx.sh
#!/bin/bash
#first program
echo 'hello world'
历史命令与补全:
history命令,保存在.bash_hostory文件里
history -w (保存历史命令)
history -c (清空缓存)
!n:重复执行第n条历史命令
!!:重复执行上一条命令
!string :重复执行string开头的上一条命令
Tab键补全:按两次列出含有的多个可能补全
命令别名和快捷键:
定义别名:alias vi='vim'
执行顺序:绝对路径执行 > 别名 > bash内部命令 > $path找到的命令
快捷键:
ctr+l:清屏
ctr+c:强制终止
ctr+u:删除剪切(ctr+y粘贴回来)光标左侧所有的东西
ctr_r:搜索命令
ctr+z:暂停应用,但是还是会占用内存,没有终止
输入输出重定向:
1,输出: > 符号(覆盖) xxx > filename
>> (追加)
2,错误输出重定向 2> 2>>,(之间不能够有空格)
3,同时保存正确和错误输出: 命令 > filename 2>&1
命令 &> filename
命令 >> rightname 2>> errorname (分别保存到两个文件)
4,输入重定向:
多命令执行:
多命令执行符号:
; :没有逻辑顺序 ls ; cd /user ; date
&&:逻辑与,顺序执行 当第一条命令正确执行,才会后续执行
|| : 多个命令只执行一个 相反
管道符号: 命令1 | 命令2
连接两个命令符号,1的输出作为2的输入
grep 命令 grep -op 'String' file
op: -i 忽略大小写
-n 行
-c : 颜色
通配符和特殊符号:
? :匹配任意一个字符
* :匹配多个字符
[]: 匹配括号中的一个字符 [abc]代表必定有abc
[-]: 匹配a-z
[^]: 匹配不是括号中的字符
特殊符号:
'' :中间有特殊符号时特殊符号认不出来,当做正常符号处理
"" :中间有特殊符号可以识别
$() : 系统命令执行,结果当做变量 abc=$(date) && echo $abc
# :注释
$ :代表变量
\ :转意,将特殊符号转换为普通符号
Bash变量:
1,用户自定义变量:
命名:不能以数字开头
默认类型都是字符串,数值运算必须指定类型
变量之间等号不能空格
变量值内部包含空格需要用单引号包括 name='ab cd'
变量叠加: aa=123 aa="$aa"456
| | |
二者区别在于,用户自定义变量只在当前shell存在,而环境变量在子shell
中也有,写入配置文件后作用范围更广
| | |
2,环境变量:
export xx=xx 定义环境变量
env 查询变量
unset 删除变量
PATH: 系统所认识的路径,可以通过PATH="$PATH"yourpath的方式添加临时环境变量
提示符 :可以自定义提示符就是命令行前面一大串
3,位置参数变量:
$n $0代表命令本身,$1-9代表参数,${10}
$* 代表命令行中所有的参数
#!/bin/bash
echo $0 #命令本身
sum=$(($1+$2))
echo $sum
4,预定义变量
$?: 最后一次命令的返回值,0代表正确
$$ :当前进程号
$! :最后一个后台进程的进程号
5,从键盘接受数据
read [op] [varname]
op : -p 提示信息, -t :等待时间 -n :字符数
#!/bin/bash
read -p "please input name:" name -n 2 -s
运算符:
例如: aa=11 bb=22 cc=$aa+$bb='11+22' 字符处理所有变量
声明变量 declare [+/-] [op] varname
+,-:取消,设定变量类型
-i :整形
-x: 环境变量
aa=11 && bb=22 && declare -i cc=$aa+$bb && echo $cc (运算符旁边不能加空格)
运算工具:expr; let:
dd=$(expr $aa+$bb)
括号括起来: ff=$(($aa+$bb))
变量测试和替换:
x=${y-1}: 如果y不存在或者y=null,x=1,否则x=y;类似于C++里面的 ?: 表达式
环境变量配置文件: 每次登录系统去读取环境变量的文件,更改后才能够在每次登录都生效
如果不想重新登录 ,可以使用命令 source xxx.xxx
$PATH临时增加环境变量: PATH="$PATH"path ,但是不会写入配置文件,注销之后会失效
/etc/ 系统环境变量
~/.bashrc 用户环境变量
环境变量配置文件的作用
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
~/.bashrc
~/.bash_profile
变量存在覆盖行为,最后调用和读取的配置文件,同样的变量会覆盖前面的变量。