8.6 管道符和做业控制 8.7/8.8 shell变量 8.9 环境变量配置文件

管道符 |

  • 管道符的做用是将前面一个命令的输出做为后面一个命令的输入
[root@linux-128 ~]# cat /etc/passwd |wc -l
27
[root@linux-128 ~]# cat /etc/passwd |grep "root"
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

做业控制

  1. 当一个进程运行时,ctrl+z 能够暂停这个任务
[root@linux-128 ~]# sleep 100
^Z
[1]+  已中止               sleep 100
  1. 当暂停后,能够输入fg(foreground简写)命令来恢复这个进程,让它在前端继续运行。
[root@linux-128 ~]# fg
sleep 100
  1. 咱们也可使用命令bg(background简写)将暂停的进程直接丢到后台运行。
[root@linux-128 ~]# bg
[1]+ sleep 100 &
  1. 咱们可使用命令jobs来查看有那些进程是被暂停了。
[root@linux-128 ~]# jobs
[1]-  已中止               sleep 100
[2]+  已中止               sleep 200
  1. 咱们能够直接将一条命令丢在后台运行。
[root@linux-128 ~]# sleep 300 &
[3] 2180
[root@linux-128 ~]# jobs
[1]-  已中止               sleep 100
[2]+  已中止               sleep 200
[3]   运行中               sleep 300 &

变量

  • 变量就是使用一个比较简单的字符串来代替某些具备特殊意义的设定以及数据。
  • 环境变量PATH,它是shell预设的一个变量,一般shell预设的变量都是大写的。
[root@linux-128 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@linux-128 ~]# echo $HOME
/root
[root@linux-128 ~]# echo $HISTSIZE
5000

命令env

  • 使用env命令能够列出系统预设的所有系统变量
[root@linux-128 ~]# env
XDG_SESSION_ID=1
HOSTNAME=linux-128
TERM=xterm
SHELL=/bin/bash
HISTSIZE=5000
SSH_CLIENT=192.168.88.1 54716 22
SSH_TTY=/dev/pts/0
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
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.88.1 54716 192.168.88.128 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env
  • HOSTNAME:表示主机的名称;
  • SHELL:表示当前用户的shell类型;
  • HISTSIZE:表示历史记录数;
  • MAIL:表示当前用户的邮件存放目录;
  • PATH:改变量决定了shell将到那些目录中寻找命令或者程序;
  • PWD:表示当前目录;
  • LANG:这是与语言相关的环境变量,多语言环境能够修改此环境变量;
  • HOME:表示当前用户的家目录;
  • LOGNAME:表示当前用户的登陆名;

命令set

  • 命令set不只能够显示系统预设的环境变量,还能够显示用户自定义的变量。

自定义变量规则:前端

  • 设定变量的格式为a=b,其中a为变量名,b为变量的内容,等号两边不能有空格;
  • 变量名只能由字母,数字以及下划线组成,并且不能以数字开头。
  • 当变量值带有特殊字符(如空格)时,须要加上单引号。

[root@linux-128 ~]# name=wu zhou
-bash: zhou: 未找到命令

[root@linux-128 ~]# name='wu zhou'
[root@linux-128 ~]# echo $name
wu zhou
  1. 变量内容自己就带有单引号,这个时候须要加上双引号
[root@linux-128 ~]# name="wu'zhou"
[root@linux-128 ~]# echo $name
wu'zhou
  1. 若是变量内容中须要用到其余命令,运行结果则可使用反引号;
[root@linux-128 ~]# name=`pwd`
[root@linux-128 ~]# echo $name
/root
  1. 变量内容能够累加其余变量的内容,单须要加上双引号
[root@linux-128 ~]# a=1
[root@linux-128 ~]# b=2
[root@linux-128 ~]# c=3
[root@linux-128 ~]# d="$a$b$c"
[root@linux-128 ~]# echo $d
123
  1. 查看当前在那个终端下:
[root@linux-128 ~]# echo $SSH_TTY
/dev/pts/0
  1. 若是再当前shell中运行bash命令,则会进入一个新的shell中,这个shell是原来shell的子shell,咱们能够用pstree来查看: 须要先安装一个包:
[root@linux-128 ~]# yum install -y psmisc

systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon
        ├─firewalld───{firewalld}
        ├─irqbalance
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash─┬─bash───pstree
        │                    └─2*[sleep]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
  1. 设置全局变量
export a=11
  • 注意:export声明变量a后,只会让该shell的子shell或者孙shell生效,可是不会让它的父shell和其余终端的shell生效。
  1. 撤销变量 unset 变量名

系统环境变量和我的环境变量

  • /etc/profile 用户环境变量,交互,登陆才执行
  • /etc/bashrc 用户不用登陆,执行shell就生效
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.bash_history
  • ~/.bash_logout
  • PS1='[\033[01;32m]\u@\h[\033[00m]:[\033[01;36m]\w[\033[00m]$ '

环境变量分为系统层次变和用户层次linux

  • /etc/profile 设置系统环境变量,无论针对哪一个用户这些环境变量都会生效,可是设置这个配置文件

不太好,编辑的时候会有一段提示: 这不是一个好主意来改变这个文件,除非你知道你 正在作的事情。若是你想更改某些环境变量,最好在/etc/profile.d /下去自定义,建立格式为XXX.sh, 在将来的更新将防止合并的必要性。shell

[root@wuzhou ~]# ls /etc/profile.d
colorls.csh glib2.csh lang.csh less.csh path.sh vim.sh
colorls.sh glib2.sh lang.sh less.sh vim.csh which2.sh

[root@wuzhou ~]# vim /etc/profile.d/path.sh 
#!/bin/path
export PATH=$PATH:/tmp/:/data/bin/
  • 编辑完后要source /etc/profile,加载的时候会调用profile.d下面的全部文件。vim

  • /etc/bashrc 设置PS1和umask; 它和/etc/profile同样,在/etc/bashrc设置很差,要在/etc/profile.d下去定义,建立格式为.sh的文件bash

  • 进去编辑配置,完成后source /etc/profile 加载一下。less

[root@wuzhou ~]# vim /etc/profile.d/umask.sh
#bsah/bin
PS1="[\u@\h-\t \W]\$ "
[root@wuzhou ~]# source /etc/profile
[root@wuzhou-21:41:13 ~]$ ls
  • \u 用户名 \h主机名 \t 时间 \W 当前目录 \w 目录的完整路径 $ 就是#,若是普通用户就是$ssh

  • .bash_profile 定义用户本身的环境变量,每一个用户均可以使用该文件输入专用于本身使用的code

  • shell信息,当用户登录时,该文件仅仅执行一次blog

  • .bashrc :文件包含专属用户本身的shell的bash信息,登录时以及每次打开新的shell时,该文件都被读取。能够将用户之定义的alias或者自定义变量写到这个文件中进程

  • .bash_history 记录命令历史用的

  • .bash_logout 退出shell时,会执行该文件,能够把一些清理的工做放到这个文件中。

  • .更改PS1变量值,变颜色: [root@hao-01 ~]# PS1='[\033[01;32m]\u@\h[\033[00m]:[\033[01;36m]\w[\033[00m]$'

相关文章
相关标签/搜索