BASH融合了:ksh,csh 并避免其缺陷
编程语言:
1.脚本语言:
以源程序的方式存在,执行前不需要编译,
而靠一个解释器执行
为何简便,但执行效率差
bash,perl, python, ruby, php
perl最晦涩 python面向对象语法严格
2.编译型语言:
编辑——>编译——>连接——>运行
1、静态组合 2、动态组合
执行效率高,但维护复杂
c, c ,-接近硬件底层
BASH常用命令:
1、命令行编辑
快捷键: Ctrl a ;直接跳到命令行首
Ctrl e ;行尾
Ctrl u ;删除从光标到行首
Ctrl k :删除从光标到行尾
Ctrl 箭头 :跳一个单词
2、文件名统配
通配符:
*:表示任意长度的任意字符 例:ls * ; ls *.log
?: 任意单个字符 例 : ls ?.log
[]:指定范围内的任意单个字符, [a-z] [abc]
例: ls [abc].log
[^abc], ^:表示取反 不包括abc
[a-zA-z0-9]指定字符范围
[:keyword:] : [:lower:],[:upper:],[:punct:],
[:space:],[:alpha:].[:alnum:][:digit:]-(数字)
man 7 glob :可以上查看所有
[^[:alpha:]] :: "^"表示取反
3、命令补全和路径补全
命令补全:
echo $PATH 定义的路径下找到命令进行补全.
路径补全:
指定的路径下
4、命令行展开
~ :展开为对应用户的家目录
cd ~到家目录
{}:展开多条路径
mkdir -pv x/{y,z/{1,2}}
mkdir -pv {x,y}_{1,2} 多项展开
拥有帝国一切,皆有可能。欢迎访问phome.net
5、命令展开/命令扩展
$():意义同下
`` 反引号: 把一个命令的执行结果当成一个命令的
对象来使用
例: mkdir #(date" %Y-%m-%d-%H-%M-%S")
ls -l `which passwd`
脚本::命令的堆砌
bash脚本:
编写:
#!/bin/bash , (-称为shabang)
#
DIR=`/tmp/scrips2`
mkdir -v $DIR
unset DIR (施放变量)
除第一行"#"外 其他为注释
脚本中变量: 脚本执行完施放脚本中所有变量.
脚本的执行: 要有执行权限 (当前目录下输入./''脚本名'' 或输入 bash ''脚本名'')
脚本的调试: bash -n ''脚本名'' 用于检查是否有语法错误.
bash -x ''脚本名'' 用于跟踪脚本执行的过程.
变量:命名的内存空间 通常只对当前shell有效
变量引用:"" 用双引号引用
"" : 为弱引用 touch "a b" 可以进行变量替换.
'''' :为强引用 touch ''$ab'' 不会进行变量替换.
"\ "避免被解释 例: 显示"contentquot; 使用"\contentquot;.
bash,变量不需要声明,变量不区分类型,默认字符串型,不能直接参与数学运算.
例: 变量名=“string”
set 变量名=“string”
unset 变量名
定义变量:
NAME=Jerry
echo $NAME 显示变量值
echo ${NAME} 标准格式
echo:
-n :不显示换行符
-e :转义符
man echo 中有详细介绍
1、变量分为本地变量/局部变量
2、环境变量 对当前shell 对子shell都有效,可在shell中打开子shell
export,导出一个变量
拥有帝国一切,皆有可能。欢迎访问phome.net
export A=3 := : A=3 export A
查看:
export,显示当前所有变量 declare,声明变量
DISPLY,定义显示
HISTSIZE,历史命令保存条数
HOME,定义当前用户的家目录
PATH, |