8.1 shell介绍
8.2 命令历史
8.3 命令补全和别名
8.4 通配符
8.5 输入输出重定向
8.6 管道符和做业控制
8.7/8.8 shell变量
8.9 环境变量配置文件
扩展
bashrc和bash_profile的区别 http://ask.apelearn.com/question/7719html
shell脚本中echo显示内容带颜色 http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.htmllinux
exec的场景用来记录日志shell
source 脚本 -> 就是执行这个脚本.vim
cat 2.sh
#!/bin/bash
echo "children script PID is $$"
echo "now to children script."
export a=2
echo "in children, a=$a"
cat source.sh
#!/bin/bash
echo "fater script PID is $$"
echo "fater script, set a is 1"
export a=1
echo "it will source ./2.sh"
source ./2.sh
echo "now to father script."
echo "fater script, a is $a"
cat exec.sh
#!/bin/bash
echo "fater script PID is $$"
echo "fater script, set a is 1"
export a=1
echo "it will exec ./2.sh"
exec ./2.sh
echo "fater script, a is $a"centos
yum provides "/*/*bin/vim"bash
1、 shell介绍ide
Shell是一个命令解释器,提供用户和机器之间的交互
Shell支持特定语法,好比逻辑判断、循环
每一个用户均可以有本身特定的shell
CentOS7默认shell为bash (Bourne Agin Shell)
还有zsh、ksh等centos7
2、命令历史spa
咱们使用过的命令,就是命令历史,会存放在用户家目录下 /root/.bash_history,能够经过history,查看使用过的命令历史, 这个命令历史数量限制为1000条.net
echo $HISTSIZE 系统内置的环境变量为1000,最大保存1000条
history -c 能够将当前内存中的命令历史清空,可是不会清空/root/.bash_history里面的命令
敲过的命令会在用户正常退出终端时,保存到.bash_history文件中
vi /etc/profile 环境变量HISTSIZE 在/etc/profile 定义,找到HISTSIZE 并修改,执行source /etc/profile命令立刻生效
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S" 定义环境变量,使history显示时间日期
echo $HISTTIMEFORMAT 查看格式
该格式只适用于当前终端,若想环境变量生效,须要把HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S",在配置文件中vi/etc/profile添加 ,保存退出,而后执行source /etc/profile
想命令历史永久保存并不被别人删除,运行chattr +a ~/.bash_history (只能追加,不能删除)
!! 表示执行最后一条命令
!n 表示运行第几条命令(n表明数字)
!echo表示会在历史命令中,从下向上找最近一次的以echo开头的命令执行
3、命令补全和别名
按一次tab能够补全一个命令、一个路径或者是一个文件名,连续按两次tab键,则把全部的命令或者文件名都列出来。在 centos7里支持参数自动补全,须要安装安装包bash-completion;而后重启系统(reboot)生效
yum install -y bash-completion
alias restartnet='systemctl restart network.service' 给systemctl restart network.service起个别名叫restartnet
能够经过alias把一个经常使用且很长的命令取一个别名,若是不想用了,也可使用unalias取消别名,直 接执行alias命令,则会看到系统中全部的别名
alias存放:
第一个在用户家目录下.vi .bashrc 文件下
第二个在/etc/profile.d目录下的colorgrep.sh、colorls.sh这些脚本中定义的
使用unalias能够取消自定义别名,命令格式:unalias 别名
4、通配符
通配符 *,表示0个或多个字符
通配符?,表示任意一个字符
中括号[], [0-9a-zA-Z].txt表示0-9a-zA-Z范围内的任意.txt文件
花括号{}, ls {1,2,3,a}.txt表示括号内任意.txt文件
5、输入输出重定向
> 输出
< 输入
cat 1.txt > 2.txt,大于号 > 表示将前面的命令输出,直接输入到后面的文件里面去,这里是指将1.txt的内容重定向到2.txt 里面去,以前2.txt的内容会被删除
cat 2.txt >> 3.txt,两个大于号>>表示追加,不会删除3.txt的内容,将2.txt的内容追加到3.txt里面去。
lsad 2>a.txt 错误输出, 2大于号表示将命令产生的错误信息输入到一个文件里去
lsaaa 2>> a.txt 表示把错误信息追加剧定向到a.txt
ls [12].txt adads.txt &>a.txt &> 把正确的和错误的信息输入到a.txt中
ls wee.txt [12].txt &>>a.txt &>>把正确的和错误的信息追加到a.txt中
ls [12].txt tyr.txt > 2.txt 2>a.txt 表示将正确的信息输入到2.txt 错误的输入到a.txt
wc -l < 1.txt,表示把1.txt文件内容输入重定向到命令wc -l中去,(左边必须是命令,不能由文件到文件,不多用,了解便可)
6、管道符和做业控制
管道符|,把前面的命令输出的结果交给后面的命令
cat 1.txt |wc -l
cat 1.txt |grep 'd'
命令wc -l :统计文件数量
命令grep: 用来过滤指定关键词的命令,只要文件中含有关键词,就会把这一行过滤出来
做业控制:
ctrl + z 临时暂停一个正在执行的任务
可使用fg (foreground)命令恢复
若是暂停了多个任务,用jobs查看在后台运行的任务
若是想从新调回,须要输入fg [id],也可使用bg (background)命令放到后台运行去,用法bg [id]
bg[id] = background把任务调到后台运行
fg[id] =foreground把任务调至前台运行
sleep 1000 sleep命令 让机器休眠1000秒
sleep 100 & 后面加& 直接把任务放到后台运行
ps aux | grep sleep 查看sleep进程
7、shell变量
env命令能够查看经常使用的环境变量
set 命令不只能够查看系统内置的环境变量,还能够查看用户自定义的变量
自定义变量
a=111
变量名规则
变量名能够是字母、数字、下划线,开头不能是数字
变量的值有特殊符号时要用单引号括起来
变量的累加
用双引号括起来
全局变量
使用echo $SSH_TTY查看当前所在终端
在终端1中定义一个变量,终端2是看不到的
’
bash是shell的一个子bash,经过pstree查看,若是没有命令使用 : yum install -y psmisc 安装
在第二个bash下,第一个bash设置的环境变量在第二个bash不生效
全局变量在子shell中生效,运行bash打开子shell
设置全局变量,使用 export a=linux 可让变量在子shell中也生效
取消变量: unset a
8、环境变量配置文件
环境变量配置文件可分为:系统层次配置文件和用户层次配置文件
系统层次配置文件,全局生效(/etc下的文件):
一、/etc/profile用户环境变量,交互,登陆才执行
二、/etc/bashrc用户不用登陆,执行shell就生效
用户层次配置文件(用户家目录下的文件):
一、~/.bashrc
二、~/.bash_profile
—般咱们不要编辑系统层次的配置文件,在有须要时,能够编辑用户层次的配置文件.bash_profile
source .bash_profile和 . .bash_profile做用同样,加载配置文件里的配置
~/.bash_history,用来记录命令历史
~/.bash_logout,用来定义用户退出的时候须要作的一些操做
更改完成后使用 source .bash_profile 加载配置文件中的配置
PS1是在/etc/bashrc里面定义的,用于定义命令左边的字符串显示
echo $PS1
W修改成w,会变成绝对路径,PS1='\u@\h \w\$' 去掉[ ] ,PS1='<\u@\h \w> \$' [ ]换成< >,修改[ ]方括号普通用户显示$,root用户显示#
带颜色显示PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$'