管道符和作业控制 & 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

posted on 2018-04-24 07:33  淡淡!!!  阅读(160)  评论(0编辑  收藏  举报

导航