Linux学习(七)——shell简易编程

7.1、shell简介

7.1.1、shell是什么

shell也是一个应用程序,它连接了用户和Linux内核,让用户能够更高效、安全、低成本地使用Linux内核,这也是shell的本质

shell也是一种脚本编程语言

7.1.2、shell能做什么

1、连接用户和内核
2、还能连接其他程序
3、shell还支持编程

7.1.3、shell怎么样连接用户和内核

shell是通过调用内核提供的接口函数,来实现用户与内核之间的交互

7.2、shell的主要类型

​ 常见的shell有sh、bash、csh、ash、dash等

sh

​ sh是UNIX系统上标准的shell,sh是第一个流行的shell

csh

​ csh的语法有点类似C语言,成为C shell

ash

​ 一个简单的轻量级的shell,占用的资源少

bash

​ bash由GNU组织开发,保持了对sh shell的兼容,也是各种Linux发行版默认的配置的shell

查看shell

​ 当前系统可用的shell都记录在/etc/shells文件中

cat /etc/shells

​ 查看shell指向哪种解释器:

ls /bin/sh -l

​ 如何切换sh的指向,指向到bash:

sudo dpkg-reconfigure dash

7.3、shell命令

7.3.1、进入shell的两种方式

1、进入Linux控制台

​ ctrl+Alt+Fn(1、2、3。。)

2、使用终端

7.3.2、shell命令的基本格式

​ 命令提示符:

linux@linux-VirtualBox:~$

​ 基本格式:

command [选项][参数]

​ 1、使用选项:ls -l

​ 2、使用参数:参数就是命令的操作对象 ls -l /bin/sh

​ 3、一起使用

7.3.3、shell命令的本质

一个外部的应用程序是如何变成一个shell命令的?

​ shell在启动文件中增加了一个叫做PATH的环境变量,这个变量保存了shell对外部命令的查找路径,如果找不到对应的文件名,则直接报错

​ 查看PATH环境变量的值:

echo $PATH
shell的内置命令本质是一个自带的函数
shell的外部命令本质是一个应用程序,执行外部命令就是启动一个应用程序

7.4、shell的特殊字符

7.4.1、通配符

​ *:代表任意长度的字符串 ,例如:ls f *

​ ?:代表任意的单字符

​ []:代表指定的一个字符范围 ls f[abcd] \ ls f[a-d]

*Text*
[ab-df]*
[ab-dm]?
??

7.4.2、引号

1、单引号

​ 由单引号括起来的字符都作为普通字符出现,特殊字符被单引号括起来后,失去原有的意义。

echo '$PATH'
$PATH
2、双引号

​ 双引号属于弱引用,双引号内有命令、变量等,会先把变量、命令解析出来结果,然后输出最终的结果

echo "$PWD"
/home/linux
3、注释符
单行注释:

​ 直接在行的最前端加#即可

多行注释

​ 1、eof截止符

​ :<<eof 注释代码 eof

echo "test"
echo "test"
echo "test"
:<<eof
echo "hello"
echo "hello"
echo "hello"
eof

​ 2、感叹号

​ :<<!注释代码 !

​ 3、逗号

​ : , 注释代码 ,

7.5、输入和输出

7.5.1、管道

​ 将两个或者多个命令(程序、进程)连接在一起,把一个命令的输出作为下一个命令的输入

​ Linux下使用 | 连接多个命令,也成为管道符

command1 | command2 [|command3...]
find ~/ | grep "test"

7.5.2、重定向

改变默认的输出方式,可以由打印到屏幕改为写入文件
ls > test.txt
在输出重定向中,>表示复盖,>> 表示追加
管道和重定向的区别

​ 重定向必须是由文件来接收输出,而管道可以由命令来接收输出

​ 不能尝试:

command1 > command2 [|command3...]

7.6、shell编程

7.6.1、shell基本语法

shell变量

​ 定义:

变量名=value
变量名='value'
变量名="value"
    赋值号周围不能有空格

​ 使用变量:

​ 只要在变量前加入$即可

​ 删除变量:

​ unset 变量名

7.6.2、shell程序的控制结构语句

if 条件1 then 如果条件1为真,则执行
elif 条件2 then 2为真,则执行
else	1、2、为假则执行
for 变量名 in 列表
do
	命令
done
while 条件
do
	命令
done

7.6.3、运行shell程序的方式

​ 1、直接执行./test.sh

​ 需要给shell程序用户的执行权限

chmod u+x test.sh
./test.sh

​ 2、使用 bash test.sh

​ 3、使用 . test.sh

执行方式 是否需要执行权限 是否以新进程运行脚本
./test.sh 需要
bash test.sh
. test.sh

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