变量

shell基础

shell简化管理操作

shell命令

命令历史记录,存放在~/.bash_history文件)

!!来执行上一条命令,使用ctrl-r来搜索命令历史记录

命令和文件补全(按tab键)

命令别名,用alias命令来显示所有命令别名

任务控制(job control)

前台就是出现提示符让用户操作的环境,而后台就是不能与用户交互的环境,你无法使用 ctrl-c 终止它,可使用 bg/fg呼叫该任务。

1、将任务放在后台运行:

command + &

在后台执行的命令,如果有stdout和stderr,数据依旧输出到屏幕上,可以通过数据重定向传输到文件中,就不会影响前台的工作。

2、将任务丢到后台暂停:

ctrl-z

在shell中执行find / -print命令,然后按下ctrl-z将任务丢到后台暂停:

任务find / -print暂停执行,并将任务放在后台,返回一个job number[2]

3、查看后台所有任务状态

jobs -l

4、将后台的任务拿到前台处理

fg %jobnumber

输入fg会默认取出+的任务,然后迅速按下ctrl-z

输入fg %1来讲后台的任务拿到前台处理。

5、将后台的任务变成运行中

bg %jobnumber

6、管理后台当中的任务

kill -signal %jobnumber

bash变量

1.变量名必须以字母或下划线开头,变量中间由字母、数字和下划线组成

2.变量长度不超过255字符

3.变量在有效的范围内唯一

4.bash中,默认变量为字符串型

变量分类

1、用户自定义变量

变量名=变量值(=前后不能有空格,加空格被认为是系统命令)

双引号和单引号的区别(双引号中特殊符号有意义)

echo $变量名
[root@localhost ~]# x=5
[root@localhost ~]# y=6
[root@localhost ~]# z=$x+$y
[root@localhost ~]# echo $z
5+6

两种变量叠加方式

[root@localhost ~]# x=123
[root@localhost ~]# echo $x
123
[root@localhost ~]# x="$x"456
[root@localhost ~]# echo $x
123456
[root@localhost ~]# x=${x}789

查看已经定义的变量

set

删除变量

unset x

2、环境变量:和系统操作环境相关的数据,变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的。

环境变量是全局变量,用户自定义变量是局部变量。

定义一个环境变量(建议大写,linux中没有大写变量)

export 变量名=变量

对系统生效的环境变量

PATH变量,系统搜索命令的路径,变量用:分隔

PATH=/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PATH="$PATH":/usr/local/erlang/bin
echo $PS1
[\u@\h \W]\$
[root@localhost ~]# 

PS1起始符的格式[root@localhost ~]

语系变量

locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

默认语系

cat /etc/sysconfig/i18n 
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

3、位置参数变量:向脚本传递参数或数据的,变量名不能自定义,变量作用固定

$0:脚本名字
$1:第一个参数
$2,$3,$4,$5,...一次类推。

4、预定义变量:bash已定义的变量,变量名不能自定义,变量作用固定

特定变量参数
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$$ 脚本运行的当前进程 ID号
$! 后台运行的最后一个进程的进程 ID号
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- 显示shell使用的当前选项,与 set命令功能相同
$? 显示最后命令的退出状态。 0表示没有错误,其他任何值表明有错误。
linux7