SHELL介绍

前言:

计算机只能认识(识别)机器语言(0和1),如(11000000 这种)。但是,我们的程序猿们不能直接去写01这样的代码,所以,要想将程序猿所开发的代码在计算机上运行,就必须找"人"(工具)来翻译成机器语言,这个"人"(工具)就是我们常常所说的编译器或者解释器

1. 编程语言分类

  • 编译型语言:

​ 程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++

  • 解释型语言:

​ 程序不需要编译,程序在运行时由解释器翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Python/JavaScript/ Perl /ruby/Shell等都是解释型语言。

  • 总结

编译型语言比解释型语言速度较快,但是不如解释型语言跨平台性好。如果做底层开发或者大型应用程序或者操作系开发一般都用编译型语言;如果是一些服务器脚本及一些辅助的接口,对速度要求不高、对各个平台的兼容性有要求的话则一般都用解释型语言。

总结:

  • shell就是人机交互的一个桥梁
  • shell的种类
[root@MissHou ~]# cat /etc/shells
/bin/sh #是bash的一个快捷方式
/bin/bash #bash是大多数Linux默认的shell,包含的功能几乎可以涵盖shell所有的功能
/sbin/nologin #表示非交互,不能登录操作系统
/bin/dash #小巧,高效,功能相比少一些
/bin/csh #具有C语言风格的一种shell,具有许多特性,但也有一些缺陷
/bin/tcsh #是csh的增强版,完全兼容csh

思考:终端和shell有什么关系?

  1. 终端,即所谓的命令行界面,又称命令终端,用户输入shell命令用的窗口,跟Windows里的DOS界面差不多。
  2. shell,Shell就是用户和操作系统之间的壳,中介,GUI和CLI都算是Shell,登陆终端可以是登陆了Bash也可能是Csh或者Dash;是操作系统与用户交互用的接口,在命令终端里可以使用shell。shell将用户输入翻译为操作系统能处理的指令。shell提供了一些内置命令,也支持调用外面工具。

2. shell脚本

㈠ 什么是shell脚本?

  • 一句话概括

简单来说就是将需要执行的命令保存到文本中,按照顺序执行。它是解释型的,意味着不需要编译。

  • 准确叙述

若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= shell脚本

㈡ 什么时候用到脚本?

重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。

㈢ shell脚本能干啥?

①自动化软件部署 LAMP/LNMP/Tomcat...

②自动化管理 系统初始化脚本、批量更改主机密码、推送公钥...

③自动化分析处理 统计网站访问量

④自动化备份 数据库备份、日志转储...

⑤自动化监控脚本

㈣ 如何学习shell脚本?

  1. 尽可能记忆更多的命令(记忆命令使用功能和场景)
  2. 掌握脚本的标准的格式(指定魔法字节、使用标准的执行方式运行脚本)
  3. 必须熟悉掌握脚本的基本语法(重点)

㈤ 学习shell脚本的秘诀

多看(看懂)——>模仿(多练)——>多思考(多写)

㈥ shell脚本的基本写法

1)脚本第一行,魔法字符#!指定解释器【必写】

#!/bin/bash 表示以下内容使用bash解释器解析

注意:

如果直接将解释器路径写死在脚本里,可能在某些系统就会存在找不到解释器的兼容性问题,所以可以使用:#!/bin/env 解释器

2)脚本第二部分,注释(#号)说明,对脚本的基本信息进行描述【可选】

#!/bin/env bash

# 以下内容是对脚本的基本信息的描述
# Name: 名字
# Desc:描述describe
# Path:存放路径
# Usage:用法
# Update:更新时间 #下面就是脚本的具体内容
commands
...

3)脚本第三部分,脚本要实现的具体代码内容

㈦ shell脚本的执行方法

  • 标准脚本执行方法(建议)
#1) 编写人生第一个shell脚本
[root@MissHou shell01]cat first_shell.sh
!/bin/env bash # 以下内容是对脚本的基本信息的描述
# Name: first_shell.sh
# Desc: num1
# Path: /shell01/first_shell.sh
# Usage:/shell01/first_shell.sh
# Update:2019-05-05 echo "hello world"
echo "hello world"
echo "hello world" #2) 脚本增加可执行权限
[root@MissHou shell01]chmod +x first_shell.sh #3) 标准方式执行脚本
[root@MissHou shell01]pwd
/shell01
[root@MissHou shell01]/shell01/first_shell.sh
#或者
[root@MissHou shell01]./first_shell.sh 注意:标准执行方式脚本必须要有可执行权限。
  • 非标准的执行方法(不建议)

  1. 直接在命令行指定解释器执行
[root@MissHou shell01]bash first_shell.sh
[root@MissHou shell01]sh first_shell.sh
[root@MissHou shell01]bash -x first_shell.sh
+ echo 'hello world'
hello world
+ echo 'hello world'
hello world
+ echo 'hello world'
hello world #-x:一般用于排错,查看脚本的执行过程
#-n:用来查看脚本的语法是否有问题
  1. 使用source命令读取脚本文件,执行文件里的代码
[root@MissHou shell01]# source first_shell.sh
hello world
hello world
hello world
  • source或者.命令是Shell的内建命令,这种方式也不会创建子Shell,而是直接在交互式Shell下逐行执行脚本中的命令

第一部分_Shell介绍的更多相关文章

  1. 《Getting Started with WebRTC》第一章 WebRTC介绍

    <Getting Started with WebRTC>第一章 WebRTC介绍 ​ 本章是对WebRTC做概念性的介绍. 阅读完本章后.你将对下面方面有一个清晰的理解:   .  什么 ...

  2. 【Bochs 官方手册翻译】 第一章 Bochs介绍

    Bochs 是一个可以完全模拟 Intel x86 计算机的虚拟机系统.它包含了 Intel x86 CPU 仿真.常见设备仿真.以及定制 BIOS.Bochs 可以虚拟多种不同类型的 x86 CPU ...

  3. LSJ_NHibernate第一章 NHibernate介绍

    前言: 说起NHibernate网上资料真不少,但用的人却并不多,说起java的SSH框架大家可能就知道了,这里的H指的就是Hibernate,一款好用的ORM框架,在.net重写了这款好用的框架,名 ...

  4. AWK第一篇------全面介绍

    AWK-文本流编辑器 目录 [隐藏] 1 命令行语法 2 用shell实现调用awk 3 awk语言概要 3.1 记录和字段 3.2 脚本的格式 3.3 行为终止 3.4 注释 3.5 模式 3.6  ...

  5. python第一篇-------python介绍

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写Python语言的编译器.Python这个名字,来自Guido所 ...

  6. webservice第一篇【介绍、Scoket、http调用、wsimport调用】

    WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧-. 问题一 如果我们的网站需要提供一个天气预报这样一个需求的话,那我们该怎么做????? 天气预报这么一个 ...

  7. jquery-easyUI第一篇【介绍、入门、使用常用的组件】

    什么是easyUI 我们可以看官方对easyUI的介绍: easyUI就是一个在Jquery的基础上封装了一些组件-.我们在编写页面的时候,就可以直接使用这些组件-非常方便-easyUI多用于在后台的 ...

  8. Spring第一篇【介绍Spring、引入Spring、Spring六大模块】

    前言 前面已经学习了Struts2和Hibernate框架了.接下来学习的是Spring框架-本博文主要是引入Spring框架- Spring介绍 Spring诞生: 创建Spring的目的就是用来替 ...

  9. 第一章 python介绍、变量、数据类型、流程控制语句等

    一.python介绍 1.python的诞生 python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(龟叔)于1989年发明,第一个公开发行版发行于1991年. ...

  10. JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别

    1. 学习计划   第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) Sp ...

随机推荐

  1. 关于LUN的归属控制器

    ALUA (Asymmetric logic Unit Access)  架构 在ALUA (Asymmetric logic Unit Access)  架构中,LUN有归属控制器,客户在创建LUN ...

  2. PTA乙级1099

    #include"bits/stdc++.h" using namespace std; int prime(int x) { if(x<2) return 0; for(i ...

  3. C# ConfigMan.cs

    public static class ConfigMan { public static string ReadKey(string key) { return ConfigurationManag ...

  4. 解决ADS1.2与MDK4.7冲突问题

    需要添加2个系统变量. 1,在我的电脑点击属性--->高级--->环境变量---->系统变量,增加环境变量名: ARMCC5LIB 变量值:C:\Keil\ARM\ARMCC\lib ...

  5. 基于JuiceFS 的低成本 Elasticsearch 云上备份存储

    杭州火石创造是国内专注于产业大数据的数据智能服务商,为了解决数据存储及高效服务客户需求,选择了 Elasticsearch 搜索引擎进行云上存储.基于性能和成本的考虑,在阿里云选择用本地 SSD EC ...

  6. 计算网络之IPv6配置DHCP服务及acl

    一.DHCPv6服务 DHCP即动态主机地址分配协议,在前面已经启动过IPv4的动态主机分配了, 还是来介绍两种方式 接口模式 全局模式 现在需要了解的就是DHCHv6,即基于IPv6的动态主机地址分 ...

  7. Ubuntu 20.04 使用 vlmscd 搭建 KMS 服务端

    前言 为了内网系统激活需要,搭建此客户端. 1. 下载二进制文件 打开项目官网:https://github.com/Wind4/vlmcsd 下载项目二进制文件: 选择对应系统和架构 选择性能较好的 ...

  8. cyclone3内部资源

    CycloneIII内部资源概述 目录 CycloneIII内部资源概述 Logic Elements and Logic Array Blocks(逻辑元件和逻辑阵列块) LE LAB LAB In ...

  9. Linux中execl函数详解与日常应用!

    Linux中execl函数详解与日常应用 execl是Linux系统中的一个系统调用,用于执行指定路径下的可执行文件.本文将详细介绍execl函数的使用方法和参数含义,并探讨其在日常开发中的常见应用场 ...

  10. 有什么巨好用Excel数据分析技巧?

    当涉及Excel数据分析时,以下是一些非常实用的技巧和功能,供您参考.这里将为您提供关于数据整理.数据清洗.统计分析.可视化和高级分析等方面的技巧. 一.数据整理与清洗: 导入数据:使用 Excel ...