shell
文章
01 概述
概述常见的shell介绍sh/bash/zsh/dash 1 Shell简介概念shell是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 命令(与操作系统实时交互,工具软件,C语言实现的程序) 语言(进行程序设计,Linux各种软件本身是一个应用程序,也可以看做shell语言中的一个包!!!) Shell的分类 主要介绍bash,其他shell基本兼容bash提供的语法。 123456789101112➜ notes git:(master) ✗ cat /etc/shells # List of acceptable shells for chpass(1).# Ftpd will not allow users to connect who are not using# one of these shells./bin/bash/bin/csh/bin/dash/bin/...
02 变量字符串
# shell 变量 ## 1 变量字符串 在一个脚本周期内,其值可以发生改变的量就是变量。 ### 命名规则: 在定义变量时,有一些规则需要遵守: * 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 * 等号左右两侧不能有空格,可以使用下划线“_”,变量的值如果有空格,需要使用单引号或双引号包括。如:“test=“hello world!””。 * 不能使用标点符号,不能使用bash里的关键字(可用help命令查看保留关键字)。 * 环境变量建议大写,便于区分 ### 变量分类 1. 用户自定义变量。由用户自定义的变量名和变量值。 2. 环境变量:保存和系统操作环境相关的数据。分为系统定义的环境变量和用户自定义的环境变量。 3. 位置参数变量:向脚本中传递参数或数据。变量名不能自定义,变量作用固定。 4. 预定义变量:Bash中已经定义好的变量。变量名自定义,变量作用也是固定的。 ## 2 用户变量 ### 变量定义 123456789[root@localhost ~]$ 2name="shen chao"-bash: 2n...
03 值字符串
# 值字符串 ### 内容解析 > 单引号是不能识别变量,不能解析命令,不能转义的 * 变量解析 `"$变量名"`或用`"${变量名}"`包含变量名。 * 命令解析 `"$()"=反引号` * 转义解析 `"\*"`转义都拥有特殊含义,而单引号括起来的内容都是普通字符。 ### 字符串长度 1${#string} ### 字符串切片 1${string:1:4} ### 字符串拼接 12"hello $country""hello ${country}"
04 命令字符串
常见命令分类文本处理命令
05 特殊符号
1 特殊符号特殊符号 符号 作用 ’ ’ 单引号。在单引号中所有的特殊符号,如“$”和(反引号)都没有特殊含义。单引号括起来的都是普通字符,会原样输出 “ ” 双引号。在双引号中特殊符号都没有特殊含义,但是“$”,反引号(esc键下面)和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。 $ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。 ${} 用于调用变量的值,如需要调用变量name的值时,需要用${name}的方式得到变量的值。 反引号 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和()作用一样,不过推荐使用(),因为反引号非常容易看错。 $() 和反引号作用一样,用来引用系统命令。(推荐使用) \ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如$将输出“$”符号,而不当做是变量引用。 () 用于一串命令执行时,()中的命令会在子Shell中运行 {} 用于一串命令执行时,{ }中的命令会在当前Shell中执行。也可以用于变量变形与替换。 ...
06 关键字
1 关键字readonly相当于C中的const,readonly将变量设为只读模式,任何针对他们的赋值都是错误的 123$readonly var=123$var=345bash: var: readonly variable unset删除变量 12345678unset var_name 删除变量var_nameunset -v first middle last 删除其他变量unset -f fcn 删除函数$tunset=123$echo $tunset123$unset tunset$echo $tunset shift用来截去来自列表的位置参数,从左侧开始,一旦执行shift,$1的初始值就会永远消失,取而代之的是$2的旧值,依次类推,$#的值也会依次减1shift也可以带一个参数,表示一次截取的个数 12345678910$cat shell.sh #!/bin/bashecho "${1}"shiftecho "${1}"$./*.sh 123 456123456 set设置新...
06 运算符
1 测试运算符test [ ]123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106DESCRIPTION The test utility evaluates the expression and, if it evaluates to true, returns a zero (true) exit status; otherwise it returns 1 (false). If there is no expression, test also returns 1 (false). All operators and flags are separate arguments to th...
07 流程控制
流程控制1 if条件判断单分支if条件语法: 1234if [ 条件判断式 ] then 程序fi 案例:统计根分区使用率 123456789101112[root@localhost ~]$ vi sh/if1.sh#!/bin/bash#统计根分区使用率rate=$(df -h | grep "/dev/sda2" | awk '{print $5}'| cut -d "%"-f1)#把根分区使用率作为变量值赋予变量rateif [ $rate -ge 80 ]#判断rate的值如果大于等于80,则执行then程序 then echo "Warning!/dev/sda3 is fu11!!" #打印警告信息。在实际工作中,也可以向管理员发送邮件。fi 案例:创建目录 12345678910[root@localhost ~]$ vi sh/add_dir.sh#!/bin/bash#创建目录,判断是否存在,存在就结束,反之创建echo "当前脚本名称为$0&qu...
08 三剑客-grep
详情参考grep命令参考手册
09 三剑客-sed
详情参考 1 sed基本使用sed主要是用来将数据进行选取、替换、删除、新增的命令。 12345678910111213141516171819语法:[root@localhost ~]$ sed [选项] ‘[动作]’ 文件名选项:-n: 一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。-e: 允许对输入数据应用多条sed命令编辑。-f 脚本文件名: 从sed脚本中读入sed操作。和awk命令的-f非常类似。-r: 在sed中支持扩展正则表达式。-i: 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出动作:a : 追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。num表示第几行c : 行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“”代表数据未完结。i : 插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“”代表数据未完结。num表示第几行d ; 删除,删除指定的行。p : 打印,输出指定的行。s : 字串替...














