加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Shell

发布时间:2020-12-15 17:06:45 所属栏目:安全 来源:网络整理
导读:bash shell配置: 1.bash shell变量 变量时代表一些值的符号: 可以通过变量来设置shell或者其他程序 存在于内存中 linux有自定义变量(local)和环境变量(environment) 自定义变量和环境变量作用范围不同. 使用以下命令查看变量: set 可以查看所有变量 env只

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:统计字符

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读