管道符和作业控制 & shell变量& 环境变量配置文件
管道符 |
用于将前一个指令的输出作为后一个指令的输入
[root@pantinglinux ]# cat 1.txt | wc -l
2
[root@pantinglinux ]# cat 1.txt
1.txt
2.txt
[root@pantinglinux ]# find ./ -type f | wc -l
37
作业控制
当运行进程时,按ctrl+z使它暂停,然后使用fg命令恢复,或者利用bg命令使它到后台运行。ctrl+c可以使它终止。
[root@pantinglinux ]# vim 1.txt
[1]+ 已停止 vim 1.txt
[root@pantinglinux ]# fg 调到前台来
[root@pantinglinux ]# vim aa.txt
[2]+ 已停止 vim aa.txt
[root@pantinglinux ]# jobs
[1]- 已停止 vim 1.txt
[2]+ 已停止 vim aa.txt
[root@pantinglinux ]# fg 2 前台调用2,aa.txt
[root@pantinglinux ]# bg 2 后台调用2
[2]+ vim aa.txt &
[root@pantinglinux ]# jobs
[1]- 已停止 vim 1.txt
[2]+ 已停止 vim aa.txt
[root@pantinglinux ]# fg 2 :q退出
vim aa.txt
[root@pantinglinux ]# jobs
[1]+ 已停止 vim 1.txt
[root@pantinglinux ]# sleep 1000 睡眠1000秒
^Z
[1]+ 已停止 sleep 1000 ctrl+z暂停
[root@pantinglinux ]# jobs
[1]+ 已停止 sleep 1000
[root@pantinglinux ]# sleep 200 睡眠200秒
^Z ctrl+z暂停
[2]+ 已停止 sleep 200
[root@pantinglinux ]# jobs
[1]- 已停止 sleep 1000
[2]+ 已停止 sleep 200
[root@pantinglinux ]# fg 前台调用最后一个任务 sleep 200
sleep 200
^Z 然后暂停
[2]+ 已停止 sleep 200
[root@pantinglinux ]# bg 1 后台运行sleep 1000
[1]- sleep 1000 &
[root@pantinglinux ]# jobs
[1]- 运行中 sleep 1000 &
[2]+ 已停止 sleep 200
[root@pantinglinux ]# fg 1
sleep 1000
^C
[root@pantinglinux ]# fg 2
sleep 200
[root@pantinglinux ]# ^C
[root@pantinglinux ]# jobs
[root@pantinglinux ]# sleep 100 & sleep 100命令直接丢到后台运行
[1] 2632
[root@pantinglinux ]# jobs
[1]+ 运行中 sleep 100 &
env命令
可以列出系统预设的全部系统变量
[root@pantinglinux ]# env 只列出了部分
XDG_SESSION_ID=1
HOSTNAME=lizhipeng01
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=5000
SSH_CLIENT=192.168.5.1 3399 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:
HOSTNAME:表示主机名
SHELL:表示当前用户的shell类型
HISTSIZE:表示历史记录数
MAIL:表示当前用户的邮件存放目录
PATH:该变量决定了shell将到哪些目录中寻找命令或程序
PWD:表示当前目录
LANG:与语言相关的环境变量
HOME:表示当前用户的家目录
LOGNAME:表示当前用户的登录名
set命令
和env命令类似,可以输出环境变量。set命令不仅可以显示系统预设的变量,也可以显示用户自定义的变量。
[root@pantinglinux ]# myname=Lizhipeng
[root@pantinglinux ]# echo $myname
Lizhipeng
[root@pantinglinux ]# set |grep myname
myname=Lizhipeng
但是这个自定义变量只能在当前shell中生效
[root@pantinglinux ]# name=li
[root@pantinglinux ]# echo $name
li
[root@pantinglinux ]# bash
[root@pantinglinux ]# echo $name
[root@pantinglinux ]# exit
exit
[root@pantinglinux ]# echo $name
li
使用bash命令可以再打开一个shell,此时先前设置的name变量已经不存在了,退出当前的shell回到原来的shell,name变量还在。如果想让设置的环境变量一直有效,可以有两种方法。
1.允许系统内所有用户登录后都能使用该变量。具体做法:在/etc/profile文件的最后一行加入export name=li,然后运行 source /etc/profile就能生效了。再运行bash命令或者切换到其他账户就能看到效果
[root@pantinglinux ]# vi /etc/profile
[root@pantinglinux ]# source /etc/profile
[root@pantinglinux ]# echo $name
li
[root@pantinglinux ]# bash
[root@pantinglinux ]# echo $name
li
[root@pantinglinux ]# su - lizhipeng
上一次登录:二 12月 26 07:11:46 CST 2017从 192.168.5.1pts/0 上
[lizhipeng@lizhipeng01 ~]$ echo $name
li
2.仅允许当前用户使用该变量。具体操作方法:在用户主目录下的.bashrc文件的最后一行加入export name=li2,然后source .bashrc就能生效了。source命令的作用是将目前设定的配置刷新,即不用注销再登录也能生效。
[root@pantinglinux ]# vi .bashrc
[root@pantinglinux ]# echo $name 没有生效,因为没有source
li
[root@pantinglinux ]# source .bashrc
[root@pantinglinux ]# echo $name 生效了
li2
[root@pantinglinux ]# su - lizhipeng
上一次登录:四 1月 11 04:49:12 CST 2018pts/0 上
[root@pantinglinux ~]$ echo $name
li
变量定义规则
1.设定变量的格式为a=b,其中a为变量名,b为变量的内容,等号两边不能有空格;
2.变量名只能由字母、数字以及下划线组成,而且不能以数字开头。
3.当变量内容带有特殊字符(如空格)时,需要加上单引号
[root@pantinglinux ]# name='li ju'
[root@pantinglinux ]# echo $name
li ju
[root@pantinglinux ]# name="li's" 当变量内容中本身带有单引号,这是需要加双引号
[root@pantinglinux ]# echo $name
li's
[root@pantinglinux ]# name=`pwd` 如果变量内容中需要用到其他命令,运行结果则可以使用反引号
[root@pantinglinux ]# echo $name
/root
[root@pantinglinux ]# name="$name"AAA 变量累积,加的是双引号
[root@pantinglinux ]# echo $name
/rootAAA
[root@pantinglinux ]# name='$name'AAA 加的是单引号,里面的特殊字符全部失去其本身的作用
[root@pantinglinux ]# echo $name
$nameAAA
系统环境变量与个人环境变量的配置文件
/etc/profile:这个文件预设了几个重要的变量,例如PATH、USER、LOGNAME、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask等
/etc/bashrc:预设umask以及PS1。PS1就是我们输入命令时前面的那串字符
[root@pantinglinux ]# echo $PS1
[\u@\h \W]\$
\u指用户,\h指主机名,\W指当前目录,\$指字符#(如果是普通用户,则显示$)
.bash_profile:该文件定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专属于自己的shell信息,当用户登录时,该文件仅仅执行一次。
.bashrc:该文件包含专属于自己的shell的bash信息,当登录或每次打开新的shell时,该文件会被读取。
.bash_history:该文件用于记录命令历史。
.bash_logout:当退出shell时,会执行该文件。
[root@pantinglinux ]# echo $PS2
>
[root@pantinglinux ]# for i in `seq 1 10`
> do
> echo $i
> done