Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146954
  • 博文数量: 70
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 770
  • 用 户 组: 普通用户
  • 注册时间: 2017-11-04 11:19
文章分类

全部博文(70)

文章存档

2018年(69)

2016年(1)

我的朋友

分类: LINUX

2018-06-29 22:04:05

8.6 管道符和作业控制
[root@localhost ~]# cat 1.txt | wc -l                //管道符:前面命令的输出作为后面命令的输入
10
[root@localhost ~]# cat 1.txt | grep 'aaa'        //过滤出包含指定字符串的行
aaa1
aaa6

将程序放入到后台:“ctrl+z”。临时暂停。使用命令“fg”将放到后台的命令调出来。
[root@localhost ~]# vim 1.txt 
[1]+  已停止               vim 1.txt
[root@localhost ~]# fg
vim 1.txt

如果有多个放在后台的任务,使用“jobs”查看有哪些任务放在后台。通过"fg+id号"的方式调出指定的任务。
[root@localhost ~]# jobs
[1]-  已停止               vim a.txt                //id号
[2]+  已停止               vim 1.txt

有“fg”那么还有一个“bg”,将命令从前台放到后台。
[root@localhost ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0     32 122976    624 673348    0    0     1     4   29   24  0  0 100  0  
......        //这个命令会 不停显示系统状态信息
[3]+  已停止               vmstat 1

先将这个命令执行,然后使用“ctrl+z”放入后台,然后使用“bg”调到前台。如果有多个需要后面加对应程序的id号,如果不加id,则是最后一个放入后台的命令
[root@localhost ~]# bg
[1]+ vmstat 1 &
[root@localhost ~]#  0  0     32 127588    624 673596    0    0     0     0  405  353  0  0 100  0  0

这样的执行的方式,执行个不停。但是输出个不停,但是还有“命令行提示符”可以进行其他命令的执行。想要停止,就先输入“fg”,-->“ctrl+z”-->"fg"-->"ctrl+c"完全停止命令的执行。在后台这个命令也被停止了。

[root@localhost ~]# sleep 1000
            //就是  睡眠1000秒。
使用“ctrl+z”放到后台。
一个终端放入后台的进程,不能使用另一个终端的jobs查看到;但是可以查看到进程。


8.7 shell变量(上)
linux系统当中已经定义好了一些变量,比如:PATH 、 HOME  、 PWD  、 LOGNAME等
如何查看系统变量呢:

点击(此处)折叠或打开

  1. [root@localhost ~]# env
  2. XDG_SESSION_ID=37
  3. HOSTNAME=localhost.localdomain
  4. SELINUX_ROLE_REQUESTED=
  5. TERM=xterm
  6. SHELL=/bin/bash
  7. HISTSIZE=1000
  8. SSH_CLIENT=192.168.172.1 64980 22
  9. SELINUX_USE_CURRENT_RANGE=
  10. SSH_TTY=/dev/pts/0
  11. USER=root
  12. LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
  13. MAIL=/var/spool/mail/root
  14. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/tmp/:/root/bin
  15. PWD=/root
  16. LANG=zh_CN.UTF-8
  17. SELINUX_LEVEL_REQUESTED=
  18. HISTCONTROL=ignoredups
  19. SHLVL=1
  20. HOME=/root
  21. LOGNAME=root
  22. SSH_CONNECTION=192.168.172.1 64980 192.168.172.128 22
  23. LESSOPEN=||/usr/bin/lesspipe.sh %s
  24. XDG_RUNTIME_DIR=/run/user/0
  25. _=/usr/bin/env
变量名习惯使用大写字母
除了 “env”,还可以使用:
[root@localhost ~]# set        //还可以查看用户自定义的环境变量。shell脚本形式展示


用户自定义
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/tmp/:/root/bin
[root@localhost ~]# a=111
[root@localhost ~]# echo $a
111
[root@localhost ~]# set | grep 111
_=111
a=111

变量名规则:字母、数字下划线,首位不能为数字
变量值有特殊符号时,需要用单引号括起来

点击(此处)折叠或打开

  1. [root@localhost ~]# bc=123
  2. [root@localhost ~]# a="a$bc"
  3. [root@localhost ~]# echo $a
  4. a123
  5. [root@localhost ~]# c='a$bc'
  6. [root@localhost ~]# echo $c
  7. a$bc
注意这里的用法。单引号双引号的区别。

变量的累加:

点击(此处)折叠或打开

  1. [root@localhost ~]# a=1
  2. [root@localhost ~]# b=2
  3. [root@localhost ~]# c="a$b"c
  4. [root@localhost ~]# echo $c
  5. a2c
  6. [root@localhost ~]# echo $a$b
    12

8.8 shell变量(下)
全局变量:
直接设置的变量的生效范围是有限的:

点击(此处)折叠或打开

  1. [root@localhost ~]# echo $SSH_TTY
  2. /dev/pts/0
  3. [root@localhost ~]# name=kgc
  4. [root@localhost ~]# echo $name
  5. kgc
另外打开一个终端:

点击(此处)折叠或打开

  1. [root@localhost ~]# echo $SSH_TTY
  2. /dev/pts/1
  3. [root@localhost ~]# echo $name
  4. [root@localhost ~]#
发现设置的变量,并不能在两一个终端查询到

点击(此处)折叠或打开

  1. [root@localhost ~]# yum whatprovides */pstree
  2. 已加载插件:fastestmirror
  3. Loading mirror speeds from cached hostfile
  4. aa/filelists_db | 3.1 MB 00:00:00
  5. psmisc-22.20-15.el7.x86_64 : Utilities for managing processes on your system
  6. 源 :aa
  7. 匹配来源:
  8. 文件名 :/usr/bin/pstree

点击(此处)折叠或打开

[root@localhost ~]# pstree
......
  1. ├─sshd─┬─sshd───bash─┬─pstree
  2. │ │ └─vmstat
  3. │ └─sshd───bash
  4. ......
这里可以看出,定义的变量是存在与不同的bash中的。
如果想要在不同的子shell中生效则需要使用export来设置变量:

点击(此处)折叠或打开

  1. [root@localhost ~]# a=1
  2. [root@localhost ~]# echo $a
  3. 1
  4. [root@localhost ~]# bash
  5. [root@localhost ~]# echo $a
  6. [root@localhost ~]# export a=2
  7. [root@localhost ~]# echo $a
  8. 2
  9. [root@localhost ~]# bash
  10. [root@localhost ~]# echo $a
  11. 2
并且,变量的继承是向下的,并不向上。通过"bash"来开启新的子shell。通过“exit”来回到上一层shell

取消变量:

点击(此处)折叠或打开

  1. [root@localhost ~]# echo $a
  2. 2
  3. [root@localhost ~]# unset a
  4. [root@localhost ~]# echo $a
  5. [root@localhost ~]#


8.9 环境变量配置文件
/etc/profile:用户环境变量,交互,登录才执行
/etc/bashrc:用户不登录,执行shell生效
~/.bashrc:仅在当前用户生效的...
~/.bash_profile:当前用户的文件。修改过后,需要通过加载让它生效:] # source .bash_profile
~/.bash_history
~/.bash_logout

*自己定义命令行提示符格式:
[root@localhost ~]# echo $PS1
[\u@\h \W]\$                //这就是我们执行命令时,左边的提示符格式
我们自己做一个修改:

点击(此处)折叠或打开

  1. [root@localhost ~]# echo $PS1
  2. [\u@\h \W]\$
  3. [root@localhost ~]# cd /etc/sysconfig/network-scripts/
  4. [root@localhost network-scripts]# PS1='[\u@\h \w]\$'
  5. [root@localhost /etc/sysconfig/network-scripts]#
  6. [root@localhost /etc/sysconfig/network-scripts]#PS1='<\u@\h \W>\$'
  7. #
还能带颜色呢:

点击(此处)折叠或打开

  1. [root@localhost00m:~# cd    PS1='[\033[01;32m\]\u@\h\[\033[\00m\]:\[\033[01;36m\]\w\[\033[00m\]]\$'

  2. [root@localhost00m:/tmp#    //记得上面的代码,直接粘贴到linux终端就能看到颜色的变化了

直接登陆系统进入到的是PS1环境。而比如mysql的登陆环境,登陆之后,就是登陆到PS2的环境
或者是如下环境:

点击(此处)折叠或打开

  1. [root@localhost00m:/tmp#for i in `seq 1 10`
  2. > do
  3. > echo $i
  4. > done
  5. 1
  6. 2
  7. 3
  8. 4
  9. 5
  10. 6
  11. 7
  12. 8
  13. 9
  14. 10
  15. [root@localhost00m:/tmp#


阅读(1280) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~