shell教程第0篇--shell是什么
liuian 2024-11-28 00:50 60 浏览
shell教程第0篇--shell是什么
本文是shell教程第0篇,主要介绍shell编程的基本知识。
- 首先介绍shell是什么,介绍shell在linux/unix中的重要作用
- 接下来会厘清shell中的一些概念,区分shell和shell script
- 一般系统带的shell都及其难用,这里介绍如何配置shell让工作更加顺手
- shell script是我们重点学习的内容,接下来简要分析一下shell编程的难点和我们学习的过程
- 最后会给出整个教程的目录,方便大家按照自己的需要查阅
shell是什么
在影视作品中,常常看到一个天才在电脑面前敲几下代码,然后就成功地黑进了对方服务器,然后把对方给制服了。而他面对的黑色界面,通常就是一个shell。其实你内心会想,为啥不是一路鼠标点击下一步?
计算机早期只有键盘(没有鼠标),所有和计算机的交互都是通过键盘输入命令来实现。比如我们在命令行(terminal中)输入ls,就可以显示当前目录下的文件。
但其实从输入ls到在屏幕上显示文件夹这是一个很复杂的过程。要点就是我们通过shell来调用计算机操作系统的内核,操作系统的内核来控制硬件做出相应的行为。
下面讲一个冗长的故事来说明这个问题。如果不愿意看,可以略过。
电子计算机是一堆实实在在的物理器件搭建起来的。屏幕上能的文字,硬盘中存储文件,都是因为硬件中的电路改变的结果。操作计算机,其实是对硬件的操作。但是硬件确实是很复杂的东西,复杂到人脑大约装不下。简单的硬件比如说电子手表,复杂的硬件比如说计算机芯片:别说操作硬件了,就连看懂电路图都很困难;遑论把它们组装起来实现一定的功能。此时,人们的处理办法是分块处理。定义好各个部分之间的连接和接口,把每个模块开发好,然后连接起来一起处理。不同模块实现不同功能,最终各个击破,实现我们想要的效果。
低级的功能在底层实现,高级的功能在顶层实现。低级的功能通过组合就是高级的功能。比如说控制屏幕上特定的一个点显示的颜色是一个低级的功能,这个是人脑能够处理的。我们先把这个东西搞好。然后通过组合,就可以实现对屏幕上所有点的控制,这就是高级功能。
低级功能和高级功能之间必然存在接口,这样才能从上往下发命令,从下往上反馈结果。在计算机中,硬件处于底层,而我们对计算的操作处于顶层,顶层和底层之间联系的通道就是shell。
再举一个建房子的的例子。工人擅长搬砖,砌墙啥,项目负责人来指挥,起初要建房的人,不会和工人直接谈,而是会经过项目负责人来谈。这里的shell就是起初建房的人和项目负责人的语言。
在计算机中,操作内核的也不只有shell,常见的软件也是可以操作到系统内核的。最常见的图形界面,也是会操作系统内核的。
不过shell在Unix/Linux等机器上具有效率高,可以短期大量操作的优点,所以成为运维的需要。
常见的shell
从前面的讲述中可以了解到,shell并不是操作内核的唯一方式。这里也可以做一点小小推断,不同的shell也可以操作内核,实现相同功能。实际也是有多个shell可以使用。最常见的shell是bash,也有sh和zsh。通常裸的bash是很难用的,特别是你用过配置过后的zsh。
shell script
shell中本身可以执行命令,有时候就是一条一条命令的堆叠。针对我们要实现的功能,我们把它们写到一个文件里面,从上到下串行执行。这个就是shell script。
shell是执行shell script的环境,我们学习shell,主要是学习shell script的编写方式。
shell script编写难处
我们写c++,写python,都有调试的过程。代码写得对不对,不是自己说了算,还是要真刀实枪地上机器运行,便知分晓。
当然,这个调试需要有一堆调试环境。或者要集成开发环境。但是在shell script中,则几乎没有这样的环境,只能实际到系统中去运行,但是对与错误的反馈总是不那么智能。
特别是某些针对文件夹的操作,你调试一次,建立了文件夹。条件就又和你上次不一样了。
另外,shell script的语法,和python c++啥的,又有明显的不同。如果你是先学的c++或者python,然后来学shell script,就会觉得shell中有些语法很莫名其妙。
shell script学习方式
这个又是老生常谈的话题了。如何学习shell script,方式就是不断练习。
本系列教程的目录如下:
- shell的配置
- shell与shell script的区别(本文)
- shell script中的变量
- shell script中变量的运算
- shell script对文件夹的判断
- shell script中选择分支循环结构的书写
相关推荐
- 联想win7下载链接(联想win7oem原版下载)
-
如果你想在联想小新win7上下载AMD软件,首先要确定你要下载的是哪款软件。然后,你可以前往AMD官方网站,在网站上搜索该软件并下载。在下载完成后,双击安装该软件即可。另外,你也可以通过第三方软件下载...
- 三星笔记本电脑售后服务维修中心
-
您可以通过以下方式查询附近的三星售后服务点:访问三星官方网站,在网站首页选择“售后服务”选项,然后选择“售后服务网点查询”,在弹出的页面中选择所在省份和城市,即可查询附近的售后服务网点。在手机应用商店...
- 电脑重装系统后没有声音怎么解决
-
电脑重装系统后没有声音,可能是声卡驱动未安装、声卡驱动不兼容或者声音相关服务未开启等原因。解决方法可以尝试重新安装声卡驱动、更新驱动程序软件或者打开声音相关设置。如果问题仍然存在,建议寻求专业人士的...
- word2007安装产品密钥(安装office2010产品密钥)
-
可以通过以下方式获取Word文档的产品密钥:购买正版Word软件,从官方渠道获得产品密钥。下载并安装MicrosoftOffice,从安装过程中获取产品密钥。请注意,任何未经授权的方式获取...
-
- 绝地求生电脑配置要求(绝地求生电脑配置要求2024)
-
绝地求生的最低配置国服官方给出的最低配置是内存6G,CPUInteli3-4340/AMDFX-630,显卡GTX660/HD7850,所有效果最低,但是说实话,这个配置玩起来,体验太差,而且没几局就需要重启客户端,而且GTX6...
-
2025-12-23 21:05 liuian
- 亲手自己重装系统win7(自己怎么重装win7)
-
要一键安装重装系统Win7,您可以使用Windows7安装盘或USB驱动器。首先,将安装盘或USB插入计算机,并重启计算机。然后,在计算机启动时按下相应的按键(通常是F12或Del键)进入启动菜单。...
- windows7旗舰版临时激活(win7暂时激活)
-
关于这个问题,目前,有几种方法可以激活Windows7旗舰版,以下是最简单的几种方法:1.使用激活工具:可以使用一些第三方激活工具,如KMSpico、MicrosoftToolkit等工具来激活...
- 免费查序列号入口(免费查序列号入口平板)
-
苹果查序列号入口可登陆苹果官网checkcoverage.apple.com进行查询,具体步骤如下:1、打开手机设置,点击“通用”;2、进入页面后点击“关于本机”;3、页面跳转后,我们就可以看到本机的...
- 磁盘被保护了如何取消保护(磁盘被保护了如何取消保护设置)
-
1、打开磁盘分区管理窗口中选择要去掉被写保护的磁盘。2、选中磁盘后单击鼠标右键可显示出选项列表下选择属性。3、打开磁盘属性对话框中选择点击硬件选项卡。4、然后在硬件页面中选中所有磁盘后再单击属性按钮。...
- win7系统硬盘分区教程(win7如何对硬盘分区)
-
在Win7中,你可以使用磁盘管理工具来给硬盘分区。首先,打开控制面板,点击“系统和安全”,然后选择“管理工具”。在管理工具中,找到“计算机管理”,点击打开。在计算机管理窗口中,选择“磁盘管理”。在磁盘...
- 电脑不识别移动硬盘怎么办(笔记本电脑不识别移动硬盘怎么办)
-
电脑无法识别移动硬盘的原因有很多,以下是一些可能的原因和相应的解决方法:1.USB供电不足:移动硬盘功率较大,可能需要更多的电压。前置USB接口可能无法提供足够的电压。解决方法是将移动硬盘接到...
- cf穿越火线烟雾头盔怎么调(cf的最新烟雾头盔怎么调)
-
cf新版烟雾保护头盔调置:?cf这款游戏中,更新后调整烟雾头的方法是打开NVIDIA控制面板,在NVIDIA控制面板中选择调整视频颜色设置,接着点击通过NVIDIA设置选项,然后将亮度调整到79%,对...
- u盘怎样格式化最安全(u盘怎么格式化最干净)
-
只需将U盘插入到电脑之后,然后在我的电脑中找到U盘的盘符,使用鼠标右键点击打开菜单,其中就可以看到【格式化】的选项,根据需要选择然后点击【快速格式化】即可U盘格式是FAT32格式,那么其传输速度会明显...
-
- 移动路由器怎么改wifi密码(移动网络路由器怎么改密码wifi密码)
-
1.打开手机设置,找到wifi点击进入,点击已连接的wifi。2.里面有一个路由器的选项,记住路由器后面一串数字。3.打开手机网页,在地址栏输入刚记住的那串数字,点击进入,选择继续访问网页版,输入管理员密码,点击确定。4.点击路由设置,点击...
-
2025-12-23 16:05 liuian
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
