1,什么是bash shell
在linux内核下,无论什么版本的linux发行版,都会有下列的shell支持。BASH,CSH,TCSH,ZSH,SCSH. 这些shell都是由最初的shell发展而来的。你可以参考如下的框架图理解。
通过上面的关系图,可以清楚的明白,shell是用户需求和linux内核之间的一个转换媒介,用户为了让linux系统处理用户的需求完成特定的任务,用户可以编写shell,运行shell程序就能实现与linux内核之间的交互,linux内核与计算机的底层硬件之间存在双向的交互,从而实现控制硬件的功能。shell语言是一种命令行语言的交互。
2,CLI(commond line interface),命令行交互
shell语言提供与linux内核之间的交互,这样我们就可以通过命令行键入命令就可以实现与linux的交互。
2.1 怎么找到当前的shell 类型
$ cat /etc/shells
>>
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
因为我使用的是ubuntu系统而且安装了tmux工具,所以会有/usr/bin/tmux。你可能会没有,这里,每个人的情况可能都不相同。当时学习的是bash,支持bash即可。
2.2 基础的命令行快捷键
快捷键 | 含义 |
---|---|
CTRL-L | 清除命令窗口 |
CTRL-W | 删除当前命令行中光标所在位置的一个单词 |
CTRL-U | 删除当前命令行一行的全部内容 |
CTRL-R | 搜索之前使用过的命令 |
CTRL-C | 取消当前正在运行的命令 |
例如,你可以在命令行输入date命令。
$ date
>>
2018年 11月 26日 星期一 09:16:14 CST
这是当你输入快捷键 CTRL+L则命令窗口会被清空!,你可一不断尝试理解上面表格的命令含义。
2.3 ,在linux中获得命令的帮助
如果你使用过python,matlab你会很清除的理解help是什么。当你不知道**某一和函数或者关键词**的意义或者怎么使用时,你可以使用help等指令,在linux中你可以在命令行中使用如下三种方式查看某一个指令的含义和使用方式
man date
info date
date --help
3, shell 编程的大体流程总结
3.1 type 命令
type命令是用来找出一个命令,它是属于内嵌(build-in)还是外部的二进制可执行文件
例如,
$ type -a ls
>>
ls is aliased to `ls --color=auto'
ls is /bin/ls
$ type -a date
>>
date is hashed (/bin/date)
$ type -a history
>>
history is a shell builtin
$ type -a echo
>>
echo is a shell builtin
echo is /bin/echo
等等命令,都可以使用type命令查看它的类型。这里
# -a,a是值all的意思
$ type -a
3.2 起手“Hello,world!”
- 打开一个命令行,通过ctrl+alt+t.
- 进入你学习bash自己建立的文件夹内,创建一个bash文件,比如 vim begin00.sh 当然后缀名.sh不一定是必要的,当时为了区分不造成误解,我就加上了。
- 在文件第一行输入#!/bin/bash
因为我比较习惯使用vim编辑器,所以我都会一直使用vim创建或者打开一个文件,当然你可以使用gedit等其他编译器做同样的操作。
如果你像学习vim可以参考这两篇文章,
- 关于vim的配置: https://blog.csdn.net/SimileciWH/article/details/83540394
- 关于vim的指令操作:https://blog.csdn.net/SimileciWH/article/details/83790409
言归正传,你的文件应该是这样的
#!/bin/bash
echo "Hello, world!"
关于第一句#!/bin/bash,#是注释,!是特殊字符告诉编译器去下面的位置对应的编译器对该文件一下全部内容作解释。你可以通过type命令查看bash的位置
$ type -a bash
>>
bash is /bin/bash
第二句使用了echo命令,就是输出双引号中的全部内容。
3.3 bash文件设置成可执行文件,执行bash程序
$ chmod +x "你的文件存放的路径"/"文件名"
#for instance
$ chmod +x ~/Public/bash_lerning/begin00.sh
然后打开一个命令窗口,执行程序,有下面三种方法:
$ . "文件路径"/"文件名"
$ ./"文件路径"/"文件名"
$ bash /"文件路径"/"文件名"
例如,
$ . ~/Public/base_learning/begin00.sh
>>
Hello, world!
如果不设置可执行文件即不执行3.3操作,则直接运行bash文件会提示:bash: “文件”: Permission denied!
3.4 debug bash script
有5种方式,对bash 脚本进行debug
$ bash -x bash-name #第一种
$ bash -xv bash-name #第二种
第3种方式,在bash文件中设置
#!/bin/bash -x
第4种方式,在bash文件中设置
#!/bin/bash
## Turn on debug mode##
set -x
...
...
...
##Turn off debug mode##
set +x
第5种
#!/bin/bash -x
set -n #只阅读bash程序,不执行程序
set -o noexec
第5种方式一般用来检查bash文件的是否存在语法错误
4, shell中的变量
4.1 系统变量
可以通过如下3种指令查看系统变量
$ set
$ env
$ printenv
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 [这儿][4].