ahxcjxzxh 发表于 2018-8-24 09:19:01

管道符、shell变量、配置文件

管道符和作业控制
  | 把一个文件的输出作为后面的输入
  cat 1.txt |wc -l ;
  # cat 2.txt |wc -l
  2
  cat 1.txt |grep 'aaa'
  # cat 2.txt |grep '1' //过滤出含有字符串‘1’的行
  11
  ctrl z 暂停一个任务
  # vi 1.txt
  +已停止               vi 1.txt
  jobs查看后台停止的任务
  # jobs
  +已停止               vi 1.txt
  bg把任务调到后台并运行
  # vmstat 1
  执行ctrl+z
  # jobs
  # bg 1 //命令在屏幕显示,仍然可以执行其他命令
  # fg 1 //命令在屏幕显示,执行其他命令不显示
  Ctrl+c中断当前进程
  # jobs
  # sleep 1000
  ^Z
  +已停止               sleep 1000
  # bg 1
  + sleep 1000 &
  # jobs
  +运行中               sleep 1000 &
  # sleep 200
  ^Z
  +已停止               sleep 200
  # jobs
  -运行中               sleep 1000 &
  +已停止               sleep 200
  # bg 2
  + sleep 200 &
  # jobs
  -运行中               sleep 1000 &
  +运行中               sleep 200 &
  fg把任务调到前台
  # fg 1
  vi 1.txt
  命令后面加&直接丢到后台
  # sleep 30 &//一次性丢到后台运行
   2497
  # jobs
  -运行中               sleep 200 &
  +运行中               sleep 30 &
shell变量
  PATH,HOME,PWD,LOGNAME
  env命令
  # env//获取变量(系统变量通常都是大写的英文字母)
  XDG_SESSION_ID=1
  HOSTNAME=localhost.localdomain
  TERM=xterm
  SHELL=/bin/bash
  HISTSIZE=6000
  set命令多了很多变量,并且包括用户自定义的变量
  # set//系统变量和用户自定义的变量
  自定义变量a=1
  # a=111
  # echo $a
  111
  # set |grep '111'//自定义变量出现在set里
  _=111
  a=111
  变量名规则:字母、数字下划线,首位不能为数字
  变量值有特殊符号时需要用单引号括起来
  # a='a b c'
  # echo $a
  a b c
  # c="a$bc" //加双引号$会被系统当作指定变量的
  # echo $c
  a
  # c='a$bc'
  # echo $c
  a$bc
  变量的累加
  # a=1
  # b=2
  # echo $a$b
  12
  # a='$abc2' //单引号里的$会被系统认为只是个符号
  # echo $a$b
  $abc22
  # d=b”$b"b
  # echo $d
  b2b
  全局变量export b=2
  # w
  22:44:03 up1:10,2 users,load average: 0.00, 0.01, 0.05
  USER   TTY      LOGIN@   IDLE   JCPU   PCPU WHAT
  root   pts/0   21:33    3.00s0.26s0.00s w
  root   pts/1   21:38    1:04m0.08s0.04s -bash
  # echo $SSH_TTY//查看自己在哪个tty终端下面
  /dev/pts/0
  # lsx=linux//非全局变量
  # echo $lsx
  Linux
  # bash//子shell
  # echo $lsx //结果为空
  # yum install -y psmisc//安装pstree命令
  # export lsx=linux //定义全局变量(向下面的子shell有效),在其他终端是不生效的
  # bash //子shell
  # echo $lsx
  linux
  unset变量名
  # a=1
  # echo $a
  1
  # unset a //取消变量
  # echo $a //结果为空
环境变量配置文件
  /etc/profile(系统层) 用户环境变量,交互,登录才执行
  预设了几个重要的变量。PATH、USER、LOGNAME、MAIL、HOSTNAME、HISTSIZE、umask.
  /etc/bashrc (系统层)用户不用登录,执行shell就生效
  预设umask、PS1
  # echo $PS1
  [\u@\h \W]\$
  //\u指用户、\h指主机名、\W当前目录、\$指字符#(普通用户显示)$
  # PS1='[\u@\h \w]\$'
  #cd /etc/sysconfig/
  #
  #PS1='{\u@\h \w}\$'
  {root@localhost /etc/sysconfig}#
  ~/.bashrc(用户层)
  该文件包含了专属于自己的shell的bash信息,当登录和每次打开新的shell时,该文件会被读取。如:可以将用户自定义的别名和变量写到这里
  ~/.bash_profile
  该文件定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用该文件输入属于自己的shell信息,当用户登录时,该文件只执行一次
  ~/.bash_history
  该文件用于记录历史命令
  ~/.bash_logout
  当退出shell时,会执行该文件。可以将一些清理的工作放到这里
  PS1='[\[\033\u@\h\[\033:\[\033\w\[\033]\$ '
  PS2..

页: [1]
查看完整版本: 管道符、shell变量、配置文件