Shell
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:统计字符 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |