系列文章目录

玩树梅派学linux-shell编程


文章目录

  • 系列文章目录
  • 前言
  • 一、shell是什么?
  • 二、shell脚本有哪些作用
  • 三、开始我们的shell之旅
    • 1.hello shell
    • 2.$x在shell中的特殊含义
  • 总结

前言

决定写这一系列文字已经很久了,在工作和学习中一直在进步。一直都很忙,而且之前开头的几篇文章不是很好但是只是回忆了一下我玩树梅派学linux的过程。虽然,最近经历了很多,在北京真的很难,工作很累还没有休息好就经历了蛋壳资金链危机我不得不另寻安身之所。但是生活总归是美好的,这一切都会过去而我也决定再往前走一步。希望每一个人都能安然的度过这个多灾多难的2020并取得进步。


一、shell是什么?

我的题目是shell编程,想必它应该是一门编程语言吧。也可以这么理解吧,其实百度百科应该会比我说的明白。如果想看官方的解释可以考虑去看看百度百科,我只说一下我自己的理解。其实作为操作系统的linux它需要提供一个用户操作接口,也就是人机交互程序。说白了就是计算机通过接收用户终端输入的命令来决定干什么然后把结果输出给用户。于是我们称这个程序为命令解释器。那如果用户每次完成一份工作都需要执行一系列的命令,这时如果让用户每次都把这些命令都在键盘上输入一遍可能作为用户的我就会抓狂了。于是,内核开发人员就想了一个办法,把这些命令写入一个文件中,当用户要再次完成这项工作时只需要告诉命令解释器执行那个文件中的命令就行了。命令解释器会从文件中读如这些命令并依次执行。这个文件就是shell脚本。

二、shell脚本有哪些作用

1.批量的执行一系列的命令来完成某项工作。
2. 快速构建新的软件,利用linux现有的众多的命令以及小程序,利用shell脚本将这些功能各异的命令进行整合可以快速的构建新的软件功能。它可以最大限度的扩大软件的杠杆效应。
3. 增加软件的可移植性,因为shell脚本构建的软件是众多命令的组合,所以增加或者删减某个功能很方便。另外,很容易移植到其他体系结构的linux主机上。
4. 降低了构建软件时模块之间的耦合性。

三、开始我们的shell之旅

1.hello shell

每当我们接触一种新的编程语言时总要从hello world!开始,那我们就从hello shell!开始吧!用我们之前学习的vim编辑器新建一个hello.sh文件,并输入一下内容。保存推出我们就完成了一个shell编程的“hello world!”

#!/bin/sh
#
# hello.sh
#
echo "hello shell!"

然后,我们就可以运行我们的脚本了,类似于:

运行脚本在终端输出了一行字符串。从此,我们就开启了shell编程之路。下面让我解释一下我们短短的程序以让菜鸟有更好的开始。
第一行:#!/bin/sh,这个是告诉操作系统这个脚本要用那种解释器,脚本解释器的路径是什么。因为linux比较自由,有庞大的开发社区。于是就产生了很多种脚本解释器,不管你用那种解释器,shell编程大同小异。
第二行到第四行:是注释,在shell脚本中‘#’后面是注释,与C语言中的‘//’类似。
第三行执行了一个echo命令输出一个字符串。
这个脚本类似于C语言的:

#include <stdio.h>
//
// hello.c
//
int main()
{printf("hello world!");return 0;
}

2.$x在shell中的特殊含义

每种语言都有一些特殊的符号,在shell中我们总能遇到一堆以$符修饰的东西,能否正确的使用$是熟练使用shell脚本很关键的一步。下面我将类比C语言来一起探讨他们各自的含义。(当然前提是读者对C语言有一定的了解);
首先先说说第一种:$0,$1......$n 即后面的x是一个数字代表什么意思呢?我们不是在hello shell中已经学会用echo命令输出字符串了吗?那我们就将他们输出到终端,看看他们到底是什么东东。

#!/bin/sh
#
# xnumber.sh
#echo $0
echo $1
echo $2
echo $3
echo $4

好,我们就输出这四个应该就可以说明问题了,我们运行一下看看结果。

我们发现$0就是我们脚本的文件名,根确切的说是我们输入的命令。但$1-$4输出为空,难道$n代表我们输入的第n个参数?那我们可以试试:

我的猜测似乎一点都没有错,哈哈。


总结

这可能是最近最后一篇关于linux的文章了。。。。。。很遗憾我最近换了一份工作是做单片机方面的协议栈以及boot方面的开发,那时一种全新的挑战。于是我决定去试试,我不得不暂别我热爱的linux以及相关的开发工作。到今天为止我已经入职新公司3个星期了,是一种忙碌的感觉,我每天加班到晚上8点回家后就9点多了。所以我几乎没有时间更新博客,所以这可能是以后很长一段时间的最后一篇博客了。希望在努力一段时间后有更高的提升后可以提供更有价值的博文。

玩树梅派学linux-shell编程相关推荐

  1. 思维导图学 Linux Shell攻略之小试牛刀篇

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/1607563 曾听一位 ...

  2. 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程

    Linux Shell 编程 极简教程 内容摘要 本文是 Linux Shell 编程简单入门.主要内容: Linux 简介 Shell 编程入门 Kotlin 脚本与 Shell 脚本 Linux ...

  3. linux .sh文件详解,干货讲解之Linux Shell编程

    原标题:干货讲解之Linux Shell编程 Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. She ...

  4. 《Linux Shell编程学习笔记之一》

    <Linux Shell编程学习笔记之一> 前言 由于自己一直在Windows上面编程,用linux用的比较少,学习linux还是本科大二学的一点点知识.因此自己就准备花点时间来熟悉下li ...

  5. Linux Shell 编程学习总结

    Shell 教程 Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成 ...

  6. linux实验三shell程序设计,实验三 LINUX SHELL编程

    精选文库 -实验三LINUX SHELL 编程 四.实验内容 本实验包含两个具体的SHELL程序编写任务,较为全面地涉及了SHELL 程序的设计方法和技术.内容如下: 1.创建以下菜单程序: USER ...

  7. linux —— shell 编程(文本处理)

    导读 本文为博文 linux -- shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed a ...

  8. 《Linux Shell编程从初学到精通(第2版)》pdf

    下载地址:网盘下载 内容简介 编辑 shell是用户与内核进行交互操作的一种接口,是linux最重要的软件之一.目前最流行的shell称为bash shell,bash shell脚本编程以其简洁.高 ...

  9. linux简单重定向代码,Linux Shell编程(26)——代码块重定向

    像 while, until, 和 for 循环代码块, 甚至 if/then 测试结构的代码块都能做到标准输入的重定向. 即使函数也可以使用这种重定向的格式 .所有的这些依靠代码块结尾的 < ...

最新文章

  1. 在遗传算法中出现等式约束_排序算法中的稳定性-等式的处理
  2. 远程为服务器安装Windows 2008 Server
  3. 【Java报错】mapper传入array\collection\list类型的参数时报BindingException:Parameter `` not found(问题复现+3种解决方法)
  4. matlab中的reshape函数用法
  5. c++ gdb 绑定源码_2020重学Go系列:30. 非常详细的 Go 语言 GDB 调试指南
  6. git 修改默认分支为main_Git:基本操作
  7. 贵州农信凭证打印小程序_我的医保凭证小程序入口
  8. java读二进制bin文件内容_利用Java读取二进制文件示例详细解说
  9. 第 7 章 缓存应用程序块
  10. ab753变频器参数怎么拷贝到面板_20款常用变频器密码,想成为电工老师傅你一定需要,纯干货分享!...
  11. JavaScript视频系统教程
  12. vscode如何设置大小写转换的快捷键
  13. 华为手机上的网上邻居怎么用_华为手机上的网上邻居怎么用_HUAWEI Mate 8 网络邻居 使用教程...
  14. 《高性能MySQL》阅读 -Mysql基本特性
  15. 如何调用Sphinx 和api接口
  16. Mac IntelliJIDEA非正常关闭解决(reopen失败)
  17. @ds实现多数据源切换及解决事务失效问题
  18. 获取店铺商品详情和订单详情
  19. 传美云商系统开发源码
  20. 酷体网--可以顶(dig)的运动空间

热门文章

  1. 全新抖音快手微信取图小程序 壁纸小程序源码 全开源
  2. 我要第一!!!!!!!
  3. 数学建模学习(66):支持向量机 (SVM)案例实战
  4. int argc 命令行变量个数 与 char** argv 命令行变量数组
  5. matlab 训练一个用于降维的暹罗网络(孪生网络)
  6. 直播短视频平台最常用的美颜SDK功能是什么?功能如何实现?
  7. 说好不哭,但是再次听到你的新歌还是没忍住
  8. [sensor]如何解决光感不灵敏的问题
  9. 超级变态聊天 聊到对方崩溃
  10. Kafka学习之一 Kafka是什么,主要应用在什么场景?