美文网首页
Shell入门01 -- Shell定义,种类,作用,调试,特性

Shell入门01 -- Shell定义,种类,作用,调试,特性

作者: YanZi_33 | 来源:发表于2021-09-27 18:31 被阅读0次

前言

  • 计算机只能识别机器语言0和1,但是 ,我门程序员不可能直接写机器语言的代码,所以要想讲程序员开发的代码在计算机上运行,就必须找工具来翻译成机器语言,这个工具就是我们常说的编译器解释器

编程器语言的分类

编译型语言
  • 程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了,程序执行效率高,依赖编译器,跨平台性差,例如C,C++,Object_C,Java等等;
解释型语言
  • 程序不需要编译,程序在运行时由解释器翻译成机器语言,每执行一次都要翻译一次,因此效率比较低,例如Python,Shell,Ruby,JavaScript等等都是解释型语言;
image.png

Shell定义

  • 首先,Shell 是一个程序,提供一个与用户对话的环境。这个环境只有一个命令提示符,让用户从键盘输入命令,所以又称为命令行环境(command line interface,简写为 CLI)。Shell 接收到用户输入的命令,将命令送入操作系统执行,并将结果返回给用户。本书中,除非特别指明,Shell 指的就是命令行环境。
  • 其次,Shell 是一个命令解释器,解释用户输入的命令。它支持变量、条件判断、循环操作等语法,所以用户可以用 Shell 命令写出各种小程序,又称为脚本(script)。这些脚本都通过 Shell 的解释执行,而不通过编译。
  • 最后,Shell 是一个工具箱,提供了各种小工具,供用户方便地使用操作系统的功能;
  • 总之,Shell是介于系统内核与用户之间,负责命令解释的;

Shell的种类

  • Shell 有很多种,只要能给用户提供命令行环境的程序,都可以看作是 Shell;
  • 历史上,主要的 Shell 有下面这些:
    • Bourne Shell(sh)
    • Bourne Again shell(bash)
    • C Shell(csh)
    • TENEX C Shell(tcsh)
    • Korn shell(ksh)
    • Z Shell(zsh)
    • Friendly Interactive Shell(fish)
  • Bash 是目前最常用的 Shell,除非特别指明,下文的 Shell 和 Bash 当作同义词使用,可以互换;
  • 终端执行cat /etc/shells可查看本机的shell种类,如下所示:
    image.png
  • 终端执行 bash --version 可查看bash的版本信息;
  • 终端与shell之间的关系:打开一个终端,就是打开了一个shell程序;

Shell脚本

  • 简单来说shell脚本是将需要执行的命令保存到文本中,按照顺序执行,它是解释型语言,不需要进行编译;
  • 若干命令 + shell格式 + shell语法 + 逻辑 = shell脚本
  • 其作用:简化操作步骤,提高效率,减少人为干预,减少系统故障;
  • 下面先上一个常规操作,熟悉一下创建脚本文件的命令行;
image.png
  • mkdir -p soft/scripts:创建文件路径/soft/scripts,其中加上-p是为了防止执行错误;
  • mkdir day01:创建文件夹day01
创建Shell脚本
  • vim test:创建Shell脚本文件test,并进入文件编辑区域,然后按i,可向文件中添加内容,编辑完成后按Esc退出,再按组合键shift + :,然后输入wq保存退出;
    image.png
  • cat test:查看test文件中的内容;
  • ./test:执行脚本文件,注意⚠️test文件是没有后缀的也就是说没有指明文件的类型,而脚本文件类型通常有Shell脚本Python脚本./test命令默认执行Shell脚本,发现报错-bash: ./test: Permission denied,是因为没有赋予执行权限,输入chmod +x test即可赋予执行权限,然后再执行./test,可执行成功!
  • bash test:也可执行Shell脚本其与sh test等价,其执行脚本有权限的,可以直接执行,这是与./test命令的区别;
创建Python脚本
  • vim tes:再创建一个tes文件,内容如下所示:

    image.png
  • 然后执行./tes或者bash tes或者sh tes均出现报错./tes: line 3: print: command not found,这是因为tes文件是Python脚本文件./tes默认执行的Shell脚本,所以会出现报错,可通过python tes执行成功!

  • tes文件做如下修改,顶部第一行加入#!/usr/bin/python,如下所示:

    image.png
  • #!/usr/bin/python:告诉系统使用python解释器解释脚本,所以这行代码是必须添加的,同理Shell脚本文件首行也要加上解释器#!/bin/bash,如下:

    Snip20210928_78.png
  • 发现两个路径/bin/usr/bin

  • /bin路径下没有python可执行文件,而在/usr/bin路径下存在;

  • bashsh这个两个可执行文件在/bin/usr/bin路径下均存在;

总结
  • 当脚本文件没有指明解释器时,./脚本文件名 默认执行shell脚本,若为python脚本,就会出现报错,且./脚本文件名需要添加执行权限;
  • 当Shell脚本指明解释器#!/bin/bash,Python脚本指明解释器#!/usr/bin/python,均可通过./脚本文件名执行脚本,也可分别通过sh 脚本文件名python 脚本文件名 执行脚本;
  • 如果直接将解释器的路径写死在脚本中,可能在某些系统就会存在找不到解释器的兼容性问题,可使用#!/bin/env bash
Shell脚本的调试
  • sh -vx 脚本文件名:查看脚本文件的执行过程;
  • sh -n 脚本文件名:检测脚本文件是否存在语法错误;
  • vim 脚本文件名 +报错的line:可直接定位到脚本文件报错的指定函数位置;
  • Command + T:创建一个新的终端窗口;

Bash的特性

命令与文件的自动补全
  • tab键能补全命令和文件;
常用快捷键
  • control + c:终止前台运行的程序;
  • control + l:清屏;
  • control + r:搜索历史命令;
  • control + z:将前台运行的程序挂起到后台;
  • control + d:退出 等价于exit
常用通配符
  • *:匹配0个或多个任意字符;
  • ?:匹配任意单个字符;
引号
  • 双引号:对引起来的内容,会解析变量;
  • 单引号:对引起来的内容,不会解析变量,输入等于输出;
  • 反引号:是用来解析shell命令的 其与 $()等价;

相关文章

  • Shell入门01 -- Shell定义,种类,作用,调试,特性

    前言 计算机只能识别机器语言0和1,但是 ,我门程序员不可能直接写机器语言的代码,所以要想讲程序员开发的代码在计算...

  • 2019-01-05shell编程之变量的定义

    一、shell能做什么? 二、shell语言的执行方式 三、shell变量的定义 1,自定义变量: 特性: 赋值 ...

  • 1.bash 简介与名词定义

    总目录: 1,bash 简介2,名词定义3,shell 基本特性4,shell 内建命令5,shell 变量6,b...

  • Python爬虫学习17-爬取知乎页面

    1、通过scrapy shell调试 在使用shell调试时,直接通过scrapy shell https://w...

  • shell编程

    Shell入门 什么是shell? Shell其实是一个命令解释器,作用是解释执行用户输入的命令以及程序等,用户每...

  • Shell 概述

    学习 Shell 主要包括的内容: Shell 脚本入门 Shell 变量 Shell 内置命令 Shell 运算...

  • Shell入门笔记

    Shell脚本:Linux Shell脚本学习指南菜鸟教程 - Shell教程Linux入门 - Shell脚本是...

  • Shell 学习笔记录

    Shell [TOC] Shell 环境 Linux 的 Shell 种类众多,常见的有: Bourne Shel...

  • shell 第一天

    shell编程初识 1.1 shell编程初识 shell的定义 Shell 是命令解释器 Shell 也是...

  • shell基础

    shell入门

网友评论

      本文标题:Shell入门01 -- Shell定义,种类,作用,调试,特性

      本文链接:https://www.haomeiwen.com/subject/ykoagltx.html