bash shell

  1.什么是shell

首先我们来看一下用户操作计算机的流程:

用户都是通过各种各样的应用程序来指挥内核,让内核达成我们所需要的硬件任务,这个应用程序其实就在

最外层,相当于鸡蛋的外壳一样,因此被称为shell。

所以广义的shell包括图形界面的软件,狭义的shell指的是命令行方面的软件。

shell依据早期的UNIX发展者不同就有许多版本,而Linux使用的这一版本被称为"Bourne Again SHell"(bash)

你可以打开你的Linux主机下的 /etc/shells 这个文件,就可以看到你的主机可用的shell:

2.bash shell 的功能

①命令记忆功能

你曾经执行过的记录几乎都能够被记录下来,当我们在命令行中按下↑/↓就能找到前一个/后一个输入的命令;

其实这些之前记录下来的命令是被保存在 ~/.bash_history 文件里的,有兴趣的可以 cat ~/.bash_history 看一下

需要注意的是,这个文件记录的是前一次登录以前执行过的命令,至于本次登录所执行的命令都被暂存在临时

内存中,本次登录注销之后,命令记录才会记录到 .bash_history 中去。

②补全功能

其实就是Tab键的使用,

Tab接在一串命令的第一个字后面,则为命令补全;

Tab接在一串命令的第二个字后面,则为文件补全;

例如:l [Tab] [Tab]   将显示所有可用的以l开头的命令

③命令别名设置

我们常用的命令别名ll,相当于ls -l,那么这个别名是在哪里设置的呢?alias命令可以帮助你找到它

我们也是可以自行设置命令别名的,如下:

alias eco='ls -al'

3.bash shell内置命令之type

type命令用来检测一个命令的类型(bash内置命令、外部命令、命令别名)

-t                       //显示命令类型
-a                       //显示路径
-p                       //只有命令为外部命令才会显示路径

4.命令执行之命令太长

我们可以直接敲出命令然后回车执行,但是如果命令太长怎么办呢,此时就要用反斜杆来转义了()

利用 [Enter] 使得光标跳到下一行,继续书写命令(回车要紧挨着反斜杆)。

5.变量

变量就是以一组文字或符号等,来替代一些设置或者是一串保留的数据。

变量的显示:echo;变量的销毁:unset;变量的设置:用=号直接赋值。

 如下命令中:bash用于打开一个shell子进程,exit用于退出该子进程,export将该进程中的变量变为环境变量。

其实这里的进程有点模块化的意思,a进程(模块)里声明的变量b进程(模块)里当然找不到,除非export

如果你了解过模块化的话,这段话应该不难理解。

这方面的内容可以参考我以前写的一个拖拽模块或者ES6的模块化相关知识。

6.环境变量

env 命令查看环境变量和变量说明(set命令可以查看自定义变量和环境变量):

7.PS1 变量

图中红框的内容是可以自行设置的,这个设置的命令就是修改PS1变量,格式如下:

PS1='[u@h w A ##]$'
d                                  //显示星期 月 日
H                                  //显示完整的主机名
h                                  //显示主机名第一个小数点之前的名字
	                                  //显示24小时制的时间到秒
T                                  //显示12小时制的时间到秒
A                                  //显示24小时制的时间到分钟
@                                  //显示12小时制的am/pm样式
u                                  //目前用户的账号名称
v                                  //bash的版本信息
w                                  //完整的工作目录名称
W                                  //利用basename函数取得的工作目录名称
#                                  //执行的第几个命令
$                                  //提示符,如果是root提示符就是#,否则是$

8.其他变量相关操作

read test                                        //接下来光标会跳到下一行,让你为这个变量设置一个值
read -p "Please type your name:" -t 30 name      //要求为name变量设置一个值,并给出提示语,等待输入的时间为30s

declare/typeset [options] 变量                     //设置变量的类型
-a                                                //数组类型(array)
-i                                                //整数类型(integer)
-x                                                //和export一样,将变量设置为环境变量
-r                                                //将变量设置成readonly

注意:变量设置默认类型是文字类型(字符串)

 

9.变量内容的删除、替换

前面我们知道变量在不声明类型的情况下,默认类型就是文本类型,那么变量内容的操作实际上就是字符串操作

先复制系统环境变量PATH到自定义变量path,后续的操作就在path变量上进行:

删除:

删除的命令是:echo ${path#/*:}

这样就会从前面开始找符合 /*:  这种格式的字符串,不出意外,首先匹配到的是 /usr/local/sbin: 于是这段就被删除了

#                                       //一个#表示从前面开始匹配,删除符合条件的最短的字符串
##                                      //两个#表示从前面开始匹配,删除符合条件的最长的字符串
%                                       //一个%表示从后面开始匹配,删除符合条件的最短的字符串
%%                                      //两个%表示从后面开始匹配,删除符合条件的最长的字符串

替换:

替换的命令是:echo ${path/bin/BIN}

将第一个/bin  替换为  /BIN

/bin/BIN                                          //将第一个符合条件的进行替换
//bin/BIN                                         //将所有的符合条件的进行替换
原文地址:https://www.cnblogs.com/eco-just/p/9576577.html