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