二十四、管道符和作业控制、shell变量、环境变量配置文件
一、管道符和作业控制
管道符:| 表示把前面文件输出的内容传递给后面的命令。
|grep:过滤,指定关键词的命令。|grep ’aaa‘。
作业控制
Ctrl+z:暂停一个任务。等于把当前任务放在了后台,使用fg命令再调回任务里。fg:前台,foreground。bg:后台,将任务调到后台去运行。示例:

vim /etc/passwd

[1]+ 已停止 vim /etc/passwd
可以停止多个任务,被暂停的任务会有编号。
想调回哪个就fg 1或者fg 2。fg+编号即可。不加编号就会执行最后一个任务。
jobs命令:把停止的任务列出来。
sleep命令:暂停指定的时间。时间长度,后面可接 s、m、h 或 d,其中 s 为秒,m 为 分钟,h 为小时,d 为日数。

sleep 1000

^Z
[1]+ 已停止 sleep 1000

sleep 1250

^Z
[2]+ 已停止 sleep 1250

jobs

[1]- 已停止 sleep 1000
[2]+ 已停止 sleep 1250

bg 2

[2]+ sleep 1250 &

jobs

[1]+ 已停止 sleep 1000
[2]- 运行中 sleep 1250 &
&:后面加此符号,直接将命令丢到后台。

sleep 1000 &

[1] 1253

jobs

[1]+ 运行中 sleep 1000 &
在当前终端后台运行的命令,在另外一个终端是看不到的,但是可以看到进程。
二、shell变量
变量:PATH,HOME,PWD,LOGNAME
env命令:列出系统预设的全部系统变量,系统的变量一般都是大写的英文字母。示例:

env 列出来的里面就有这些系统变量。

XDG_SESSION_ID=1
HOSTNAME=yaowei-01
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=5000
SSH_CLIENT=192.168.93.1 64290 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/0
USER=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=zh_CN.UTF-8 EN为英文,CH为中文,UTF-8是字符编码。
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.93.1 64290 192.168.93.130 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIMEDIR=/run/user/0
=/usr/bin/env
set命令:输出环境变量。不仅可以查看系统预设的环境变量,还可以查看到用户自定义的环境变量。
变量名规则:字母、数字下划线、首位不能为数字。
变量值有特殊符号时需要用单引号括起来。
例如a='a b c' 带空格的字符,就需要用单引号括起来。否则就不会生效。双引号也可以,但是有些特殊符号就会被系统当做是一个标记,就不会生效,比如$符号。
变量的累加

a=1

b=2

echo $a$b

12

a='a$bc'

echo $a$b

a$bc2

c="a$bc"

echo $c

a 此处$bc就没有识别出来

c="a$b"c 所以要将a$b分开括起来,此处就不能用单引号,它会认为$是一个符号。

echo $c

a2c 前面设置了b=2
多个变量相互叠加的时候可以用双引号把每个括起来。# c=a"$b"c
全局变量 export b=2
export 变量名=变量值,该命令就是声明一下这个变量。
前面设置的变量实际上是属于本地,仅仅在终端下生效,使用export一次就能变成全局变量。在这个shell下就能一直生效,在别的终端就不生效了。
取消一个变量:unset后跟变量的名字
三、环境变量配置文件
两个维度:系统层次,用户层次。
系统层次:就是/etc下的文件。
/etc/profile:用户环境变量,交互,登录才执行。
/etc/bashrc:用户不用登录,执行shell就生效。
用户层次:用户家目录下的文件。~/.bashrc
~/.bash_logout:用来定义用户退出时所需要做的操作。
小技巧:改hostname颜色
PS1='[\033[01;32m]\u@\h[\033[00m];[\033[01;36m]\w[\033[00m[\$'