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表示没有错误,其他任何值表明有错误。