Linux操作系统基础操作之变量的相关设置

Bash变量分类
环境变量
特殊变量(系统变量)
预定义变量
位置变量
用户变量(本地变量)
用户变量在编程过程中使用最多
系统变量在对参数判断和命令返回值判断使用
环境变量主要是在程序运行的时候需要设置

查看变量

echo $varname
查看指定变量varname的值
eg:echo $PATH
echo $MAIL
若echo指令后不加$则直接显示其后所接的字符串

变量的设定

变量名=变量内容
等号两边不能加空格(这点与具体的shell版本有关)
变量名只能是字母或数字,且首字符不能是数字
特殊字符可用转义符号“\”变为一般字符(enter、$、\、空格符、’等)

双引号有变量代换功能:当双引号中的字符串出现了变量名时,系统自动将变量值作为字符串的一部分看待
单引号不具有变量置换功能

``号表示先执行``内的表达式,优先处理该符号内的指令,反馈结果被视为外层指令的一部分

 

 

eg: ]# ls –al `echo $workdir`/testdir
该指令相当于ls -al /home/user/testdir

变量累加内容

累加变量内容时,使用“$变量名称”指代变量原值
eg: MAIL=$MAIL:/home/user/mailbox
MAIL=“$MAIL”:/home/user/mailbox
MAIL=${MAIL}:/home/user/mailbox
命名规范:大写变量名通常为系统预设,用户自定义变量通常用小写

变量取消

取消变量:unset paraname

查看系统变量

env  查看系统默认的环境变量

常见的环境变量

BASH_ENV=/root/.bashrc
用户自定义的环境变量的配置文件
HISTSIZE=1000
.bash_history中记录的指令条数
HOSTNAME=localhost.localdomain
主机名
HOME=/root
当前用户的主目录
LANG=zh_CN.UTF-8
语言类型
LOGNAME=root
当前登录用户的账号
MAIL=/var/spool/mail/root
邮件的存取地址
PATH=……
系统可执行文件的默认查找路径

set 也可查看当前用户的所有变量

 PS1命令

PS1:提示符的设置
\d:代表日期
\H:完整的主机名称
\h:仅取主机名称的第一个名字
\t:显示时间,为24小时格式,HH:MM:SS
\T:显示时间,为12小时格式
\A:显示时间,为24小时格式,HH:MM
\u:当前用户的帐号名称
\v:bash的版本信息
\w:完整的工作目录名称,家目录以~代替
\W:利用basename取得工作目录名称,所以仅列出最后一个目录名
\#:执行的第几个命令
\$:提示符,如果是root则是#,否则就是$

特殊变量$,?命令

$:关于shell的PID
:上一个执行命令的回传码

变量的范围

自行设置的变量,只在当前的shell环境中存在,在子程序中不存在此变量
export varname:将自定义变量变成环境变量
若该变量需要造其他子程序中执行,则需要用export是变量变成环境变量

变量的键盘读取

read:读取来自键盘输入的变量,常用于shell脚本编写中
read [-pt] variable
-p:后面可以接提示符
-t:后面可以接等待的“秒数”

数组的声明

declare [-aixr] variable
-a:将后面variable的定义为数组(array)
-i:将后面variable的定义为整数数字(integer)
-x:与export一样,将后面的variable变成环境变量
-r:将一个variable的变量设置成只读(readonly),也不能取消设置(unset)

数组属性array的说明
var[index]=content
[index]是数组下标,当前bash中提供的是一维数组

Bash shell的配置文件

在命令行中设定的用户自定义变量和指令别名都是针对本shell而言的,若注销了系统,再次登录时,这些设定就会丢失
使用配置文件可以将设定永久保存

系统设定值:需要注销重启才能使用
用户shell操作环境启动后首先被调用的配置文件通常包括/etc/profile、/etc/bashrc、/etc/sysconfig/i18n等
这些文件都是在设定系统操作环境时常用的,修改过后需要再次登录才能起作用

/etc/profile中设定了一些重要的变量
例如PATH、USER、MAIL、HISTSIZE等
/etc/bashrc用来设定umask和提示字符(PS1)
/etc/sysconfig/i18n中放置的是与系统语言相关的设置
/etc/profile.d/*.sh针对颜色、语系、vim等指令进行了一些附加设置。
/etc/man.config:确定了使用man指令时到哪里去找man page的路径

用户自定义配置
用户自定义配置只在设置它的子shell中作用,通常都放置在用户的个人根目录下
这些文件通常包括~/.bash_profile 、~/.bash_login 、~/.profile、 ~/.bashrc 、~/.bash_history和~/.bash_logout等

 ~/.bash_profile放置个人路径等信息 ,可定义个性化路径(PATH)与环境变量,等等。

~/.bashrc文件中存放的是个人的偏好设置,例如命令别名、路径等。每一次执行shell脚本都会重新读取这个文件,是最完整的,而~/.bash_profile只有登录时才读取一次。
~/.bash_history 存放本次登录前的历史指令
~/.bash_logout放置的是注销本shell时要做的事情

 在变量的设置规范中,后输入的设置值可以替换先输入的设置值,那么,在登陆bash是我时候,这些设置文件到底是如何读取的呢?

1.先读取/etc/profile,再根据/etc/profile的内容去读取其他附加的设置文件,例如/etc/profile.d与/etc/inputrc等设置文件
2.根据不同的用户,到用户家目录去读取~/.bash_profile
3.根据不同的用户,到用户家目录去读取~/.bashrc
最终的设置是根据文件~/.bashrc来确定的

source 配置文件名
该指令可以实现不注销系统就直接读入指定配置文件的作用

Bash特殊字符

Ctrl+C - 终止当前命令
Ctrl+D - 输入结束(EOF),例如邮件结束的时候
Ctrl+M - 就是Enter
Ctrl+S - 暂停屏幕的输出
Ctrl+Q - 恢复屏幕的输出
Ctrl+U - 在提示符下,将整行命令删除
Ctrl+Z - 暂停当前命令
&& - 当前一个指令执行成功时,执行后一个指令
|| - 当前一个指令执行失败时,执行后一个指令

 

cd /tmp;touch t
多个指令连续执行
ls /tmp && touch /tmp/test
第一个命令执行成功时执行第二个命令
ls /tmp/qq || touch /tmp/qq
第一个命令执行不成功时执行第二个命令

ls /tmp/tt && echo “exist” || echo “not exist”
ls /tmp/tt || echo “not exist” &&echo “exist”(有疑问)
command1 && command2 || command3
如果1可以执行,就执行2,若1不可以执行,就执行3

cut选取指令

 选取指令:将一段数据经过分析后,取出我们想要的部分,或者是通过分析关键词,取出我们想要的行。

cut:将一段消息的一段切出来,以行为单位
cut -d’分隔符’ -f fields
cut -c 字符范围
-d:后面接分隔符,与-f一起使用
-f:表示取出第几段
-c:以字符为单位取出固定的字符范围

双重定向

tee -a filename 双向重定向指令
该指令除了将数据导入指定文件外还将其显示到屏幕上
-a 附加内容到现有文件,默认为覆盖

实例
ls –l /var | tee /root/tee.out
cat /etc/passwd | tee -a /home/root/feedback |wc –l

 

posted @ 2019-01-09 14:32  DannyBoy~  阅读(779)  评论(0编辑  收藏  举报