大神教你一招,如何使用Shell

Shell是用来解决用户如何与操作系统通信的问题。
  
  其实大家都对Shell这个概念有误解,好像一定要是命令行的Shell才叫Shell。
  
  其实Shell,就是壳。
  
  顾名思义就是机器外面的一层壳,用于人机交互,只要是人与电脑交互的接口,就可以称为Shell。
  
  所以我们熟悉的GNOME、KDE等图形界面也都是Shell,只不过是GUI Shell。所以像Bash 等 Shell 当初发明的原因当然也就很容易理解了,就是为了人与机器之间交互的问题,只不过当时的技术还不能做出 GUI,所以就做成了命令行的形式。
  
  Linux的核kernel,壳有很多种,
  
  有命令行的:bash、sh、csh、ksh
  
  有图形化的:KDE/GNOME/ CDE/XFCE
  
  据说Linus那伙人只负责开发核。
  
  也可以把 shell 理解为——命令解释器。
  
  现在小天教大家编写简单的Shell脚本
  
  编写Shell脚本的方式非常简单。只需要使用常用的文本编辑器如VIM创建一个文件,然后在文件中输入命令即可。例如,如果想查看当前所在的工作路径并列出当前目录下所有文件及属性信息,实现这个功能的脚本就可以这么编写。

  
  那么一个个来解释这其中的含义吧
  
  第一行#!/bin/bash 代表脚本声明,即告诉系统使用哪种命令解释器执行这个脚本。
  
  第二行#为注释信息。如果有学过C语言或者其他编程语言应该能很快了解。注释信息不会被执行。是对这个脚本功能的解释。方便他人查看脚本的时候知道这个脚本的功能。
  
  后面的就是Linux的命令,就不再赘述了。另外。Linux不以后缀名分辨文件类型。也可以说Linux中没有后缀名的概念。所以脚本名字的.sh是一个约定俗成的规矩 表示这是一个可执行的脚本。
  
  一个写好的脚本文件可以通过bash去执行。结果如下

  
  除了用bash这种方式执行之外,还可以使用“./”去执行。但是可能会报错提示权限不足。这边先使用chmod命令给脚本执行的权限。权限部分的知识在这暂且不提。在此只需要知道脚本的另一种执行方法就行。

  
  接收用户的参数
  
  上面这种简单的shell脚本只能执行一些预先定义好的功能。有时候需要接收用户的输入,才能更好的满足需求。
  
  在Shell语言中,内设了用于接收参数的变量。变量之间可以用空格间隔。例如0代表当前shell脚本程序的名称,0代表当前shell脚本程序的名称,#对应的是总共有几个参数。、?对应的是所有位置的参数值,?对应的是所有位置的参数值,?对应的是上一个命令执行的返回值。112 3…3…N代表第一个,第二个,第三个….第N个参数的值
  
  尝试编写一个脚本程序示例,通过引用上面的变量参数来看下真实效果:

  
  判断用户的参数
  
  系统在执行mkdir命令时会判断用户输入的信息,即判断用户指定的文件夹名称是否已经存在,如果存在则提示报错;反之则自动创建。Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回其他随机数值。
  
  条件测试语法的执行格式如下:
  
  [ 条件表达式 ]注意两边一定要有空格
  
  按照测试对象来划分,条件测试语句可以分为4种
  
  1.文件测试语句
  
  2.逻辑测试语句
  
  3.整数值比较语句
  
  4.字符串比较语句
  
  文件测试即使用指定条件来判断文件是否存在或权限是否满足等情况的运算符.具体参数如下:

  
  下面使用文件测试语句来判断/etc/fstab是否为一个目录类型的文件,然后通过Shell解释器的内设$?变量显示上一条命令执行后的返回值。如果返回值为0,则目录存在;如果返回值为非零的值,则意味着目录不存在:

  
  再使用文件测试语句来判断/etc/fstab是否为一般文件,如果返回值为0,则代表文件存在,且为一般文件:

  
  当有一天,机器控制了全人类,人类完全成了机器的奴隶,我想 shell 就可以被替代了,应该说是不存在了,因为机器自己会直接调用自己的某个功能。那时候,他们会做很多种如何与人类大脑通信的shell ,用来告诉人类某时某刻、用什么行为、完成什么事情、达到什么效果。
  
  当然,就机器控制人类这件事来说,最好的shell 就是人类语言。反过来想,实际上,shell 就是人类告诉机器某时某刻、用什么行为、完成什么事情、达到什么效果,只不过操作系统是以文件做为基本元素构成的。所以, shell 就是要找到所需文件,也就是要用什么行为。
  
  而某时某刻、完成什么事情可以理解为参数,达到的效果就看用户对各种命令的熟悉程度了,因为多个命令(多个具有一定功能的文件)可以灵活的组合使用,如Linux管道符就能实现多个命令组合使用。
  
  本次分享结束,金信润天会不定期的推出各种技术干货欢迎大家一起交流学习!

  
  
  本文作者:Lee Xu
  
  HCIE-R&S、CCIE-R&S
  
  擅长路由交换、安全、无线等技术
  
  湖北省职业院校计算机网络赛项获奖指导老师
  
  主要技术方向Cisco和Huawei
  
  讲授课程:HCIE、CCNA、CCNP、HCNA、HCNP等

原文地址:http://blog.51cto.com/13946595/2168363

时间: 2024-11-07 05:27:58

大神教你一招,如何使用Shell的相关文章

CAD初学者要如何学好CAD?CAD大神教你技巧

CAD初学者如何学好CAD?CAD大神教你技巧.就问你想不想学,现在有一些新的小伙伴们开始加入到CAD行业中的这个大家庭中来,但是他们有一些烦恼,那就是CAD初学者要如何学好CAD呢?那下面想要学好CAD的小伙伴们可要注意了,CAD大神教你如何学好CAD,首先第一步就是要学会对CAD图纸的查看,那下面就和小编一起来看看吧,以下就是具体操作. 第一步:首先,电脑中没有下载CAD看图软件的,在电脑桌面中任意的打开一个浏览器,在浏览器的搜索框中搜索迅捷CAD看图,然后进入官网,根据系统提示的步骤下载安

视频太大怎么办教你一招轻松压缩

观看视频是我们日常生活中打发时间的一种方式,刚刚过去的春节我相信很多小伙伴在路途中都会靠下载的视频来度过漫漫的回家路吧,当然小编也不例外.踏上回家的路之前,就想提前下载电影和一些有意思的视频,无奈手机内存不够,不能下载很多,基于这样的情况,可以把下载好的视频进行压缩,下面来分享一个无损压缩视频的方法,视频太大怎么办教你一招轻松压缩!可以使用迅捷压缩软件1:打开电脑上的视频压缩软件,点击页面中的视频压缩就可以进入对应的操作中.2:添加需要进行压缩的视频,点击添加文件或者添加文件夹的按钮就可以选择需

大神教你如何自助手机贴膜

一.工具: 1.相机清洁套装(含清洁喷剂.清洁布.小毛刷) 2.银行卡(IP卡.密保卡.饭卡等均可) 3.手机贴膜,价格在6-20元之间.太便宜的肯定效果很差,太贵的没必要.(建议用BENKS贴膜,含贴膜.静电除尘贴.手机贴膜.清洁布:第二选择为MOMAX贴膜,无静电除尘贴) 4.如无静电除尘贴,要准备静电除尘胶带. 二.准备工作: 注意:清洁手机最关键,其次是贴膜的位置不能偏,再次才是有无气泡. 1.洗手,洗脸,清洁桌面. 2.手机关机. 3.在不破坏手机贴膜的前提下,仔细对比手机贴膜和屏幕之

大神教你如果学习Python爬虫 如何才能高效地爬取海量数据

Python如何才能高效地爬取海量数据 我们都知道在互联网时代,数据才是最重要的,而且如果把数据用用得好的话,会创造很大的价值空间.但是没有大量的数据,怎么来创建价值呢?如果是自己的业务每天都能产生大量的数据,那么数据量的来源问题就解决啦,但是没有数据怎么办??哈哈哈,靠爬虫来获取呀!!! 通过利用爬虫技术获取规模庞大的互联网数据,然后做市场分析.竞品调研.用户分析.商业决策等. 也许对于小白来说,爬虫是一件非常难且技术门槛高的是,但是如果掌握了正确的方法,在短时间内可以让你应运自如.下面就分享

本大神教你用PHP把文本内容转换成16进制数字,进行加密

<?php $a="杨波"; $b = bin2hex($a); echo $a."<br />"; $c = pack("H*",$b); echo $c."<br />"; ?> 字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字符限制字

大神教你轻松玩转Docker和Kubernetes中如何运行MongoDB微服务

本文介绍了利用Docker和Kubernetes搭建一套具有冗余备份集合的MongoDB服务,从容器对CI和CD引发的改变入手,讨论了容器技术对MongoDB带来的挑战和机会,然后实战如何部署一套稳定的MongoDB服务,非常的干货 介绍 想尝试在笔记本电脑上运行MongoDB么?希望通过执行一个简单的命令,然后就有一个轻量级.自组织的沙盒么?并可再通过一条命令就可以移除所有的痕迹么? 需要在多个环境中运行相同的应用程序栈?创建自己的容器镜像,使得开发.测试.操作和支持团队启动一份完全相同的环境

AI新时代-大神教你使用python+Opencv完成人脸解锁(附源码)

好吧,伙计们,我回来了.说我拖更不写文章的可以过来用你的小拳拳狠命地捶我胸口.... 那么今天我们来讲关于使用python+opencv+face++来实现人脸验证及人脸解锁.代码量同样不多,你可以将这些代码运用在其它一些智能领域,如智能家居,进门的时候判断你是谁,也可以加入机器学习判断来的人是客人还是熟人.在讲之前我们会先适当的拓扑一下关于人脸识别的知识点.OK废话少说下面开始正是话题. 解锁原理: 原理呢,其实很简单,没有那么复杂难懂(当然除了官方语言之外).我们先来通俗的说一下利用Face

大神教你如何将未激活的Win10变回已激活状态

1.右键单击开始按钮,选择命令提示符(管理员);2.在命令指示符窗口中,输入slmgr /upk,回车即会提示成功地卸载了产品密钥;3.操作完成后,Win10系统就变成了未激活状态,之后就使用自己的方式来激活Win10.先找到可用的retail版本密钥,记住,必须是retail版本才能永久激活.以下密钥亲测可用,您可以试试,如果失效或者被用完,可以联系小编vx: jhtd002 获取最新可用密钥.1.win10专业版236TW-X778T-8MV9F-937GT-QVKBB87VT2-FY2XW

大神教你Debian GNU/Linux 9.7 “Stretch” Live和安装镜像开放下载

Debian项目团队于昨天发布了Debian GNU/Linux 9 "Stretch" 的第7个维护版本更新,重点修复了APT软件管理器中存在的安全漏洞.在敦促每位用户尽快升级系统的同时,Debian团队还发布了Debian 9.7的安装和Live镜像.有需求的用户可以通过该发行版本的主页进行下载. Debian GNU/Linux 9.7 "Stretch" 的Live镜像共有KDE, GNOME, Xfce, LXDE, MATE和Cinnamon六个版本,每