bash shell配置:
1.bash shell变量
变量时代表一些值的符号:
可以通过变量来设置shell或者其他程序
存在于内存中
linux有自定义变量(local)和环境变量(environment)
自定义变量和环境变量作用范围不同.
使用以下命令查看变量:
set 可以查看所有变量
env只能查看环境变量。
bash shell有以下几种设置方式:
1.通过自定义变量设置
VARIABLE = value来设置。即前面时变量名字后面是变量的值的格式。
如KEY1= key 设置好了以后可以通过set命令(由于set时查看所有的变量,所以时需要慢慢找的)查看,也可以通过echo $KEY1(这个指令可以直接就看出刚刚设置的变量)查看。
echo $变量名称
如果直接的echo 变量名称---最终输出的是【变量名称】这个字符串,要想输出变量名称对应的值应该加上$
变量名设置规则:
1.不能有数字或者特殊字符开头
变量名和=之间不能有空格,变量值之间也不能有空格,如果需要有空格,请加上""(可以时双引号也可以时单引号)引号引起来。
但是注意:
在使用单引号和双引号的时候需要注意的地方:
1.如果需要引用已经存在的变量对应的值,比如:
KEY1="test one"或者'test one'
方法一:
此时KEY2需要使用KEY1的值,就应该这样设置:KEY2="value is $KEY1" (只能使用双引号)
此时使用命令:echo $KEY2 或者 echo "$KEY2"---打印结果为value is test one
echo '$KEY2'(当作一个字符串变量)---- 打印结果为KEY2
方法二:
KEY3需要使用KEY1的值,KEY3=$KEY1 --打印结果:test one
KEY4=$KEY1---- ---打印结果:test one---
变量名前面不能加?,应该也有其他符号限制,等后面看到资料了再来补充...
变量名的使用有很多好处,比如你平时需要查找一个目录,可能就需要cd切换好几层才能找到,可以将那些常用的目录赋值给一个变量,以后使用的时候就直接通过给定的变量名就可以得到具体的目录。
删掉定义的变量:unset 变量名称
删掉以后可以使用set |grep 变量名称 来查看是否已经不再存在,grep是匹配的意思。
set |grep HIST 这个指令用于
常见的变量:
HISTFILESIZE:记录历史指令保存的最大值
COLUMNS:终端窗口显示的宽度
LINES:终端窗口显示的高度
PS1:设置提示符号前面的内容样式(\d,\h,\t,\u,\w,\!,\$,\l)
2.通过别名(Aliases)设置
alias lss="ls -la"
(ls指令在bin目录下)
使用alias自身查看所有的alias
使用alias和alias名称查看alias值
Type -a alias名称
unalias删除别名定义
3.通过set指令设置
set自身查看所有变量值
设置shell内部的属性值(set -o noclobber, set -o vi)
4.通过环境变量设置
自定义变量只能在当前的shell环境中有效
环境变量会在整个主机下的shell环境中生效
使用$ export [变量名]来设置
如果当前登录的不是root账户,而是其他账户,使用unset 变量名时只能在当前环境下删除该变量的,如果使用的时root账户,使用unset就会彻底删除这个变量。
常用变量介绍:
HOME:指向当前用户的家目录
LANG:应用程序用何种语言来显示界面
PWD:指向用户当前的工作目录路径
PASS环境变量:
系统预设的环境变量
执行一些没有指定路径的指令时会去该路径中找
PATH=$PATH: 将隐藏路径设置到PATH中,会带来安全问题
shell startup scripts原理和功能
shell startup scripts概述
用户登录或其他非登录动作时会自动执行的一些shell脚本:
1.建立自定义变量或者执行set指令设置shell
2.建立环境变量,设置其他程序
3.使用alias,简化后续操作
4.登录的时候执行哪些程序
5.分为login和non-login脚本
login shell:
1.通过完整的(需要通过输入用户名和密码) 登录流程时运行的shell
2.首先会读取/etc/profile(PATH/UER/HOSTNAME/HISTSIZE等)
3.读取/etc/profile..d/*.sh(颜色、语言、指令别名等)
4.~/.bash_profile、~/.bash_login、~/.profile(只依次读取其中一个)
5.~/.bash_rc、/etc/bashrc
6.source指令加载脚本的变更
non-login shell
1.不需要通过登录即可运行的shell,如su和原bash下的新bash动作
2. 涉及到的脚本:~/.bash_rc、/etc/bashrc
3.读取/etc/profile.d/*.sh(颜色、语言、指令别名等)
~/.bash_logout
1.在注销用户时会运行该脚本
2.可执行备份、缓存和临时文件清理等任务
数据流重定向和管道命令
一、标准输入输出和错误输出
相关概念:
标准输入(stdin[standard input])时指令数据的输入,代码为0,使用<或者<<,默认是键盘
标准输出(stdout)是指令执行成功返回的结果,代码为1,使用>或者>>,默认由屏幕显示
标准错误输出(stderr)是指令执行失败返回的错误信息,代码为2,使用2>或者2>>,默认是屏幕显示
用指令查看设备下都有哪些输入输出指令:
二、数据流重定向的使用
< 指定数据的数据媒介来源
1> 将正确的内容覆盖输出到指定的媒介
1>> 将正确的内容追加到指定的媒介
2> 将错误信息覆盖输出到指定的媒介
2>> 将错误信息追加输出到指定的媒介
多个指令指令的判断方法:
bash1&&bash2(前者执行成功才会执行后者)
bash1||bash2(前者执行完毕且失败才执行后者)
三、管道命令概述
1.管道符号:|
当需要显示的信息很多的时候并且需要分页显示的时候,可以使用管道符|more(通过管道符传递给more,最后显示出来的数据都是通过more指令输出的)
2. 能够接收标准输入,如tail/more/grep等
3.能够接收来自于前一个指令的正确输出的数据成为stdin进行处理
四、常用的管道命令举例
grep指令,grep [-cinv] 'key' filename,支持正则
-v:显示没有该字符的行
-i:忽略大小写
-c:统计字符出现的次数
-n:输出行号
sort指令:sort [-fbknrtu] filename
-f:忽略大小写
-b:忽略最前面的空格
-M:以月份英文名字排序
-n:使用数字排序
-r:逆向排序
-t:分隔符,默认是tab分割
-k:以第几列来排序
wc指令,wc[-lwm] filename,统计功能。
-l:统计行
-w:统计词
-m:统计字符