博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day02:管道符、shell及环境变量
阅读量:6767 次
发布时间:2019-06-26

本文共 6829 字,大约阅读时间需要 22 分钟。

hot3.png

1、管道符:"|"

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

[root@localhost ~]# ls |wc -l11[root@localhost ~]# ls /etc/ |grep passwdpasswdpasswd-

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=39231HOSTNAME=localhostTERM=xtermSHELL=/bin/bashHISTSIZE=5000SSH_CLIENT=111.196.241.132 3908 52588SSH_TTY=/dev/pts/0USER=root

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

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

3.3:自定义变量

[root@localhost ~]# a=111            #字母开头定义变量:[root@localhost ~]# echo $a111[root@localhost ~]# _b=111           #下划线开头定义变量:[root@localhost ~]# echo $b456[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 $c123456789

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

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

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 ~]# pstreesystemd─┬─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 ~]# whoroot     pts/0        2018root     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 ~]#"这一部分所显示的内容:

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

 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 ~]#

 

转载于:https://my.oschina.net/yuanhaohao/blog/2990125

你可能感兴趣的文章
JavaScript 编码规范
查看>>
H5页面二次分享
查看>>
PTPD2源码解析之:packet的接收和发送
查看>>
SLB访问日志分析:基于客户端来源和HTTP状态码的实践
查看>>
javascript appendChild()的完整功能
查看>>
小程序实现长按录音,上划取消发送
查看>>
php实现共享内存进程通信函数之_shm
查看>>
Java多线程基础(一)——线程与锁
查看>>
实战PHP数据结构基础之双链表
查看>>
性感慕课-在线被爬
查看>>
es6学习
查看>>
Python每日一练0012
查看>>
Vue.js入门教程-methods
查看>>
使用vue写的计算器demo
查看>>
Nginx负载均衡器处理Session共享的几种方法(转)
查看>>
按量付费转包年包月之批量操作篇
查看>>
研究人员用 AI 评估小血管病变,可预测病人患中风和痴呆的概率
查看>>
HeRM's :一个命令行食谱管理器
查看>>
这是一篇“干货”,老司机教你VR体验的正确姿势
查看>>
hdu cup
查看>>