Shell基础知识 (2) 之 管道符和作业控制、变量、环境变量配置文件
2018-04-02 00:00
966 查看
8.6 管道符和作业控制
1. 管道符“|”
管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。cat 1.txt | wc -l cat 1.txt |grep 'aaa' find ./ -type f | wc -l
2. 作业控制
2.1 作业和进程的区别
进程和作业的概念也有区别。一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令。例如“nroff -man ps.1|grep kill|more”这个作业就同时启动了三个进程。2.2 作业控制
作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。shell将记录所有启动的进程情况,在每个进程过程中,用户可以任意地挂起进程或重新启动进程。作业控制是许多shell(包括bash和tcsh)的一个特性,使用户能在多个独立作业间进行切换。使用 Ctrl + z 停止进程并放到后台
vim 1.txt [1]+ 已停止 vim 1.txt vim aa.txt [2]+ 已停止 vim aa.txt
使用jobs命令查看后台所有运行的进程
jobs [1]- 已停止 vim 1.txt [2]+ 已停止 vim aa.txt
使用fg[id号]将任务调到前台
fg 1
再查看进程
jobs [1]+ 已停止 sleep 200 [2]- 运行中 sleep 100 &
使用bg[id号]将任务调到后台,如果进程还在不断刷新运行的话,其实进程没有停止
bg 1 [1]+ vim 1.txt & [1]+ 已停止 vim 1.txt
使用sleep停止
sleep 1000 停止1000秒 jobs [1] 已停止 vim 1.txt [2] 已停止 vim aa.txt [3]- 已停止 sleep 1000
8.7/8.8 shell变量
1. 变量
在shell中有3种变量:系统变量,环境变量和用户自定义变量,其中系统变量在对参数判断和命令返回值判断时会使用,环境变量主要是在程序运行时需要,用户自定义变量在编程过程中使用量最多。==系统内置变量一般都是大写,而自己定义的变量尽量写成小写区分。==2. 显示系统的内置变量命令 env
env 显示系统的内置变量命(只保留一部分) HOSTNAME=localhost.localdomain SHELL=/bin/bash HISTSIZE=1000 USER=root MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root LANG=zh_CN.UTF-8 ...
3. 显示系统内的变量也可以用户自定义变量 set
a=1 自定义变量 1=a 错误的格式 -bash: 1=a: 未找到命令 set |grep 1 查看是1的自定义变量 a=1
4. shell变量的格式
变量名规则:可以是字母、数字下划线,首位不能为数字变量值有特殊符号时需要用单引号括起来,比如 a='a b c',a='a$b#C'
尽量少用大写字母,因为大写字母大多都是系统的一些变量
有很多特殊的关键字,最好不要用作变量名,比如 if for do done
变量的累加
a=1 b=2 echo $a$b 12 a='a$bc' echo $a$b a$bc2 c="a$bc" **?是$bc没定义,不能识别的原因吗?** echo $c a c="a$b"c echo $c a2c c='a$b'c echo $c a$bc a=a"$b"c 学会这样使用"",是命令更清晰
全局变量
export命令 设置或显示环境变量
在shell中执行程序时,shell会提供一组环境变量,这也使shell变量只能在当前使用。export可新增,修改或删除环境变量,供后续执行的程序使用,已达到使shell达到类似全局变量的目的。export的效力仅及于该此登陆操作,shell退出时失效。
==父shell中定义的NAME环境变量传递到了子shell中,在子shell中定义的NAME环境变量没有被带到父shell中。
如何改变呢?==
永久的:需要修改/etc/profile配置文件,export变量永久生效。
打开这个文件后,会看到里面有很多已经定义好的变量,按照格式把自定义变量写入进去,然后source /etc/profile重启服务就可以生效了
临时的:使用export命令进行全局行声明即可,变量在关闭shell时失效
aming=linux echo $aming linux bash 进入bash echo $aming 无结果 exit 退出bash export aming=linux 全局声明 bash echo $aming linux
查看当前用户在哪个shell中 pstree命令
pstree命令可以把linux系统中所有进程通过树形结构打印出来
pstree |grep bash |-login---bash |-sshd---sshd---bash-+-grep bash pstree |grep bash |-login---bash |-sshd---sshd---bash---bash-+-grep
取消变量 unset命令
unset + 变量名 把设置的变量取消掉
echo $aming linux unset aming echo $aming
8.9 环境变量配置文件
1. 系统级环境变量配置文件
/etc/profile 用户环境变量,交互,登录才执行 /etc/bashrc 用户不用登录,执行shell就生效
2. 普通用户级境变量配置文件
~/.bashrc 该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。例如你可以将用户自定义的alias或者自定义变量写到这个文件中。 ~/.bash_profile 定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。 ~/.bash_history 记录命令历史用的。 ~/.bash_logout 当退出shell时,会执行该文件。可以把一些清理的工作放到这个文件中。
相关文章推荐
- L24 shell基础知识(二)管道符-作业控制-shell变量-环境变量配置文件
- 8.6 管道符和作业控制;8.7—8.8 shell变量(上下);8.9 环境变量配置文件
- 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
- 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
- 五周第四次课 2017.11.16 管道符和作业控制、shell变量、环境变量配置文件
- 管道符和作业控制 shell变量 环境变量配置文件
- 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
- 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
- 管道符和作业控制、shell变量、环境变量配置文件、添加操作记录审计
- 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
- 管道符和作业控制,shell变量和环境变量配置文件
- LINUX系统学习笔记管道符和作业控制 ,shell变量 , 环境变量配置文件
- 11.16 管道符和作业控制 , shell变量 , 环境变量配置文件
- 管道符和作业控制、shell变量和环境变量配置文件
- 管道符和作业控制、shell变量、环境变量配置文件
- Linux笔记(管道符/作业控制,shell变量,环境变量配置文件,常见问题)
- 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
- 管道符,作业控制,shell变量,全局变量,环境变量的配置文件
- 管道符和作业控制 shell变量 环境变量配置文件
- 五周第四次课(11月16日) 8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件