博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
五周第四次课(4月23日)8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件...
阅读量:6965 次
发布时间:2019-06-27

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

hot3.png

8.6 管道符 |

  • 管道符的作用是将前面一个命令的输出作为后面一个命令的输入
[root@linux-151 ~]# cat /etc/passwd |wc -l27
[root@linux-151 ~]# cat /etc/passwd |grep "root"root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin

作业控制

当一个进程运行时,ctrl+z 可以暂停这个任务

[root@linux-151 ~]# sleep 100^Z[1]+  已停止               sleep 100

当暂停后,可以输入fg(foreground简写)命令来恢复这个进程,让它在前端继续运行。

[root@linux-151 ~]# fgsleep 100

我们也可以使用命令bg(background简写)将暂停的进程直接丢到后台运行。

[root@linux-151 ~]# bg[1]+ sleep 100 &

我们可以使用命令jobs来查看有那些进程是被暂停了。

[root@linux-151 ~]# jobs[1]-  已停止               sleep 100[2]+  已停止               sleep 200

我们可以直接将一条命令丢在后台运行。

[root@linux-151 ~]# sleep 300 &[3] 2180[root@linux-151 ~]# jobs[1]-  已停止               sleep 100[2]+  已停止               sleep 200[3]   运行中               sleep 300 &

8.7/8.8 shell变量

  • 变量就是使用一个比较简单的字符串来代替某些具有特殊意义的设定以及数据。
  • 环境变量PATH,它是shell预设的一个变量,通常shell预设的变量都是大写的。
[root@linux-151 ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin[root@linux-151 ~]# echo $HOME/root[root@linux-151 ~]# echo $HISTSIZE5000

命令env

  • 使用env命令可以列出系统预设的全部系统变量
[root@linux-151 ~]# envXDG_SESSION_ID=1HOSTNAME=linux-151SELINUX_ROLE_REQUESTED=TERM=xtermSHELL=/bin/bashHISTSIZE=1000SSH_CLIENT=192.168.0.103 53060 22SELINUX_USE_CURRENT_RANGE=SSH_TTY=/dev/pts/0USER=rootMAIL=/var/spool/mail/rootPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binPWD=/rootLANG=zh_CN.UTF-8SELINUX_LEVEL_REQUESTED=HISTCONTROL=ignoredupsSHLVL=1HOME=/rootLOGNAME=rootSSH_CONNECTION=192.168.0.103 53060 192.168.0.151 22LESSOPEN=||/usr/bin/lesspipe.sh %sXDG_RUNTIME_DIR=/run/user/0_=/usr/bin/env
  • HOSTNAME:表示主机的名称;
  • SHELL:表示当前用户的shell类型;
  • HISTSIZE:表示历史记录数;
  • MAIL:表示当前用户的邮件存放目录;
  • PATH:改变量决定了shell将到那些目录中寻找命令或者程序;
  • PWD:表示当前目录;
  • LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量;
  • HOME:表示当前用户的家目录;
  • LOGNAME:表示当前用户的登录名;

命令set

  • 命令set不仅可以显示系统预设的环境变量,还可以显示用户自定义的变量。

自定义变量规则:

  • 设定变量的格式为a=b,其中a为变量名,b为变量的内容,等号两边不能有空格;
  • 变量名只能由字母,数字以及下划线组成,而且不能以数字开头。
  • 当变量值带有特殊字符(如空格)时,需要加上单引号。
[root@linux-151 ~]# name=l em-bash: em: 未找到命令[root@linux-151 ~]# name='l em'[root@linux-151 ~]# echo $namel em

变量内容本身就带有单引号,这个时候需要加上双引号

[root@linux-151 ~]# name="l'em"[root@linux-151 ~]# echo $namel'em

如果变量内容中需要用到其他命令,运行结果则可以使用反引号;

[root@linux-151 ~]# name=`pwd`[root@linux-151 ~]# echo $name/root

变量内容可以累加其他变量的内容,但需要加上双引号

[root@linux-151 ~]# a=1[root@linux-151 ~]# b=2[root@linux-151 ~]# c=3[root@linux-151 ~]# d="$a$b$c"[root@linux-151 ~]# echo $d123

查看当前在哪个终端下:

[root@linux-151 ~]# echo $SSH_TTY/dev/pts/0

如果再当前shell中运行bash命令,则会进入一个新的shell中,这个shell是原来shell的子shell,我们可以用pstree来查看: 需要先安装一个包:

[root@linux-151 ~]# yum install -y psmiscsystemd─┬─NetworkManager───2*[{NetworkManager}]        ├─agetty        ├─auditd───{auditd}        ├─chronyd        ├─crond        ├─dbus-daemon        ├─firewalld───{firewalld}        ├─irqbalance        ├─lvmetad        ├─master─┬─pickup        │        └─qmgr        ├─polkitd───5*[{polkitd}]        ├─rsyslogd───2*[{rsyslogd}]        ├─sshd───sshd───bash─┬─bash───pstree        │                    └─2*[sleep]        ├─systemd-journal        ├─systemd-logind        ├─systemd-udevd        ├─tuned───4*[{tuned}]        └─vmtoolsd───{vmtoolsd}

设置全局变量

export a=11
  • 注意:export声明变量a后,只会让该shell的子shell或者孙shell生效,但是不会让它的父shell和其他终端的shell生效。

撤销变量

unset 变量名

8.9 系统环境变量和个人环境变量

  • /etc/profile 用户环境变量,交互,登录才执行
  • /etc/bashrc 用户不用登录,执行shell就生效
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.bash_history
  • ~/.bash_logout
  • PS1='[\033[01;32m]\u@\h[\033[00m]:[\033[01;36m]\w[\033[00m]$ '

环境变量分为系统层次变和用户层次

  • /etc/profile 设置系统环境变量,不管针对哪个用户这些环境变量都会生效,但是设置这个配置文件不太好,编辑的时候会有一段提示: 这不是一个好主意来改变这个文件,除非你知道你 正在做的事情。如果你想更改某些环境变量,最好在/etc/profile.d /下去自定义,创建格式为XXX.sh, 在未来的更新将防止合并的必要性。
[root@lem ~]# ls /etc/profile.dcolorls.csh glib2.csh lang.csh less.csh path.sh vim.shcolorls.sh glib2.sh lang.sh less.sh vim.csh which2.sh[root@lem ~]# vim /etc/profile.d/path.sh #!/bin/pathexport PATH=$PATH:/tmp/:/data/bin/
  • 编辑完后要source /etc/profile,加载的时候会调用profile.d下面的所有文件。

  • /etc/bashrc 设置PS1和umask; 它和/etc/profile一样,在/etc/bashrc设置不好,要在/etc/profile.d下去定义,创建格式为.sh的文件

  • 进去编辑配置,完成后source /etc/profile 加载一下。

[root@lem ~]# vim /etc/profile.d/umask.sh#bsah/binPS1="[\u@\h-\t \W]\$ "[root@lem ~]# source /etc/profile[root@lem-23:35:13 ~]$ ls
  • \u 用户名 \h主机名 \t 时间 \W 当前目录 \w 目录的完整路径 $ 就是#,如果普通用户就是$

  • .bash_profile 定义用户自己的环境变量,每个用户都可以使用该文件输入专用于自己使用的shell信息,当用户登陆时,该文件仅仅执行一次

  • .bashrc :文件包含专属用户自己的shell的bash信息,登陆时以及每次打开新的shell时,该文件都被读取。可以将用户之定义的alias或者自定义变量写到这个文件中

  • .bash_history 记录命令历史用的

  • .bash_logout 退出shell时,会执行该文件,可以把一些清理的工作放到这个文件中。

转载于:https://my.oschina.net/u/3804357/blog/1800070

你可能感兴趣的文章
Swift 的坑:static var 的初始化时机并不确定
查看>>
物联网巨头时代下细分市场独角兽图鉴
查看>>
Spring Boot干货系列:(三)启动原理解析 | 掘金技术征文
查看>>
RunLoop 浅析
查看>>
浅谈 KVC
查看>>
ECS 按量付费VPC实例停机不收费FAQ
查看>>
Android7.1.1Toast崩溃解决方案
查看>>
Hexo主题篇之Next
查看>>
ajax实现步骤,你需要清楚知道!
查看>>
使用扩展的 CodeIgniter 框架实现 RESTful 架构
查看>>
flex 二级导航栏
查看>>
情怀被消费完了,共享民宿靠什么坚守岗位?
查看>>
【技术性】Linux与操作系统知识
查看>>
怎么给视频添加音频或配乐
查看>>
python爬虫的一些技巧
查看>>
小程序音视频功能的原理及应用
查看>>
vuejs2.0 高级实战 全网稀缺 独立开发专属音乐WebAPP 更新中。。。
查看>>
自适应页面的实现方式
查看>>
实战Vue简易项目(3)需求分析
查看>>
我是如何一步步“改造”redux的
查看>>