1.什么是shell
2.系统提供了哪些种类的shell
通过cat /etc/shells可查阅系统提供的shell
本文主要介绍/bin/bash,因为它兼容于sh,它是依据使用者需求而对sh进行了加强
1.什么是变量
1.通过echo命令读取
语法格式1: echo $变量名
语法格式2: echo ${变量名}
示例:
读取登录用户名:echo $LOGNAME
读取用户home目录:echo $HOME
读取当前系统默认的shell:echo $SHELL
注意:当变量名后面连着其他符号时,为了避免不必要的错误建议使用格式2
1.环境变量的查看
语法格式: env|more
设置环境变量使用set命令
1.通过关键字:export
语法格式1: export 变量名=变量值
语法格式2:变量名=变量值
export 变量名
1.变量与变量内容以一个等号"="连接,变量名=变量值
2.等号两边不能直接接空格符,如(变量名 = 变量值)这是错误的
3.变量名称只能是英文字符、数字、下划线组成,但是不能以数字开头
4.变量内容若有空格符可使用双引号或者单引号将变量内容结合起来
|-双引号中的特殊字符保有原本的特性
|-例如:var="lang is ${LANG}",则echo $var的结果为lang is en_US.UTF-8
|-单引号中的特殊字符仅为存文本(一般字符),就类似java中的String类型的数据
|-例如:var=‘lang is ${LANG}‘,则echo $var的结果为lang is ${LANG}
5.可以使用转义字符"\"将特殊符号(如$、\、!等)变为一般字符
6.如果变量的内容是由其他命令提供的,需要使用$(命令)来获取变量的值
|-示例
1.为变量增加额外内容
示例:
2.取消变量的定义
语法格式: unset 变量名
示例:
注意:
如果取消系统的环境变量,需要修改/etc/profile文件,不然不生效
系统默认的变量通常变量名都为大写,自定义的变量建议使用小写,方便区分
1.使用反引号(反引号为tab键上方的按键)
语法格式: 变量名=·命令名· (使用反引号包住命令)
示例:
由示例看出,这种方式变量的值就为命令获取的值
2.使用圆括号
语法格式: 变量名=(命令)
示例:
由示例看出,此种方式变量的值就是命令本身
1.全局变量:
2.局部变量:
3.把一个命令定义成一个变量$(命令)或者·命令·
4.若变量和其他字符组成新的变量就需要个变量加上大括号,否则容易出错如${date}day
1.数据重定向的基本概念
1.数据重定向的命令及其对应的编号
数据重定向对应的编号
常用的组合命令及其含义
示例:将ls的输出重定向到ls.log文件中
2.使用数据重定向的方式书写内容到指定文件
语法格式: cat > filename << "EOF"
输入此命令,此后所有的内容都会有">"提示输入,直到输入一个"EOF",才会关闭输入流
示例:
3.使用数据重定向测试执行程序
对程序进行测试,就是看看能否执行成功,无需显示执行过程和信息
示例:
示例中,/dev/null,叫做"黑洞",把数据输出到此设备中,不会被保存,而是被丢弃
2>&1:表示无论是错误的还是正确的信息都输出到/dev/null设备中
1.命令回传值的基本概念
1.Linux系统中的短路与(&&)和短路或(||)
短路与和短路或的应用
示例:判断/temp/test是否存在,存在则创建/temp/test/test.txt
1.管道命令的基本概念
2.grep命令
3.示例
将ls查询到的信息传递给grep命令进行搜索匹配文件夹名包含"ba"的内容
1.find命令的功能
find命令能够在一个目录中搜索文件,可以指定匹配条件,比如按文件名,文件类型等
2.find命令及其常用选项
语法格式: find [目录路径] [选项] 参数
常用选项:
1.sed的基本概念
2.sed逐行处理文件,并将结果发送到屏幕的具体过程
3.sed命令的应用
语法格式: sed [选项] "[动作]" fileName
常用选项:
特殊选项:
示例:修改源文件,同时想要修改后的源文件的内容显示在屏幕上
常用动作:
示例:sed "s/baiduhadoop/hadoop/g" demo.txt
注意:
如果想要修改源文件的内容,使用选项-i即可:sed -i "s/baiduhadoop/hadoop/g" demo.txt
如果向输出到其他文件里:sed "s/baiduhadoop/hadoop/g" demo.txt > demo1.txt
示例:应用多条sed的动作进行文件内容的修改
方式1,通过-e选项:sed -e "s/h/H/g" -e "s/o/O/g" fileName
方式2,通过在引号中添加分号的形式:sed "s/h/H/g;s/o/O/g" fileName
1.sort命令的作用
2.sort命令及其选项
语法格式: sort [选项] 参数
常用选项:
3.示例
默认排序:
指定的四段进行排序:
1.cut命令的作用
cut命令在文件中负责剪切数据用的,但是数据必须是有规则的数据
2.cut命名及其常用选项
语法格式: cut [选项] [参数] fileName
常用选项:
示例:
示例:剪切每一行的第5个到第7个字节
示例:剪切每一行第6个字节之后的内容
示例:剪切每一行,第6个字节之前的内容
1.history命令的作用
该命令用于显示历史执行过的所有命令
2.历史命令的一些执行命令
1.什么是shell script
shell script就是以固定语法组织起来的存文本文件
可以编译这个文件,让文件帮助我们一次执行多条命令
可以通过一些运算与逻辑判断来达成较为复杂的功能
2.shell script的注意事项
命令的执行是从上而下,从左到右执行的
命令、选项和参数间的多个空格会被忽略
空白行也被忽略掉,tab被当成空格
"#"后面的内容为注释,不会执行
如果读取一个Enter符号,就会尝试开始执行该行命令
1.直接执行
假设程序文件名是:/home/shell.sh(该文件必须是可读可执行的权限(rx))
通过绝对路径:运行/home/shell.sh
通过相对路径:先cd到/home/,使用./shell.sh 执行
2.通过source执行
假设程序文件名是:/home/shell.sh(该文件必须是可读可执行的权限(rx))
语法格式:source /home/shell.sh
3.通过sh执行
假设程序文件名是:/home/shell.sh(该文件必须是可读可执行的权限(rx))
语法格式:sh /home/shell.sh
1.提示用户输入两个数字,然后对这两个数字进行相乘,给用户返回结果
#!/bin/bash
#告诉用户本程序的功能,并且引导用户进行内容的输入
echo "您好,请输入两个数字,我将对这两个数字进行乘法运行,给您返回结果!"
#引导用户输入
read -p "请输入第一个数字:" num1
read -p "请输入第二个数字:" num2
#计算结果,并返回
mul=$(($num1*$num2))
echo "您输入的两个数字${num1}*${num2}的结果是${mul}"
以上脚本解析:
1.test命令及其选项
语法格式:test [选项] 参数
常用选项:
2.编写一个脚本,判断文件时那种类型,具有哪些权限
#!/bin/bash
#先给予提示
read -p "请输入一个文件名,将对其判断文件类型及其权限" fileName
#是否输入了文件名,如果为空,进行提示,并提示脚本
test -z $fileName&&echo "您必须输入一个文件名" && exit 1
#判断文件/目录是否存在?不存在则结束脚本
test !-e $fileName && exit 2
#判断文件类型及其统计文件具有哪些权限
test -f $fileName && filetype="文件"
test -d $fileName && filetype="目录"
test -r $fileName && filetype="读"
test -w $fileName && filetype="${fileperm}-写"
test -x $fileName && filetype="${fileperm}-执行"
#输出文件类型和文件所有的权限
echo "您输入${fileName}的类型是${filetype},它具备的权限是${fileperm}"
原文:https://www.cnblogs.com/super-education/p/11042656.html