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环境变量的含义 http://www.linuxnote.org/prompt_command-environment-variables.html
管道符和作业控制
管道府就是将前面输出传递给后面的命令
比如
cat 1.txt | wc -l cat 1.txt |grep 'aaa'
这个就是将前面的内容传给后面的wc命令去查看多少line
用法比较灵活,比如ls |wc -l 可以查看当前目录下有多少文件
作业控制
作业就是当前的操作
ctrl z 就是暂停一个工作
比如 sleep 100 忽然就停了 这个时候可以ctrl z 停止
然后有一个命令交做 bg 后台操作 fg 前台显示操作
可以看到 首先是被停止了 然后bg 到后台运行了 查看目前的工作 jobs可以看到还在运行
bg fg如果不加id号的话,就是默认最后一个
shell变量
env 查看系统变量,通常都是大写字母
set不仅仅是系统变量还有自定义变量,如果自己自定义了变量,在这里就可以查看到。echo命令可以查看变量的值
注意单引号和双引号的区别,单引号不会解析变量的内容
set | less 把set的结果传到less命令中
也找到了a=111 这个自定义的变量
变量名命名规则
- 字母,数字,下划线可以,首位不能是数字
- 变量值有特殊符号的时候,如果想显示特殊符号就用单引号引起来。
单引号会将原样输出而双引号会将变量值输出
全局变量
w可以看到当前登陆的用户和tty终端
echo $SSH_TTY可以查看当前本机使用的tty
如果不同的tty下创建的变量,是不能互相访问的
所以可以从上面看出 TTY0创建$A变量的值 TTY2是无法访问到的
如果是一个TTY下创建的新的bash下的bash也是无法访问上一级bash的变量的,这种变量叫做本地变量 local
想把变量变成全局变量,需要使用export 变量=值 才行
export A 这个时候所有下层的bash就可以访问到父级和爷级的变量了,但是反之如果子辈或孙辈创建的变量,父辈或者爷爷辈是不能访问的,也就是全局变量是自上而下,而非自下而上
export 变量=值
取消变量 unset 变量名 记得变量名不包括$
环境变量的配置文件
配置文件要从两个层面理解,一个是系统层面,就是一旦改动了全部的用户都受影响。另一个是用户层面,就是只是对当前用户生效。
系统层面
etc/profile 用户环境变量,交互,登陆才执行
etc/bashrc 用户不用登陆,执行shell生效
用户层面 用户家目录下 所谓的/. 这个点的作用就是source命令的作用,就是让这个文件生效。但是不能执行这个文件。(调用顺序 .bash_profile---->.bashrc----->/etc/bashrc)
~/.bashrc 系统/用户执行shell脚本的时候启用。不一定需要用户登陆。 这个文件里又会调用/etc/bashrc这个文件
~/.bash_profile 用户登陆时候加载 有一些相关的设定都可以在用户的这个文件里定义 当然这样定义的话只是针对当前用户
这里面会自动加载调用 .bashrc
~/.bash_history
~/.bash_logout 定义用户退出的时候的操作。比如每次用户退出的时候删除所有的操作历史,就可以把这个命令放到这个文件里。
profile 和 bashrc的文件区别是 profile是用户登陆的时候自动加载profile文件, 然后调用bashrc。bashrc是执行shell脚本的时候调用bashrc里的配置。
$PS1变量,指的就是用户登录后命令行左侧显示的信息。
u 用户 h hostname W 最后一层 当然也可以改
当我们登陆的时候,shell界面的左边会显示出一串东西。
第一个是当前用户
第二个是@
第三个是hostname
第四个所在目录的最后一个层级目录
如果把PS1变量的值改了换可以看看 比如W换成w
或者去掉方括号
也可以加颜色
PS2是用在另一个shell终端里面的。mysql命令行使用的就是PS2
原文地址:http://blog.51cto.com/13691454/2106840