2018-4-23
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-4-23相关的知识,希望对你有一定的参考价值。
8.6 管道符和作业控制
8.7/8.8 shell变量
8.9 环境变量配置文件
8.6 管道符和作业控制
管道符:表示把一个文件的输出内容传递到后面一个命令。
例子:cat 1.txt|grep 'aaa' // 把1.txt的内容输出交给后面的内容,然后grep把含‘aaa’的都过滤出来。
列出有多少文件
ctrl z 暂停一个任何
例: vim 2.txt的时候我想做别的,就可以先暂停。实际上就是把vim 2.txt丢到后台去了。
把调回来 fg:放回前台(调回前台来)。
jobs 查看暂停(丢到后台)的任务
可以用fg + id号调回
bg放到后台,并运行(如果不加id 就是最后一次运行的)
vim不管停止或者丢到后台都是未运行,尝试一个动态显示的命令vmstat 1 会不停的显示系统的状态
这时候用bg 虽然再后台, 还是依然在输出。这就是bg
sleep 1000 :暂停一千秒,1000秒回复
sleep 100 & 把一条命令放到后台执行(&的作用)
重新打开一个终端无法用jobs查看。
8.7/8.8 shell变量
env获取到变量,查看系统常用变量。set不仅查到系统的,还会查到用户自定义的变量。
等号的左边是变量名字
自定义变量 比如a=11
在set里 就会体现出来(env里没有因为这是用户自己定义的)。
变量名规则:字母,数字下划线,首位不能位数字。(a1=2 _a=2 都可以 1a=2就不可以)
变量值:有特殊符号的时候要用单引号括起来(如果用双引号系统会认为特殊符号为控制符)
变量的累加a=1 b=2 echo $a$b
全局变量:打开两个终端
w查看当前登陆用户
echo $SSH_TTY可以查看当前登陆哪个TTY下
在pts/0上定义一个变量。wt=linux
在pts/1再查看 是没有这个变量的。
bash打开另外一个终端,进入一个新的bash
然后可以用pstree查看进程(如果没有pstree,需要安装psmisc)
目前再bash-pstree这里。先通过sshd打开了一个bash 再运行了一个新的bash(相当于子shell)
这时候再运行echo $wt 也不会生效,仅仅是再刚才的bash里会生效。
exit 退出子shell 又可以生效了。
定义一个变量实际上是非全局的,只是本地的变量,仅仅在这个终端下生效。
那就会有全局变量。
变成全局变量:export wt=linux(后面加变量名和变量值)
//这时候 所有的子shell 都可以生效就是全局变量。(生效的条件只是在这个sshd下面)
如果下面这个bash 就是复制的 或者重新打开一个 也无法生效。
并且这个全局变量是向下的,如果子bash设置的全局变量,在上一层无法生效。
取消变量unset wt(后面跟变量名)
8.9 环境变量配置文件(理解为主)
分成两个维度
系统维度/etc/..
用户维度~/.bash(~是用户家目录)
profile是用户登陆的时候会加载到。
bashrc是用户或系统执行shell脚本就会生效。
一般不动etc,有需求修改用户家目录就可以了
比如 vim .bash_profile
可以在这里面改动(这个改动只是针对用户的,如果需要全局,需要在etc下改动)
其中 有个
前面这个黄点 和前面的source作用是一样的目的都是为了加载配置文件里的配置。
只要执行脚本系统就会自动调用bashrc中的文件。
同行执行bashrc也会自动调用profile。
bash_logout用来定义用户退出时候需要做的操作(如每次退出的时候都要删除命令历史)。
PS1变量。 在etc/bashrc里定义的
登陆时会有[email protected]**。 ~表示用户家目录
u就是用户 h:hostname W:最后一层目录
如果把W改成小w就会显示绝对路径
这里都可以改动比如去掉方块号等。
可以带颜色显示。
还有一个对应的PS2,了解一下就可以了。
以上是关于2018-4-23的主要内容,如果未能解决你的问题,请参考以下文章