文档章节

day02:管道符、shell及环境变量

芬野de博客
 芬野de博客
发布于 2018/12/18 18:35
字数 1794
阅读 25
收藏 1

1、管道符:"|"

用于将前一个指令的输出作为后一个指令的输入,且管道符后面跟的是命令(针对文档的操作):cat  less head  tail grep  cut  sort  wc   uniq   tee   tr   split  sed   awk等)

[root@localhost ~]# ls |wc -l
11
[root@localhost ~]# ls /etc/ |grep passwd
passwd
passwd-

2、作业控制:  crtl+z       fg      bg     jobs      &

ctrl+z:暂停一个正在执行的任务:

fg [ id ]:把任务调到前台来运行:(foreground)

bg [ id ]:把任务调到后台来运行:(background)

jobs:查看当前正在运行的后台任务:

&:把任务一次性丢到后台去运行: sleep  1000   &

[root@localhost ~]# vim 1.txt             #开启第一个后台任务:

[1]+  Stopped                 vim 1.txt
[root@localhost ~]# sleep 1000            #开启第二个后台任务:
^Z
[2]+  Stopped                 sleep 1000
[root@localhost ~]# jobs                  #查看当前的所有后台任务:
[1]-  Stopped                 vim 1.txt
[2]+  Stopped                 sleep 1000
[root@localhost ~]# fg                    #把任务调到前台来,默认是调的后一个任务:
sleep 1000
^Z
[2]+  Stopped                 sleep 1000
[root@localhost ~]# bg 2                 #把任务加载到后台去运行,后面可以跟id:
[2]+ sleep 1000 &
[root@localhost ~]# jobs                 #再次查看,发现第二个任务去后台运行了:
[1]+  Stopped                 vim 1.txt
[2]-  Running                 sleep 1000 &
[root@localhost ~]# sleep 200 &          #把任务自己丢到后台去运行,可以加”&“符号:
[3] 9519
[root@localhost ~]# jobs                 #再次查看后台运行的任务,如下:
[1]+  Stopped                 vim 1.txt
[2]   Running                 sleep 1000 &
[3]-  Running                 sleep 200 &

3、shell变量:

系统中的内置变量:PATH        HOME      PWD      LOGNAME

3.1:env 只能查看系统内置的环境变量

[root@localhost ~]# env                  #只能查看系统内置的环境变量:
XDG_SESSION_ID=39231
HOSTNAME=localhost
TERM=xterm
SHELL=/bin/bash
HISTSIZE=5000
SSH_CLIENT=111.196.241.132 3908 52588
SSH_TTY=/dev/pts/0
USER=root

3.2:set  该命令不仅可以查看系统内置的环境变量,还可以查看用户自定义的变量

[root@localhost ~]# set |head -10
BASH=/bin/bashrce_fignore:histappend:interactive_com
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_REMATCH=()
BASH_SOURCE=()

3.3:自定义变量

[root@localhost ~]# a=111            #字母开头定义变量:
[root@localhost ~]# echo $a
111
[root@localhost ~]# _b=111           #下划线开头定义变量:
[root@localhost ~]# echo $b
456
[root@localhost ~]# 3c=222           #不能以数字开头定义变量:
-bash: 3c=222: command not found

  可知:变量名规则:大小写字母、数字、下划线(数字不能开头):

变量名如果有特殊符号(空格),需要加单引号

单引号还可以脱义(特殊字符失去原有意义):如:$  等:

[root@localhost ~]# a=1               #给变量a赋值:
[root@localhost ~]# b='$a'            #给变量b赋予$a,并脱义:
[root@localhost ~]# echo $b      
$a

3.4:变量累加:需要使用双引号:用来引用变量的值:

[root@localhost ~]# a=123              #给变量a赋予值123:
[root@localhost ~]# b=456              #给变量b赋予值456:
[root@localhost ~]# d="$C0"            #此写法不合法,所有变量d不会变赋值:
[root@localhost ~]# echo $d

[root@localhost ~]# c="$a$b"789        #用双引号把变量引起来:
[root@localhost ~]# echo $c
123456789

:多个变量进行叠加时:要对目标变量(等号右边)加上双引号,并且再对多个变量进行添加的写法:

不可以使用单用号:因为此处还要引用变量的值;

3.5、全局变量:export

  export:在一个父shell中设定变量后,进入子shell后,变量不会生效,如果想让这个变量在子shell中生效,则要用到export声明一下才可以(跨终端不生效):

 export      变量名=变量值                    #声明一个变量:

[root@localhost ~]# a=123                    #声明一个变量a=123
[root@localhost ~]# echo $a                  #在当前bash下查看这个变量:可生效:
123
[root@localhost ~]# bash                     #进入其子shell下:
[root@localhost ~]# echo $a                  #差这个变量,不生效:

[root@localhost ~]# pstree                
systemd─┬─AliYunDun───15*[{AliYunDun}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash─┬─bash───pstree              #此时看到在子shell下:
        │                    └─vim
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───4*[{tuned}]

赋予的变量值在子shell中不生效,需要用export声明一下:

[root@localhost ~]# export a=123     #用export声明变量a=123:
[root@localhost ~]# echo $a          #在当前shell中查看:
123
[root@localhost ~]# bash             #进入其子shell:
[root@localhost ~]# echo $a          #在其子shell中查看也生效:
123
[root@localhost ~]# pstree
systemd─┬─AliYunDun───15*[{AliYunDun}]
        ├─aliyun-service
        ├─dbus-daemon
        ├─dhclient
        ├─ntpd
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash─┬─bash───pstree       #查看到此时也是在子shell下:
        │                    └─vim
        ├─systemd-journal
        ├─systemd-logind

注:在父shell中声明的变量会在子shell中生效:  向下的:

  但是在子shell中声明的变量在父shell中是不生效的:不可逆向上:

[root@localhost ~]# bash                              #首先进入一个子shell: 
[root@localhost ~]# export c=111                      #声明一个全局变量c=111:
[root@localhost ~]# echo $c                           #在当前子shell中查看变量c:
111
[root@localhost ~]# pstree                            #查看是在子shell下:
systemd─┬─AliYunDun───15*[{AliYunDun}]
        ├─AliYunDunUpdate───3*[{AliYunDunUpdate}]
        ├─sshd───sshd───bash─┬─bash───pstree
        │                    └─vim
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───4*[{tuned}]
[root@localhost ~]# exit                             #退出当前子shell,进入到上一级shell下:
exit
[root@localhost ~]# echo $c                          #查看发现$c变量为空:
[root@localhost ~]# pstree                           
systemd─┬─AliYunDun───15*[{AliYunDun}]
        ├─AliYunDunUpdate───3*[{AliYunDunUpdate}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash─┬─pstree               #查看是在上一级shell下:
        │                    └─vim
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───4*[{tuned}]

#export全局变量自在当前shell及子shell中生效,不会在上一级shell中生效:

全局变量也自在当前终端中生效:另一终端下则不生效

再次打开一个新的终端,如下命令查看自己所在终端下:

pstree所在行显示即为当前所在shell(exit可退出当前终端):

[root@localhost ~]# who
root     pts/0        2018
root     pts/1        2018
[root@localhost ~]# echo $SSH_TTY                        #查看当前终端:
/dev/pts/1 
[root@localhost ~]# echo $c                              #会发现变量为空:不生效:
 
[root@localhost ~]# pstree                               
systemd─┬─AliYunDun───15*[{AliYunDun}]
        ├─AliYunDunUpdate───3*[{AliYunDunUpdate}]
        ├─sshd─┬─sshd───bash                            #第一个终端:
        │      └─sshd───bash───pstree                   #第二个终端下执行的pstree:
        ├─systemd-journal

取消变量

unset       变量名:                            #取消变量:

[root@localhost ~]# a=111                #给变量a赋予变量值111:
[root@localhost ~]# echo $a              #查看变量:
111
[root@localhost ~]# unset a              #取消变量:
[root@localhost ~]# echo $a
空白

注:没有pstree命令:安装:yum   install   -y   psmisc

4、环境变量配置文件

环境变量配置文件可以划分为两个层次:系统环境变量配置文件用户环境变量配置文件

系统配置文件(严禁改动)

/etc/profile 用户登录,交互时执行:PATH  USER  LOGNAME MAIL HISTSIZE等

/etc/bashrc:用户执行shell即生效,无需登录,  umask    PS1

用户配置爱文件

~/.bashrc : 包含专属于自己的shell的bash信息,当登录或每次打开新的shell会被执行:别名

~/.bash_profile:用户的个人化路径及环境变量的名称,该文件仅仅执行一次

~/.bash_history:该文件用于记录命令历史

~/.bash_logout :当退出shell时,会执行该文件,可以将一些清理工作放入到此文件下

变量"PS1"

[root@localhost ~]# echo $PS1
[\u@\h \W]\$

该变量用来定义"[root@localhost ~]#"这一部分所显示的内容:

可以带颜色显示:命令如下:

 PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '

[root@localhost ~]# PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '
root@localhost:~#echo  $PS1
\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$
root@localhost:/etc/sysconfig# PS1='[\u@\h \W]\$ '                
[root@localhost ~]#

 

© 著作权归作者所有

共有 人打赏支持
芬野de博客
粉丝 15
博文 156
码字总数 268430
作品 0
海淀
程序员
私信 提问
管道符和作业控制 shell变量 环境变量配置文件

8.6 管道符和作业控制 管道符的作用在于将符号前面的结果丢给符号后面的命令。管道符后面并不是所有的命令都可以,一般针对文档操作的命令比较常用,eg:cat、less、head、tail、grep、cut、...

神游818
2018/01/12
0
0
管道符作业控制、环境变量shell及环境变量配置文件

10月12日任务 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件 8.6 管道符、作业控制 cat 1.txt |wc -l ; cat 1.txt |grep 'aaa' ctrl +z 暂停一个任务 -后台暂停 jobs 查看后...

zgxlinux
2018/10/12
0
0
21.管道符,shell变量,环境变量配置文件

五周第四次课(1月11日) 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件 扩展 bashrc和bash_profile的区别 http://ask.apelearn.com/question/7719 简易审计系统: http://w...

Xavi2017
2018/01/14
0
0
第5周第4课:管道符、shell变量、变量配置文件

8.6 管道符和作业控制 管道符“|” 管道符的作用在于将符号前面的结果丢给符号后面的命令。管道符后面并不是所有的命令都可以,一般针对文档操作的命令比较常用,例如cat、less、head、tai...

grassroots
2018/01/11
0
0
8.6 管道符和作业控制;8.7—8.8 shell变量(上下);8.9 环境变量配置文件

扩展 bashrc和bash_profile的区别 http://ask.apelearn.com/question/7719 简易审计系统: http://www.68idc.cn/help/server/linux/2014042190951.html 关于PROMPT_COMMAND环境变量的含义 ht......

主内安详
2018/01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 没时间 没头发 但有钱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @开源中国总经办主任 :分享齐一的单曲《这个年纪》 《这个年纪》- 齐一 手机党少年们想听歌,请使劲儿戳(这里) @肿肿卷 :我真的可以睡一天...

小小编辑
50分钟前
11
4
Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
3
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部