bash的功能:

1.命令行编辑

2.历史命令

3.命令补全

4.命令别名和命令替换

5.管道,重定向

6.命令行展开

7.文件名通配

8.变量

9.编程


1.命令行编辑

光标跳转

ctrl+a跳到命令首行

ctrl+e跳到命令行尾

ctrl+u删除光标与行首间的内容

ctrl+k删除光标与行首间的内容

ctrl+l清屏


bash支持的引号

` `(反引号)命令引用

”“弱引用,可以实现变量替换

’‘(单引号)强引用,不完成变量替换


2.历史命令

查看历史命令:history

-c清空历史

-d OFFSET [n]删除指定位置的命令

-w保存命令历史至历史文件中

命令历史的使用

!n执行命令历史中的第n条命令

!-n执行命令历史中倒数的第n条命令

!!执行上一条命令

!String执行命令历史中最近一条以字符串String开头的命令

!$引用前一个命令的最后一个参数

Esc松开后按“ . ”同上

Alt+ .同上


3.命令补全

命令自动补全Tab

路径补全Tab

4.命令别名和命令替换

alias CMDALIAS = ‘COMMAND [ ]’

定义的别名仅在当前的shell的生命周期内有效


替换语法含义

历史 !前一个命令行

大括号{}指定的文本

代字号~username用户的主目录

变量$,${...}Shell 和环境变量

算术 $((...))算术运算

命令替换 `...` , $(...)运行在子 shell 中的命令的输出

路径名*,?,[...],[^...]文件系统中匹配的文件名


$( )先执行()中的命令再执行整个命令,也可以使用反引号


5.文件名通配

*:任意长度的任意字符

例:a*以a开头后面任意字符(没长度也可以)

a*3以a开头后长度为3的任意字符

?:任意单个字符

[]:匹配指定范围内的任意单个字符

例:[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]

[^]:匹配指定范围之外的任意单个字符

例:[^[:alpha:]]一个非字母

[:space:]:所有的空白字符

[:punct:]:所有的标点符号

[:lower:]:小写字母

[:upper:]: 大写字母

[:alpha:]: 大小写字母

[:digit:]: 数字

[:alnum:]: 数字和大小写字母


6.变量

本地变量set VARNAME=VALUE 作用域为整个bash进程。

局部变量local VARNAME=VALUE 作用域为当前代码段

环境变量export VARNAME 作用域为当前shell进程及其子进程;

位置变量$1,$2……

特殊变量$? 上一个命令的执行状态返回值

程序执行可能有两类返回值:程序执行结果,程序状态返回代码(0-255)

0:正确执行

1-255:错误执行,其中1,2,127系统预留。


撤销变量unset VARNAME

查看系统中所有变量(含环境变量和自定义变量):set

查看当前shell中的环境变量:printenv、env、export



bash的配置文件


1、/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。

2、/etc/environment:在登录时操作系统使用的第 二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。

3、~/.bash_profile:在 登录时用到的第三个文件是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该 文件仅仅执行一次!默 认情况下,他设置一些环境变游戏量,执行用户的.bashrc文件。/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

4、~/.bashrc:该 文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该 该文件被读取。


全局配置

/etc/profile , /etc/profile.d/*.sh , /etc/bashrc

个人配置

~/.bash_profile , ~/.bashrc


profile类的文件

设定本地变量

运行命令或脚本


bashrc类文件

设定本地变量

定义命令别名


登陆式shell读取配置文件的方式:

/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc

非登录式shell读取配置文件的方式:

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh