2018.1.11 5周4次课
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018.1.11 5周4次课相关的知识,希望对你有一定的参考价值。
五周第四次课(1月11日)
8.6 管道符和作业控制
8.7/8.8 shell变量
8.9 环境变量配置文件
8.6 管道符和作业控制
1. 管道符
前面已经提过管道符|,它用于将前一个指令的输出作为后一个指令的输人。
2. 作业控制
当运行进程时,常用的命令如下:
暂停:按ctrl+Z组合键
fg n:(foreground的简写)恢复第n个进程运行
bg n:(backgroup的简写)把第n个进程放到后台运行
终止:按ctrl+C组合键
jobs:把暂停或在后台的任务列出来。
命令 &:直接把一条命令放到后台执行
实例1:
编辑1.txt文件
暂停任务
编辑aa.txt文件,并暂停
列出暂停的任务
把aa.txt放到后台去运行
实例2
运行vmstat 1
暂停任务【ctrl+Z】
命令【bg】放到后台运行
可以看到在后台运行时,我们可以运行命令对centos7进行操作
命令【fg】恢复到前台,无法运行其他命令
终止任务【ctrl+C】
实例3
直接把一条命令放到后台执行
如何关掉在后台运行的任务呢?如果你没有退出刚才的shell,那么应该先使用命令fg n把任务调到前台,然后按ctrl+c组合键结束任务
另一种情况则是,关闭当前的shell,再次打开另一个shell时,使用jobs命令并不会显示在后台运行或者被暂停的任务。要想关闭这些任务,则需要先知道它们的pid
用命令【ps aux】查找进程,会显示pid号
用命令【kill pid】结束进程。如果遇到结束不了的进程时,可以在kill后面加一个选项,即kill -9 [pid]
8.7/8.8 shell变量
在前面章节中介绍过环境变量PATH,它是shell预设的一个变量。通常,shell预设的变量都是大写的。变量就是使用一个较简单的字符串来替代某些具有特殊意义的设定以及数据。就拿PATH来讲,这个PATH就代替了所有常用命令的绝对路径的设定。有了PATH这个变量,我们运行某个命令时,就不再需要输人全局路径,直接输人命令名即可。
你可以使用echo命令显示变量的值
使用env命令,可列出系统内置预设的环境变量
登录不同的用户,这些环境变量的值也不同。当前显示的是root账户的环境变量。下面简单介绍一下常见的环境变量
HOSTNAME:表示主机的名称。
SHELL:表示当前用户的shell类型。
HISTSIZE:表示历史记录数。
MAIL:表示当前用户的邮件存放目录。
PATH:该变量决定了shell将到哪些目录中寻找命令或程序。
PWD:表示当前目录。
LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量。
HOME : 表示当前用户的家目录。
LOGNAME : 表示当前用户的登录名.
env命令显示的变量是环境变量, 系统预设的变量其实还有很多, 你可以使用命令set把系统预设的全部变量都显示出来
set命令和env命令类似,除了可以查看系统内置的环境变量,还能查看用户自定义的变量。env不会显示用户自定义变量
虽然你可以自定义变量,但是该变量只能在当前shell中生效
在Linux下设置自定义变量,有哪些规则呢?
设定变量的格式为a=b,其中a为变量名,b为变量的内容,等号两边不能有空格。
变量名只能由字母、数字以及下划线组成,而且不能以数字开头。
当变量内容带有特殊字符(如空格)时,需要加上单引号。
变量的累加,变量内容可以累加其他变量的内容,但需要加双引号
变量内容中本身带有单引号,这时就需要加双引号
# myname=" Aming's "
# echo $myname
Aming's
如果变量内容中需要用到其他命令,运行结果则可以使用反引号
# myname=`pwd`
# echo $myname
/root
通过上面几个例子,也许你能看出使用单引号和双引号的区别。使用双引号时,不会取消双引号中特殊字符本身的作用(这里是$),而使用单引号时,里面的特殊字符将全部失去其本身的作用。
全局变量export
1)查看你在哪个终端下:
1终端
定义一个变量
2终端
不显示1终端定义的变量
2)命令【bash】进入一个子shell
进入1终端的子shell
安装pstree命令:yum install psmisc
用pstree命令查看你现在的位置
在子shell里也不会显示父shell创建的自定义变量
退出子shell,回到父shell就显示了
说明创建的自定义变量是本地变量,只在当前终端下生效
创建全局变量用命令【export】
在2终端里还是不显示,这是因为在不同的sshd里
1终端在红框里的sshd里,2终端在黄框里的sshd里
全局变量命令【export】是向下生效,在子shell定义的变量,只有在子shell下的子shell生效。不会向上在父shell里生效
取消变量命令【unset 变量】
8.9 环境变量配置文件
1. 配置文件分2个层次
系统层次
/etc/profile 用户环境变量,交互,登录才执行
/etc/bashrc 用户不用登录,执行shell就生效
用户层次
~/.bashrc
~/.bash_profile
~/.bash_history
~/.bash_logout
编辑”.bash_profile”文件
会自动调用用户家目录下的 .bashrc
# . ~/.bashrc=#source /.bashrc
点【 . 】等同于【source】命令,加载配置文件里的配置
编辑“.bashrc”文件
会自动调用系统/etc目录下的bashrc文件
2. 如果想让设置的环境变量一直生效,该怎么做呢?这分以下两种情况。
允许系统内所有用户登录后都能使用该变量。具体的操作方法是:
在/etc/profile文件的最后一行加人export myname=aming,然后运行source /etc/profile就可以生效了。此时再运行bash命令或者切换到其他账户(如su - test)就可以看到效果
# echo "export myname=Aming”> > /etc/profile
# source!$
source /etc/profile
# bash
# echo $myname
Aming
# exit
exit
# su - test
$ echo $myname
Aming
仅允许当前用户使用该变量。具体的操作方法是:
在用户主目录下的 .bashrc文件的最后一行加人export myname=Aming,然后运行source .bashrc就可以生效了。这时再登录test账户,myname变量则不会生效了。这里source命令的作用是将目前设定的配置刷新,即不用注销再登录也能生效
上面讲了很多系统变量,那么在linux系统中,这些变量存在哪里呢?
/etc/profile:这个文件预设了几个重要的变量, 例如PATH、USER、MAIL、INPUTRC、HOSTNAME、HISTSIZE、umask等
/etc/bashrc: 这个文件主要预设umak以及PS1。这个PS1就是我们在输人命令时前面的那串字符。
除了以上两个系统级别的配置文件外,每个用户的主目录下还有以下几个隐藏文件。
.bash_profile: 该文件定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输人专属于自己的shell信息,当用户登录时,该文件仅仅执行一次
.bashrc: 该文件包含专属于自己的shell的bash信息,当登录或每次打开新的shell时,该文件会被读取。例如,你可以将用户自定义的别名或者自定义变量写到这个文件中
.bash_history:该文件用于记录命令历史
.bash_logout:当退出shell时,会执行该文件。你可以将一些清理的工作放到这个文件中。
3. 变量PS1
PS1就是我们在输人命令时前面的那串字符
编辑/etc/bashrc文件
其中, \u指用户,\ h指主机名,\W指当前目录(如果改为小写w,就会显示绝对路径),\$指字符#(root用户是#,如果是普通用户,则显示为$)。
可以更改方括号[ ]
带颜色:PS1='\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '
变量PS2:进入一个小终端
以上是关于2018.1.11 5周4次课的主要内容,如果未能解决你的问题,请参考以下文章