Shell

Shell

学当以立德,百行当以德为首!

Shell概述

Shell工具
Shell在线编辑工具

Shell发展
Ken Thompsonsh是第一种Unix ShellWindows Explorer(文件资源管理器)是一个图形化Shell

Shell风格
Shell风格有图形化Shell(GUI shell)、命令行shell(Command Line Interface shell,CLI shell)

Shell概念
Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁,它既是一种命令语言,又是一种程序设计语言

Shell特点
访问操作系统内核的服务、提供文件名扩展字符即通配符(*、?、[])、无需创建新进程、允许灵活地使用数据流、模块化编程

Shell分类
Shell分为ShellShell脚本(shell script),Shell通常指Shell脚本ShellShell脚本两者却是不同

Shell环境
ShellJavaScriptPHP编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了

Shell种类
LinuxShell种类众多常见有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)

  • Bourne Shell(/usr/bin/sh或/bin/sh)
    • 一般不区分Bourne ShellBourne Again Shell,所以#!/bin/sh也可改为#!/bin/bash
    • #!代表告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序
  • Bourne Again Shell
    • Bourne Again Shell易用且免费被广泛使用,同时Bash也是大多数Linux系统默认的Shell
  • Shell其它不常用种类
    • C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)、PowerShell

Shell编写

Shell后缀
Shell扩展名为sh

Shell运行
Shell脚本运行的两种方法:作为可执行程序、作为解释器参数

  • 作为可执行程序
    • 第一步编写sh代码并保存为xxx.sh,再cd进入到相应目录
    • 第二步通过命令chmod +x ./xxx.sh,使脚本具有执行权限(一定要写成./xxx.sh而不是xxx.sh
    • 第三步通过命令./xxx.sh,执行脚本
  • 作为解释器参数
    • 此方式是直接运行解释器,其参数是shell脚本文件,如:/bin/sh xxx.sh,且无需在第一行指定解释器信息

Shell变量

Shell变量概念
Shell变量在定义时变量名不加美元符号($,PHP语言中变量需要),如:your_name="zhr"

  • 注意,Shell的变量名和等号之间不能有空格
  • 变量命名须遵循如下规则:
    • 不能用标点符号
    • 中间不能有空格,可使用下划线 _
    • 不能用bash里的关键字(可用help命令查看保留关键字)
    • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头

Shell变量调用
调用一个定义过的Shell变量,只需在变量名前加美元符号即可,如:name="zhr" echo $name echo ${name}

  • 变量名外的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,推荐给所有变量加上花括号

Shell变量刷新
若要刷新变量只需对已定义过的变量进行重新赋值即可

Shell只读变量
readonly命令可将变量定义为只读变量,只读变量的值不能被改变

Shell删除变量
unset命令可删除变量,语法:unset variable_name,变量被删除后不能再使用且不能删只读变量

Shell变量类型
运行Shell时会同时存在三种变量:局部变量、环境变量、Shell变量

  • 局部变量
    局部变量在脚本或命令中定义,仅在当前Shell实例中有效,其他Shell启动的程序不能访问局部变量
  • 环境变量
    环境变量能被所有程序(包括Shell启动的程序)访问,有些程序需要它来保证其正常运行,Shell脚本也可定义它
  • shell变量
    Shell变量是由Shell程序设置的特殊变量,其中一部分是环境变量,一部分是局部变量,从而保证shell的正常运行

Shell字符串

Shell字符串概念
Shell字符串是编程中最常用且有用的数据类型,Shell字符串可用单引号、双引号,也可以不用引号

  • 双引号
    • 双引号里可有变量和转义字符
  • 单引号
    • 单引号里的任何字符都会原样输出即单引号字符串中的变量无效
    • 单引号字串中不能出现单独的单引号(对单引号使用转义符后也不行),但可成对出现作为字符串拼接使用

Shell字符串长度
Shell字符串长度的获取需用#,语法为${#变量名},若变量不是字符串而是数组时${#string}等于${#string[0]}

Shell字符串提取
Shell字符串提取需用:,语法为${变量名:初始位置:最终位置},且第一个字符的索引值为0

Shell字符串查找
Shell字符串查找需用反引号,语法为expr index "$变量名" 要查找的字符,哪个字符先出现就计算哪个字符的位置

  • 实例
string="hello"
echo `expr index "$string" el`  # 输出2,注意是反引号而不是单引号
posted @ 2023-06-07 11:04  尘风风尘  阅读(42)  评论(0)    收藏  举报