BASH是系统提供给用户操作设备的程序,BASH本身也是程序。

用户登录系统之后,systemed会为用户打开bash程序。

用户在BASH界面还可以打开子BASH

[root@bobo'machine/etc /etc]$ bash
[root@bobo'machine/etc /etc]$


通过pstree可以很容易的发现两个bash之间的关系

[root@bobo'machine/etc /etc]$ pstree | grep bash -A1 -B1
        |      `-smbd-notifyd
        |-sshd---sshd---bash---bash-+-grep
        |                           `-pstree
[root@bobo'machine/etc /etc]$

子BASH会初始化环境变量

子BASH无法感知的父BASH的存在,也就是说,子BASH和父BASH做的操作互相没有影响


命令行的快速编辑

    命令行光标快速跳转:

        ctrl+a:跳到命令行首

        ctrl+e:跳到行尾

        ctrl+u:删除光标至命令行首内容

        ctrl+k:删除光标至命令行尾内容

        ctrl+左右箭头,一次跳一个单词

        ctrl+L清屏幕


命令历史的使用技巧

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

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

    !!:执行上一条命令

    !char:执行命令历史中最近一个给定字符开始的命令

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

    esc,.(esc松开再按.):显示上一个命令的最后一个参数

    Alt+.显示上一个命令最后一个参数(改操作只有在terminal下有效)


命令别名:

    用法:alias CMALIANS=‘COMMAD [OPTION] [AGRUMENTS]’

    unalias撤销别名

    在shell中定义的别名只在当前shell的生命周期内有效,别名的有效范围为当前shell进程,可以把alias别名写到/root/.bashrc文件下,让该别名对root用户一直有效

    

[root@bobo'machine/etc /etc]$ cat /root/.bashrc | grep ali
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
[root@bobo'machine/etc /etc]$


命令替换:把命令中的某个字符替换成其执行结果的过程

比如我想用echo 在屏幕上打印出如下内容:我当前所在的路径是XXX

由于XXX是变量,我们可以如下操作

[root@bobo'machine/etc /etc]$ echo "my current dirctory is $(pwd)"
my current dirctory is /etc