1.bash 是GNU 计划中重要的工具软件之一,目前也是Linux distributions 的标准shell。其主要功能如下:
(1)命令记忆和历史功能,可以通过history查询,存储位置在~/.bash_history
![](https://i-blog.csdnimg.cn/blog_migrate/067b4ba9ec6a0e3cb04f8f186d7c1ac0.png)
(2)命令和文件补全功能,按tab键
![](https://i-blog.csdnimg.cn/blog_migrate/4bff4af11db76de4c4ffd98eb869ed4d.png)
(3)给命令取一个别名:alias
![](https://i-blog.csdnimg.cn/blog_migrate/f23ae4ff0e22372a96eccc2b31874809.png)
(4)工作控制、前景背景控制job control, foreground, background
(5)(程序化脚本: (shell scripts))
以前在DOS 底下需要程序语言才能写的东西,在Linux 底下使用简单的shell scripts 就
可以帮你达成
(6)通配符Wildcard,*就是其中一个
![](https://i-blog.csdnimg.cn/blog_migrate/374750b9547caefded85510bb5bd4594.png)
2.查询指令是否为Bash shell 的内建命令: type
type [-tpa] name选项与参数::不加任何选项与参数时,type 会显示出 name 是外部指令还是 bash 内建指令-t :当加入 -t 参数时,type 会将 name 以底下这些字眼显示出他的意义:file :表示为外部指令;alias :表示该指令为命令别名所设定的名称;builtin :表示该指令为 bash 内建的指令功能;-p :如果后面接的 name 为外部指令时,才会显示完整文件名;-a :会由 PATH 变量定义的路径中,将所有含 name 的指令都列出来,包含 alias
![](https://i-blog.csdnimg.cn/blog_migrate/2601d72f170c7d895ed20d7db823f105.png)
3.命令较长,一行写不完时,可以使用\+Enter调到下一行继续输入
![](https://i-blog.csdnimg.cn/blog_migrate/9a839ec063f15b911f1a49cf6fb9139e.png)
4.shell的变量功能
变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据!
(1)变量的取用与设定:echo $变量名, 变量设定规则, unset
![](https://i-blog.csdnimg.cn/blog_migrate/ae78587905f4fd9c33032132d53b211f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f56a954b69590babb4bee40dfb96f431.png)
(2)给变量赋值=
![](https://i-blog.csdnimg.cn/blog_migrate/2047b5123f3599a5356eafbca0da6875.png)
(3)变量的设定
变量的设定规则1. 变量与变量内容以一个等号 = 来连结,如下所示:myname=hui2. 等号两边不能直接接空格符,如下所示为错误:myname = hui 或 myname=hui bo3. 变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误:2myname=hui4. 变量内容若有空格符可使用双引号『"』或单引号『'』将变量内容结合起来,但o 双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示:『var="lang is $LANG"』则『echo $var』可得『lang is zh_TW.UTF-8』o 单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』5. 可用跳脱字符『 \ 』将特殊符号(如 [Enter], $, \, 空格符, '等)变成一般字符,如:『myname=hui\ sai』6. 在一串指令的执行中,还需要藉由其他额外的指令所提供的信息时,可以使用反单引号『`指令`』或 『$(指令)』。特别注意,那个 ` 是键盘上方的数字键 1 左边那个按键,而不是单引号! 例如想要取得核心版本的设定:『version=$(uname -r)』再『echo $version』可得『3.10.0-229.el7.x86_64』7. 若该变量为扩增变量内容时,则可用 "$变量名称" 或 ${变量} 累加内容,如下所示:『PATH="$PATH":/home/bin』或『PATH=${PATH}:/home/bin』8. 若该变量需要在其他子程序执行,则需要以 export 来使变量变成环境变量:『export PATH』9. 通常大写字符为系统默认变量,自行设定变量可以使用小写字符,方便判断 (纯粹依照使用者兴趣与嗜好) ;10. 取消变量的方法为使用 unset :『unset 变量名称』例如取消 myname 的设定:『unset myname』
![](https://i-blog.csdnimg.cn/blog_migrate/3b62109fe4459596e235d5d0ef0bf7b4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/aecb74e89469c6ffcf1cdb7ebefd3584.png)
![](https://i-blog.csdnimg.cn/blog_migrate/83a9fe83f278a21d4dec099166d5426b.png)
什么是『子程序』呢?就是说,在我目前这个shell 的情况下,去启用另一个新的shell ,新的那个
shell 就是子程序啦!在一般的状态下,父程序的自定义变量是无法在子程序内使用的。但是透过
export 将变量变成环境变量后,就能够在子程序底下应用了
![](https://i-blog.csdnimg.cn/blog_migrate/19684be2ea4c1729dedf151dec9e985a.png)
(4)进入到您目前核心的模块目录?cd /lib/modules/`uname -r`/kernel
![](https://i-blog.csdnimg.cn/blog_migrate/aabd69e3b87a419df3b15ffe7d6a2c2f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd75c3cd04c1200f879a10751b36860d.png)
(5)取消刚刚设定的 name 这个变量内容
![](https://i-blog.csdnimg.cn/blog_migrate/d6164b9ec312afc827b67b8e75661e02.png)
(6)单引号与双引号的最大不同在于双引号仍然可以保有变量的内容,但单引号内仅能是一般字符 ,而不会有特殊符号
![](https://i-blog.csdnimg.cn/blog_migrate/8d8f1901a7efd02f5b9b0d1331ad1f37.png)
(7)查看内核版本uname -r
![](https://i-blog.csdnimg.cn/blog_migrate/324b263d7860944f134b536206d30f0b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dbdd9ff5b0e17143f9b35c617a12a099.png)
欢迎加入c和c++交流群:
![](https://i-blog.csdnimg.cn/blog_migrate/bfb02228de3c4219e36aa91143d1e052.png)