bash的主要优点如下:
- 可以通过
history
查看命令的历史记录 - 命令和文件路径补全的好帮手-->TAB
- 命令别名
alias
- 工作控制、前景背景控制: (job control, foreground, background)
- 自动化脚本shell scripts
- 通配符
* 匹配 0 或多个字符
? 匹配任意一个字符
[list] 匹配 list 中的任意单一字符
[!list] 匹配 除list 中的任意单一字符以外的字符
[c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]
{string1,string2,...} 匹配 sring1 或 string2 (或更多)其一字符串
{c2..c2} 匹配 c1-c2 中全部字符 如{1..10}
注:使用type COMMAND
可以判断命令是不是Bash shell 内置命令
Bash shell 命令快速编辑
按键 作用
Ctrl+d 键盘输入结束或退出终端
Ctrl+s 暂定当前程序,暂停后按下任意键恢复运行
Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a 将光标移至输入行头,相当于Home键
Ctrl+e 将光标移至输入行末,相当于End键
Ctrl+k 删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动
Bash shell中的变量
- 获取变量:
echo $variable
如
echo $HOME
echo $PATH 或echo ${PATH}
- 设置变量
Var=value
- 删除变量
unset Var
- 如果需要该变量在其他子程序中执行,则需要以
export
时该变量变为环境变量export PATH
注:
- 双引号仍然可以保有变量的内容,但单引号内仅能是一般字元 ,而不会有特殊符号
- 在一串指令中,在 ` 之内的指令将会被先执行,而其执行出来的结果将做为外部的输入信息!
环境变量
用 env 观察环境变数与常见环境变量说明:
HOME
代表使用者的家目录。还记得我们可以使用 cd ~ 去到自己的家目录吗?或者利用 cd 就可以直接回到使用者家目录了。那就是取用这个变数啦~ 有很多程式都可能会取用到这个变数的值!SHELL
告知我们,目前这个环境使用的 SHELL 是哪支程式? Linux 预设使用 /bin/bash 的啦!HISTSIZE
这个与『历史命令』有关,亦即是, 我们曾经下达过的指令可以被系统记录下来,而记录的『笔数』则是由这个值来设定的。MAIL
当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱档案 (mailbox)。PATH
就是执行档搜寻的路径啦~目录与目录中间以冒号(:)分隔, 由于档案的搜寻是依序由 PATH 的变数内的目录来查询,所以,目录的顺序也是重要的喔。LANG
这个重要!就是语系资料啰~很多讯息都会用到他, 举例来说,当我们在启动某些perl 的程式语言档案时,他会主动的去分析语系资料档案, 如果发现有他无法解析的编码语系,可能会产生错误喔!一般来说,我们中文编码通常是 zh_TW.Big5 或者是 zh_TW.UTF-8,这两个编码偏偏不容易被解译出来,所以,有的时候,可能需要修订一下语系资料。这部分我们会在下个小节做介绍的!RANDOM
这个玩意儿就是『随机乱数』的变数啦!目前大多数的 distributions 都会有乱数产生器,那就是 /dev/random 这个档案。我们可以透过这个乱数档案相关的变数 ($RANDOM) 来随机取得乱数值喔。在 BASH 的环境下,这个 RANDOM 变数的内容,介于 0~32767 之间,所以,你只要 echo $RANDOM 时,系统就会主动的随机取出一个介于 0~32767 的数值。万一我想要使用 0~9 之间的数值呢?呵呵~利用 declare 宣告数值类型, 然后这样做就可以
set
可以查看所有的变量
自定义变量和环境变量最大的区别在于是否会被子程序所继续引用,因为子程序仅会继承父程序的环境变量, 而不会继承父程序的自定义变量
自定义变量-->环境变量 export Var
环境变量 --> 自定义变量 declare