bash
1.1、bash简介
是什么 ?:Bourne Again Shell
开发语言:C
官方主页:http://www.gnu.org/software/bash

bash完全兼容POSIX Shell

bashBourne Shell的超集,Bourne shell脚本无需修就能在bash下运行。

bash吸取了C shellKorn shell最有用的功能: 命令行历史与编辑、目录栈、作业控制、函数、别名、数组、整数运算(底数可以是2~64),扩展的元字符,用于生成菜单的select循环和let命令等。

FSFBrian Fox取得GNU版权许可后于1988年开发出bash。 随着GNU/Linux的发展,bash开始流行起来。

bash是绝大多数GNU/Linux系统的默认的login shellnon-login interactive shell

1.2、通过包管理器安装bash
操作系统包管理器安装命令
macOSHomeBrewbrew install bash
GNU/LinuxLinuxBrewbrew install bash
aptsudo apt-get install -y bash
CentOSyumsudo yum install -y bash
dnfsudo dnf install -y bash
openSUSEzyppersudo zypper install -y bash
Alpine Linuxapksudo apk add bash

Arch Linux

ArcoLinux

Manjaro Linux

pacmansudo pacman -Syyu --noconfirm
sudo pacman -S    --noconfirm bash
Gentoo LinuxPortagesudo emerge bash
1.3、通过源码安装bash 

step1、安装依赖

下载时cURL
解压时targzip
编译时POSIX shGNU CoreUtilsmakegcc
运行时
  • glibc ( libc.solibm.solibrt.solibdl.solibpthread.sold-linux-x86-64.so )
  • ncurses ( libtinfow.so )
  • readline ( libreadline.so )

step2、通使用curl命令下载Bash源码包 ()

curl -LO https://mirrors.tuna.tsinghua.edu.cn/gnu/bash/bash-4.3.tar.gz

step3、使用tar解压Bash源码包

tar vxf bash-4.3.tar.gz -C ~/bin

4、进入~/bin/bash-4.3目录,并查看一下文件夹中的内容

step5、配置、编译、安装

./configure && make && sudo make install

注意:

因为macOS自带了bash,可执行文件是/bin/bash, 我们需要把这个可执行文件替换掉,执行如下命令:

sudo ln -f -s /usr/local/Cellar/bash/5.0.2/bin/bash /bin/bash

由于macOSSIP(System Integrity Protection)策略的存在, 要想能够执行上面的命令,必须先关闭SIP(System Integrity Protection),执行完上面的命令之后再打开SIP(System Integrity Protection)

使用csrutil关闭/打开SIP(System Integrity Protection)

1.4、配置bash
级别配置文件路径
系统级/etc/profile
用户级~/.profile~/.bash_profile|~/.bashrc

推荐使用Oh-My-Bash进行配置。

1.5、bash的内置命令

bash内置命令就是随bash一起构建的, 这些命令是bash的基础命令。 下面是bash中的内置命令

1.6、bash的外部命令

bash外部命令通常来自:

1.7、bash中使用命令的技巧

bash中可以运行的命令非常多,要全部记住这些命令的用法是不太现实的, 偶尔也难免会忘记一些用法,或者想要查询一些用法是否支持,我们就要查看帮助, 查看帮助文档是使用bash过程中最常用的一项技能。

bash的命令支持参数输入的, 短参数是用-引出,长参数用--引出,这是约定俗成的,但不是强制规定, 所以,有这个约定俗称的规则,我们通常是可以进行猜测的, 比如command -h或者command --help就是查看这个命令的简要使用方法,command -v或者command --version就是查看这个软件的版本等。

有事情,问男人(man)。通常,只要执行man 命令即可找到对应命令的详细说明。

1.8、输入输出重定向
1.9、管道
1.10、前台进程与后台进程
1.11、bash编程
1.12、bash-completion