8.6 管道符和作业控制
cat 1.txt |wc -l;cat 1.txt |grep ‘aaa‘
ctrl+z 暂停一个任务
jobs 查看后台的任务
bg[id] 把任务调到后台
fg[id] 把任务调到前台
命令后面加 & 直接丢到后台
8.7 shell变量 上
PATH,HOME,PWD,LOGNAME
env 命令
set 命令多了很多变量,并且包括用户自定义的变量
自定义变量a=1
变量命名规则:字母,数字,下划线,首位不能为数字
变量值有特殊符号时,需要用单引号括起来
变量的累加
全局变量export b=2
unset变量
[[email protected] ~]# env
XDG_SESSION_ID=1
HOSTNAME=aming-01
SELINUX_ROLE_REQUESTED=
TERM=xterm-256color
SHELL=/bin/bash
HISTSIZE=2000
SSH_CLIENT=192.168.104.1 55630 22
SELINUX_USE_CURRENT_RANGE=
OLDPWD=/tmp/d6z
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:
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
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.104.1 55630 192.168.104.160 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env
[[email protected] ~]# a1=2
[[email protected] ~]# echo $a1
2
[[email protected] ~]# a_2=3
[[email protected] ~]# echo $a_2
3
[[email protected] ~]# _a3=4
[[email protected] ~]# echo $_a3
4
[[email protected] ~]# 5a=6
-bash: 5a=6: 未找到命令
[[email protected] ~]# a=‘a$bc‘
[[email protected] ~]# echo $a
a$bc
[[email protected] ~]# b="a$bc"
[[email protected] ~]# echo $b
a
[[email protected] ~]# b=2
[[email protected] ~]# c=a"$b"c
[[email protected] ~]# echo $c
a2c
8.8 shell变量 下
[[email protected] ~]# w
23:57:06 up 1:53, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root pts/0 192.168.104.1 22:04 2.00s 0.23s 0.00s w
[[email protected] ~]# echo $SSH_TTY
/dev/pts/0
非全局变量,仅在当前登陆的TTY有效
export b=1 全局变量,仅在当前 shell 里有效
shell变量是局部的,而环境变量是全局的。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量。
vi .bash_profile #修改用户环境变量文件
需要注意的是,最好不要把当前路径”./”放到PATH里,这样可能会受到意想不到的攻击。
设置变量的三种方法
1. 在/etc/profile文件中添加变量【对所有用户生效(永久的)】
用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
例如:编辑/etc/profile文件,添加CLASSPATH变量
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效
2.在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
例如:编辑guok用户目录(/home/guok)下的.bash_profile
$ vi /home/guok/.bash.profile
添加如下内容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效
3.直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
在shell的命令行下直接使用[export变量名=变量值]定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
8.9 环境变量配置文件
/etc/profile #用户环境变量,交互,登陆才执行
/etc/bashrc #用户不用登陆,执行 shell 就生效
~/.bashrc
~/.bash_profile
~/.bash_history
~/.bash_logout #用户退出时,需要做的动作,如删除命令历史记录
/etc/profile /etc/bashrc 不要轻易修改这两个环境变量配置文件,建议修改用户环境变量 ~/.bashrc ~/.bash_profile
原文地址:http://blog.51cto.com/9298822/2084381
时间: 2024-10-31 06:08:44