Linux基础(三)

本文详细介绍了Linux系统中的用户及组管理,包括用户类型、UID与GID的概念,以及用户与组的关联方式。此外,还深入探讨了Shell脚本的基础知识,包括标准输出与错误重定向、流程控制、变量定义与使用、参数传递和函数创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用户及组管理方式

           用户组有两种:初始组、额外组。

每个用户必须属于一个初始组,可以同时加入多个额外组。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的方式传入参数。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值