8.6 管道符和作业控制
管道符
管道符意思是把前面文件输出的内容传递给后面的命令。如下图就是显示当前目录的文件个数:
作业控制
ctrl z暂停当前任务(可以暂停多个),使用fg可以恢复,jobs可以查看你暂停的所有任务,如果暂停了多个任务,想要恢复其中的一个的话可以使用fg加id号,下图两个任务的id号分别是1、2。
bg可以把当前运行的任务放到后台去,但是还是在运行的,不过你这个时候就可以敲其他命令了,fg可以恢复。
sleep加数字 就是暂停窗口多少秒。
一条命令后面加&可以直接放到后台运行。其他终端窗口用jobs是看不到这个终端窗口后台的。
8.7/8.8 shell变量
PATH、HOME、PWD、LOGNAME等都是变量。
查看变量
env可以查看系统常用的环境变量。
set可以查看系统的变量,还可以查看用户自定义的变量。
自定义变量
格式:变量名=变量值
变量名规则:可以是字母、数字、下划线、但是首位不可以是数字。
变量值规则:有特殊符号的时候需要用单引号括起来。(特殊符号包括空格)
变量值叠加,如下图c=a、变量b的值、c
全局变量
w可以查看目前登录系统的所有终端。
使用如下命令可以查看你的终端名
我们使用“变量名=变量值”这种格式自定义一个变量,如果你换了一个终端这个变量不会在另一个终端里也有。
或者使用bash打开一个子shell,相当于另一个终端,(可以使用pstree查看你现在所在的具体终端)也是查不到你自定义的这个变量的。
所以这种变量叫非全局变量,或者说本地的变量。
如果我们可以使用“export 变量名=变量值”这种格式自定义变量,那么就是全局变量,使用bash打开一个子shell这个变量也是存在的,不过你新建一个终端还是不存在这个变量的,因为全局变量只是向下延伸的,也就是说只是在当前shell的子shell或者子shell的子shell向后一直延伸的shell才生效。
unset可以取消自定义的变量。
8.9 环境变量配置文件
环境变量配置文件分为两种,一种是系统层面,还有一种是用户层面。
/etc/profile和/etc/bashrc是系统层面。
~/.bashrc和~/.bash_profile和~/.bash_history和~/.bash_logout是用户层面,在用户家目录。
profile是用户登录的时候会加载到。
bashrc是用户执行或者系统执行一些shell脚本的时候会加载到。
系统层面最好不要去改动,需要改动我们可以改用户层面的,不过这只是针对当前用户的,如果想要全集生效的话就要去改系统层面的配置文件。
~/.bash_logout用来定义用户退出时候需要做的操作,如果想要用户每次退出时清除命令历史,就可以把删除命令历史的命令放到这个文件里去。
下面我们来介绍一下PS1变量,
我们登录系统之后左边都会有一串以用户名开头的字符串,这串字符串可以分为几段,分别是用户名、@、主机名、当前所在的目录最后一层。
PS1变量就是用来定义这个字符串的,
我们把目录位置改成小写的w,意思就是改成显示绝对路径。
同时我们也可以让它带颜色显示,
PS2变量是在另一种模式会用到。它的字符串默认只是一个>。