bash篇
bash 特性汇总
文件路径命令自动补全
当你忘记路径时,按tap键会自动补全
当你忘记某个命令时,输入前几个字母按tap键会显示相关命令
别名alias
给命令一个别名,防止其他人违规操作
快捷键
ctrl + a 移动到行首
ctrl + e 移动到行尾
ctrl + u 删除光标之前的字符
ctrl + x 删除光标之后的字符
ctrl + l 清空终端内容,同于clear
通配符
历史命令记录
history 显示历史命令
语法:history [参数]
参数:
-c:清空历史命令记录。
-a:将当前会话中执行的命令追加到历史命令记录中。
-w:将历史命令记录写入历史命令文件(默认为~/.bash_history)。
-r:读取历史命令文件中的命令记录,并将其添加到当前命令历史记录中。
-n:显示最近的N条历史命令。
-p:显示以指定字符串开头的历史命令。
-s:将指定的字符串添加到命令历史记录中。
调用历史记录命令 ![命令行数]
!! 执行上一次命令
[方向键] 查询历史命令
echo 用于字符串的输出
echo $HISTSIZE
ps命令
变量含义
变量的定义与引用
单引号不能识别特殊语法,双引号能识别到特殊符号
变量与值之间不能有空格
变量的作用域
本地变量,只针对于当前的shell进程
局部变量的作用范围仅限命令行所在的shell或shell脚本文件中
环境变量
全局变量的作用范围则包括本shell进程及其子进程
用户个人配置文件 ~/.bash_profile (以个人配置文件优先加载,读取变量)
远程登陆用户特有文件 ~/.bashrc
全局配置文件 /etc/profile , /etc/bashrc ,且系统建议最好创建在 /etc/profile.d/ ,而非直接修改主文件,修改全局配置文件会影响所有登录系统的用户
检查系统环境变量的命令
set 输出所有变量,包括全局变量,局部变量
env 只显示全局变量
declare 输出所有变量(同set)
exprot 显示和设置环境变量值
撤销环境变量
unset 变量名,删除变量或函数
设置只读变量
readonly 只有shell结束,只读变量才会失效
awk
特殊变量:shell内置的特殊功效变量
特殊状态变量
$?
用法:echo $?
0 : 成功
!0: 失败
$$
$!
$_
特殊参数变量
$0 获取shell脚本文件名
$n
$#
$*
$@
自定义变量
shell子串
bash基础内置命令
echo /(printf)
eval
exec
export
read
shift
${变量} 返回变量值
${#name} 返回变量长度
${变量:num} 返回变量第num个后的字符
${变量:num:num2} 返回变量第num个字符的num2个字符
${变量#a*c} 从开头删除最短匹配a-c的字符
${变量##a*c} 从变量开头删除最长匹配的a-c的字符
${变量%a*c} 从变量结尾开始删除最短匹配的a-c的字符
${变量%%a*c} 从变量结尾开始删除最长匹配的a-c的字符
${变量/str/string} 用string代替第一个匹配的str
${变量//str/string} 用string代替所有的str
${变量:-word} 如果变量为空,返回word字符串
${变量:=word} 如果变量为空,把word赋值给变量并返回word字符串
${变量:?word} 如果变量为空,返回错误信息,否则输出变量值
${变量:+word} 如果变量为空,什么都不做,否则返回word
创建进程列表(创建子shell)
开辟子shell可以在多个子shell同时运行
Linux默认的有关shell的变量
BASH_SUBSHELL #该变量的值如果是0就是在当前shell中,否则就是在开辟的子shell
SHLVL
使用子shell运行
shell的进程列表理念,使用( )小括号就是开启shell运行命令
(cd ~;pwd;ls ;cd /tmp/ ;pwd;ls;echo $BASH_SUBSHELL)
子shell嵌套
多个子shell嵌套只需要多加几个( )小括号就行
(cd ~;pwd;ls ;cd /tmp/ ;(pwd;ls;echo $BASH_SUBSHELL))
利用括号,开启子shell的理念,以及检查,在shell脚本开发中,经常会用子shell进行多进程的处理提高程序并发执行效率
内置命令,外置命令
内置命令: 在系统启动时就加载入内存,常驻内存,执行效率更高,但是占用资源 (cd,ls ...) compgen -b
外置命令: 系统需要从硬盘中读取程序文件,再读入内存加载(外置命令一定会开启一个子进程运行)
ctrl +
评论区