Shell语法例子详细介绍使用01篇

一、Shell简介(了解)

1、什么是Shell

概念:Shell 既是一种命令语言,也是一个用 C 语言编写的程序 (命令解释器->“翻译官”) 作用:主要提供一个接口使用户与内核交互操作。 流程:接收用户输入的命令并且进行解释(转换为计算机可以理解的机械码),然 后将命令送入内核去执行 -> 最后将结果返回给用户。

  • Shell的种类
    含义:不同的命令解析器(程序不断升级)
    区别:提示符不同、语法不同、展示效果不同等
    常用:sh、csh、ksh、bash等
    sh (Bourne Shell) AT&T Bell实验室的Steve Bourne开发 最早的
    csh (C Shell) 加州伯克利大学的Bill Joy 更强
    ksh (Korn Shell) AT&T Bell实验室的David Korn开发 升级
    bash(Bourne Again Shell) 自由软件基金会(GNU)开发的一个Shell 统一

验证:不同命令解析器的区别
查看系统支持的shell类型:cat /etc/shells
查看当前使用的shell类型:echo $SHELL

用户管理命令

#用户添加(user add) :useradd   [参数]  用户名(g-指定用户组,c-备注,s-登录执行的命令,d-家目录)
#用户编辑(user mod):usermod  参数    用户名(以上四个 + l-改名)
#用户删除(user del) :userdel  用户名

Linux其他发行版本(不同种类的shell效果)
switch user
查看系统支持shell类型

查看当前使用的shell类型

创建test1用户 -> 查看默认没有shell -> 设置密码 -> 登录测试

解决:让test1用户变强(sudo usermod -s /bin/bash test1)

bash功能(内部命令和外部命令)

注意点:
环境变量名词,效果执行一个命令会去“环境变量”设置的目录中挨个找该命令的可执行
程序(1-找到了直接执行,2-找不到则报错)

二、Shell脚本

说明:除了挨个执行命令外,还一个创建一个脚本文件批量处理
创建脚本语法
#!/bin/bash
代码
执行脚本语法
权 限:chmod a+x 路径及文件名.sh
方法1: sh 路径及文件名.sh(推荐)
方法2:/bin/bash 路径及文件名.sh
方法3: source 路径及文件名.sh
方法4: . 路径及文件名.sh
初体验:创建test脚本输出hello
#步骤1:创建.sh结尾的文件(ps. 一般都是sh结尾文件,没有后缀也行)
#步骤2:通过vi命令打开该文件,并在文件头输入固定格式【#!/bin/bash】
#步骤3:另一个一样输入任意liunx命令即可
#步骤4:保存并退出,然后通过命令运行【sh 文件名.sh

复习

更改拥有者(change own)  : chown -R 拥有者 待更改的文件
更改所属组(change group): chgrp -R 所属组 待更改的文件

语法1:chmod -R ABC<用数字表示> 待更改的文件
解释1:
ABC分别代表(拥有者、所属组、其他组)
数字表示(1-执行,2-可写,3-可写可执行,4-可读,5-可读可执行,6-可读可写,7可读可写可执行)

语法2:chmod -R <±=>,…,<±=> 待更改的文件
解释2:
augo分别代表(所有用户,拥有者、所属组用户、其他组用户)
权限范围:+ 追加、- 移除、= 修改

目录或文件授权rwx作用

准备:创建测试账号z并设置密码
验证:文件含义
准备:用root账号创建/test/qx1.php文件并查看其他组用户权限(蓝色)

准备:用root移除其他组所有权限

验证:文件有r就可以用cat命令,没有就不行

验证:文件有w就可以用vi命令,没有就不行

验证:目录含义
a. 准备:用root账号创建/test/qx2目录并查看其他组用户权限(蓝色)

b.准备:用root移除其他组所有权限

c.验证:目录有x就可以用cd命令,没有就不行

d.验证:目录有r就可以用ls命令,没有就不行

f.验证:目录有w就可以用touch命令,没有就不行

三、Shell变量

  • 1、分类
    本地变量
    环境变量
    局部变量
    位置变量
    特殊变量
  • 本地变量
    概念:只对当前shell进程有效(ps. 对当前进程的子进程和其它shell进程无效)
    语法
    设置:变量名=变量值(等号不能有空格)
    删除:unset 变量名
    输出:echo $变量名
    练习:创建VAR_T1=itcast -> 输出 -> 删除 -> 输出
  • 环境变量(☆)
    概念:对当前shell进程和子进程有效,其他shell进程无效
    语法
    设置:export 变量名=变量值
    其他:对所有shell进程都生效
vi /etc/profile
source /etc/profile   #让新建立的环境变量立刻生效无需重新启动系统

练习:创建VAR_T2=itcast2 -> 输出测试

  • 局部变量
    概念:函数调用时创建、调用完毕时销毁
    语法:local 变量名=变量值
    练习:创建a方法输出局部变量VARTEST=123
  • 位置变量
    概念:指程序运行时动态传入参数
    语法
    传参1:sh 路径及文件名.sh 参数1 … 参数n
    输出1:echo $1 / … / echo $n
  • 特殊变量
$0           当前脚本的文件名
$n           传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#          传递给脚本或函数的参数个数。
$*          传递给脚本或函数的所有参数。
$@          传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?         上个命令的退出状态,或函数的返回值。
$$         当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

应用场景
$n 根据传递的参数安装指定软件
$$ 脚本执行时输出进程编号便于卡死时结束进程(注:sleep 秒数)

今天我们暂时就讲到这里,下一篇再见

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章