怎样让网站做301处理,做自媒体的有哪些素材网站,wordpress调用描述,seo报价单目录 0.前置知识1.Shebang2.Linux特殊符号整理3.变量4.环境变量5.父子shell0.概念1.创建进程列表(创建子shell执行命令) 6.内置命令 vs 外置命令 0.前置知识
#用于注释shell脚本语⾔属于⼀种弱类型语⾔#xff1a;⽆需声明变量类型#xff0c;直接定义使⽤shell三剑客#… 目录 0.前置知识1.Shebang2.Linux特殊符号整理3.变量4.环境变量5.父子shell0.概念1.创建进程列表(创建子shell执行命令) 6.内置命令 vs 外置命令 0.前置知识
#用于注释shell脚本语⾔属于⼀种弱类型语⾔⽆需声明变量类型直接定义使⽤shell三剑客grep、sed、awkshell编程尽量⽤内置系统操作与内置函数 1.Shebang
计算机程序中Shebang指的是出现在⽂本⽂件的第⼀⾏前两个字符#!在Unix系统中程序会分析Shebang后⾯的内容作为解释器的指令例如 以#!/bin/sh开头的⽂件程序在执⾏的时候会调⽤/bin/sh也就是bash解释器以#!/usr/bin/python开头的⽂件代表指定Python解释器去执⾏以#!/usr/bin/env解释器名称是⼀种在不同平台上都能正确找到解释器的办法 注意事项 如果脚本未指定Shebang 脚本执⾏的时候默认⽤当前shell去解释脚本即$SHELL如果Shebang指定了可执⾏的解释器如/bin/bash /usr/bin/python脚本在执⾏时⽂件名会作为参数传递给解释器如果#!指定的解释程序没有可执⾏权限则会报错“bad interpreter: Permission denied”如果#!指定的解释程序不是⼀个可执⾏⽂件那么指定的解释程序会被忽略转⽽交给当前的SHELL去执⾏这个脚本如果#!指定的解释程序不存在那么会报错“bad interpreter: No such file or directory”#!之后的解释程序需要写其绝对路径(如#!/bin/bash)它是不会⾃动到$PATH中寻找解释器的如果使⽤bash test.sh这样的命令来执⾏脚本那么#!这⼀⾏将会被忽略掉解释器当然是⽤命令⾏ 2.Linux特殊符号整理
${vars}取值变量的值$()在括号中执行命令且拿到命令的执行结果 在括号中执行命令且拿到命令的执行结果()开启子shell执行命令结果$vars取出变量值 3.变量 变量定义与赋值注意变量与值之间不得有空格 变量类型bash默认把所有变量都认为是字符串bash变量是弱类型无需事先声明变量类型声明和赋值同时进行nameSnowK变量替换/引用 nameSnowK
echo ${name}
echo $name # {}可以省略变量名规则 名称定义要做到⻅名知意切按照规则来切不得引⽤保留关键字只能包含数字、字⺟、下划线不能以数字开头不能⽤标点符号变量名严格区分⼤⼩写 变量的作用域 本地变量只针对当前的shell进程环境变量也称为全局变量针对当前shell以及其任意子进程 环境变量也分自定义、内置两种环境变量 局部变量针对在shell函数或是shell脚本中定义 位置参数变量用于shell脚本中传递的参数 例如ls -l中的-l就是位置参数变量 特殊变量shell内置的特殊功能变量 $? 0成功1~255错误码 自定义变量 变量赋值varNamevalue变量引用${varName}、$varName 单引号变量不识别特殊语法双引号变量能识别特殊语法 不同的执行方式不同的shell环境 每次调⽤bash都会开启⼀个⼦shell因此不保留当前的shell变量调⽤source或者.符号是在当前shell环境加载脚本因此保留变量 在Linux中反引号中的命令的执行结果会被保留下来(存进对应的变量中) 4.环境变量
环境变量⼀般指的是⽤export内置命令导出的变量⽤于定义shell的运⾏环境、保证shell命令的正确执⾏ shell通过环境变量确定登录的⽤户名、PATH路径、⽂件系统等各种应⽤ 环境变量可以在命令⾏中临时创建但是⽤户退出shell终端变量即丢失如要永久⽣效需要修改环境变量配置⽂件 用户个人配置文件 ~/.bash_profile~/.bashrc远程登陆用户特有文件 全局配置文件修改全局配置文件影响所有登陆系统的用户 /etc/profile/etc/bashrc系统建议最好创建在/etc/profile.d/而非直接修改主文件 以个人配置文件优先加载、读取、生效 检查系统环境变量的命令 set输出所有变量包括全局变量、局部变量env只显示出全局变量declare输出所有的变量如同setexport显示和设置环境变量值 撤销环境变量unset 变量名删除变量或函数设置只读变量readonly只有shell结束只读变量才失效环境变量初始化与加载顺序 5.父子shell
0.概念 父子shell source和.执行脚本只在当前的shell环境中执行生效 指定bash sh解释器运行脚本是开启subshell开启子shell运行脚本命令 ./script都会指定Shebang通过解释器运行也是开启subshell运行命令 子shell 多个子shell
1.创建进程列表(创建子shell执行命令)
为什么学习子shell意义在哪里 为了某个指令不卡住当前shell开启子shell以达到异步的目的实现多进程的处理提高程序并发执行效率 进程列表加上()开启子shell运行命令并且子shell是可以嵌套运行的(cd ~; pwd; ls; cd /tmp; pwd; ls)
(pwd; (echo $BASH_SUBSHELL))检测是否在子shell环境中BASH_SUBSHELL该变量的值特点 如果是0就是在当前shell环境中执行的否则就是开辟子shell去运行的 示例 检测是否开启了子shell运行命令 cd ~; pwd; ls; cd /tmp; pwd; ls; echo $BASH_SUBSHELL 明确开启子shell运行的命令 (cd ~; pwd; ls; cd /tmp; pwd; ls; echo $BASH_SUBSHELL) 6.内置命令 vs 外置命令
什么是内置命令什么是外置命令 内置命令在系统启动时就加载入内存常驻内存执行效率更高但是占用资源 内置命令和shell是为一体的是shell的一部分不需要单独去读取某个文件系统启动后就执行在内存中了特点不会产生子进程去执行 外置命令系统需要从硬盘中读取程序文件再读入内存加载 自己单独下载的文件系统命令处于bash shell之外的程序特点一定会开启子进程执行