一、常用快捷键
Tab键可补全命令和文件内容^c 终止运行的程序^z 前台运行的程序挂起到后台^d 退出^l 清屏^a 光标移动到命令行最前端^e 光标移动到命令行后端^u 删除光标前所有字符^k 删除光标后所有字符^r 搜索历史命令
二、常用通配符
* 匹配0或多个任意字符? 匹配任意单个字符[list] 匹配[]中任意单个字符或一组单个字符 [a-z][!list] 匹配除[]中包含的任意单个字符{string1,string2,...} 匹配{}中任意单个或多个字符 {1..8}bash中的引号:双引号“” 把引号内容看成整体,允许$调用其变量值单引号‘’ 把引号内容看成整体,禁止调用变量值,shell特殊符号视为普通字符反撇号`` 与$()一样,引号、括号里命令优先,如存在嵌套,反撇号无法使用
三、shell基础知识
shell种类: cat /etc/shells/bin/sh/bin/bash 默认shell/sbin/nologin 非交互,不能登录系统/bin/dash 功能相对较少/bin/csh 具有C风格的shell/bin/tcsh csh增强版,兼容cshshell脚本基本写法:#!/bin/bash或 #!/bin/env 解释器执行方式: chmod +x shell.sh./shell.sh 或直接绝对路径非标准方式 bash shell.sh或 source shell.shbash +x shell.sh 查看执行过程bash +n shell.sh 检查脚本语法问题
四、变量
变量名=变量值A=hello 定义变量值echo $A 调用变量或 echo ${A}unset A 撤销变量变量定义规则:1、变量名严格区分大小写2、变量名不能有特殊字符 # ?@ !3、变量名不能以数字开头4、等号两边不能有空格5、变量名尽量见名知意变量定义方式:1、 A=1234567echo ${A:2:4} 输出 3456 调用变量的一部分,从第三个字符截取4个字符2、`` $() 可以把命令结果赋值给变量3、交互式定义变量 readread [选项] 变量名-p 定义提示用户信息-n 定义字符数-s 不显示输入内容-t 定义超时时间,秒read -p \"Input your name:\" nameread -s -p \"Input your password:\" passread -n 5 -p \"Input your name:\" name 限制用户名5个字符read -t 3 -p \"Input your name:\" name 限制输入时间3秒read -p \"Input your ip:\" IP < ip.txt 变量引用文件内容4、定义有类型的变量(declare)declare 选项 变量名=变量值-i 将变量作为整数 declare -i A=123-r 定义只读变量 declare -r B=hello-a 定义普通数组-A 定义关联数组-x 变量通过环境变量导出 declare -x AAA=123 相当于 export AAA=1235、本地变量与全局变量变量名=变量值 本地变量(只针对当前进程有效)env 查看当前用户的环境变量set 查看本地变量和环境变量export 导出环境变量系统启动后依次读取文件顺序:/etc/profile 全局变量,所有用户所有bash$HOME/.bash_profile 当前用户环境变量,用户登录时读取$HOME/.bashrc 当前用户bash信息,用户登录时读取/etc/bashrc 全局bash信息,别名,所有用户生效$HOME/.bash_logout 当前用户退出当前shell最后读取source 更改文件、变量生效系统变量$? 上一条命令的返回值$0 表示执行程序或脚本名$# 表示脚本后面参数个数$* 表示脚本后面所有参数,整体输出,每个变量空格隔开$@ 脚本后面所有参数,参数独立,全部输出$1~$9 脚本后面位置参数${10}~${n} 扩展位置参数$$ 当前进程号$! 当前终端后台运行任务的最后一个进程号!$ 调用最后一条命令的参数
五、四则运算
四则运算符号:$(( ))$[ ]exprletbci++ 先赋值,再运算++i 先运算,再赋值