用户及组管理方式
用户组有两种:初始组、额外组。
每个用户必须属于一个初始组,可以同时加入多个额外组。Linux将每个用户看做一个32位的整数,这个整数就是UID。Linux内部运作大部分都是使用UID,给人看时才会把UID转换为用户名。有三种用户类型:一般用户、超级用户(root)、系统用户。
每个用户对应一个UID,每个组对应一个UID,建立用户时默认建立一个与用户名相同名称的组,组的GID和用户UID相同。
Linux中所有信息都是通过配置文件的方式保存,用户及组也是。
软件的安装及管理
1、常见软件安装方式
绿色软件:无需安装直接可以使用。
提供安装程序的软件包:在软件包内提供了install.sh、setup.sh等安装程序或以.bin格式单个执行文件提供 deb方式:deb是Debian软件格式包,文件扩展名.deb,经gzip和tar打包而成,处理这些包的经典程序是dpkg,通过apt来运行。
RPM格式:RPM是在Linux洗广泛使用的软件管理器,RPM仅适用于安装用RPM来打包的软件。
源码方式:使用源码自己通过自己编译生成二进制文件的软件安装方式。
Shell脚本
bash Shell 支持在交互模式中一次提交多个命令执行,有三种方法:使用分号隔开、&& 条件隔开,只有前一个命令成功执行时才执行下一个命令、||条件隔开,只有在上一个命令执行失败后才执行下一个命令。
1、标准输出重定向
(1) 使用>将输出写入文件,如果指定文件已存在将会删除文件中原来的内容。如:ls /boot > boot.txt
(2) 使用>> 将输出追加到文件,如果指定的文件已存在将会把输出附加到文件中。
2、标准错误重定向
(1) 使用2> 将输出写入文件,如果指定的文件已经存在将会删除文件中原来的内容。
(2) 使用2> 将输出追加到文件
3、Shell脚本
脚本是为了缩短传统的“预处理-编译-汇编-链接-运行”过程而创建的计算机编程语言。脚本通常是解释运行而非编译。Shell脚本是按行解释的,每个Shell脚本对系统来说就是一个文本文件,在有相应权限下可以使用文本编辑器建立修改Shell脚本文件。
虽然在Linux中扩展名并没有实际作用,但是为了阅读方便,脚本文件一般用sh作为扩展名。
一行中“#”之后的内容表示是注释,注释在执行过程中被忽略。
Shell脚本文件的第一行应该指定向哪个解释器发送指令,“#!/bin/sh”
在执行已编好的脚本时可以使用两种方式:对于有执行权限的脚本文件可以使用“./<文件名>”的方式执行,对于没有执行权限的脚本可以使用“sh<文件名>”的方式执行。
Linux系统中每个进程都是有寿命的,所有进程都是应另个进程的请求而启动,发出请求的进程成为父进程,新启动的进程成为子进程。子进程完成自身任务退出,子进程退出后会返回一个信息给父进程,叫做返回值或退出状态,返回值是一个0~244之间的整数,进程返回0表示执行成功,任何非0都表示某种形式的失败。shell 中把上一个命令的返回值保存在一个名为“$?”的特殊变量中。可以使用“echo $?”显示上一个命令是否执行成功。
.1、变量
变量就是会变化的量,Shell允许用户设置和引用shell变量,shell 变量可以用在命令和脚本中,也可以被其他程序作为配置选项而引用。Shell变量有两种类型:环境变量和局部变量。环境变量由子shell继承,局部变量只存在于创建的shell中。每个变量都有一个名称,变量的名称可以是字母字符及下划线组成不能以数字开头。Shell在使用变量钱不需要专门的语句进行定义也不对变量区分数据类型,本质上所有的shell变量都是字符串,shell也运行比较和算术操作。
(1) 局部变量
局部变量的建立和赋值直接使用“变量名=变量值”的 方式。例如变量名strA,值为ctu
strA=ctu
变量赋值可以使用双引号单不是必须的: strA=“ctu”
变量定义之后,用户在不注销的情况下任何时间都可以使用已定义的变量,在使用时必须在变量名前加一个$.例如显示局部变量:echo $strA.
(2)、环境变量
Linux中允许全体进程使用“变量名=变量值”的方式定义被称为环境变量的变量。环境变量是保存在内核进程中的一部分,无论何时开启一个进程,子进程都会继承环境变量。用户也可以创建环境变量,环境变量的创建分两步,首先定义一个局部变量,然后使用“export”命令将局部变量提升为环境变量。
set命令显示已经定义的变量
env命令显示已定义的环境变量
“unset<变量名>”清除变量 unset strA
4、向脚本传递参数
脚本中可以使用“$1”接收传递给脚本的第一个参数,“$2”接收第二个参数,可以使用“$*”接收所有的参数,使用“$0”获得当前脚本的名称、使用“$#”获取传递给脚本的参数个数,使用“$$”获得当前脚本的PID。
5、流程控制
程序语言一般都是从上向下执行代码,shell通过判断和循环改变脚本的顺序执行。
(1)、判断结构
if、then、else语句提供测试条件,语法如下:
if<条件>; then
#条件为真时执行的内容
if<条件>;then
#条件为真时执行的内容。
else
#条件为假时执行的内容。
if<条件1>;then
#条件为真时执行的条件
elif<条件2>;then
#条件2为真时执行的内容。
else
#前两个条件都为假时执行的内容。
if语句都必须以fi终止,elif、else是可选的。
(2) case判断结构
case 值 in
模式1)
# 符合模式1时执行的内容
;;
模式 2)
#符合模式2时执行的内容
; ;
esac
其中;;相当于C语言中的break。如果无匹配模式使用星号*匹配该值,再接收其他输入,相当于default。*表示任意字符,?表示任意单字符。
循环结构
bash shell 支持三总类型的循环:for循环一次处理循环体内容直到循环耗尽,until循环直到条件为真前一次执行循环体内的内容,while循环直到条件为假前一次执行循环体内的内容。
while[条件]
do
循环体
done
until [条件]
do
循环体
done
for((初始值;限制值;步长))
do
循环体
done。
有两种方法退出或路过循环:(1)break 用于跳出循环,break直接跳出循环,执行循环后边的,如果是循环嵌套使用break默认是跳出当前循环,也可以指定跳出循环的个数break 2 跳出两套循环。(2)continue 跳出本次循环,执行新一轮的循环。
6、函数
function 函数名
{
#函数内容
}
函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中,使用函数时像执行脚本一样传入参数。在函数体内容也可以用$1 $2的方式传入参数。