精华内容
下载资源
问答
  • 在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。 它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。 Shell 是一个用 C...

    在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。

    它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

    Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

    Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

    Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

    第一个shell程序

    编写:

    vi first_shell.sh

    内容:

    #!/bin/bash
    
    echo "hello shell"

    运行:

    sh first_shell.sh

     结果:

    两种运行方式:

    • 1.作为可执行程序
    chmod +x ./XXX.sh  #使脚本具有执行权限
    ./XXX.sh  #执行脚本
    • 2.作为解释器参数
    sh XXX.sh

     

    参考:

    https://www.runoob.com/linux/linux-shell.html

    https://baike.baidu.com/item/shell/99702?fr=aladdin

    展开全文
  • 什么是shell?简单来说,shell是一个执行命令的宏处理(macro processor)器。术语宏处理器(macro processor)是指将文本和符号扩展到创建更大的表达式的功能。在linux系统中shell介于Linux内核与终端用户之间,让用户...

    什么是shell?

    简单来说,shell是一个执行命令的宏处理(macro processor)器。

    术语宏处理器(macro processor)是指将文本和符号扩展到创建更大的表达式的功能。

    在linux系统中shell介于Linux内核与终端用户之间,让用户通过可以shell来操作内核。

    Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

    Unix shell可以作为解释器(interpreter)和编程语言使用。

    当作为命令解释器使用时。shell为用户接口提供了丰富的GNU命令集,如 cd dir ls find ...等实用的命令。

    当作为编程语言时。shell特性允许将多个命令组合在一起,可以创建包含命令的文件,并成为命令本身。

    这些新命令在诸如“/bin”的目录中具有与系统命令相同的状态,允许用户或组建立自定义环境来自动化它们的常见任务。

    Shell可以在交互式模式或非交互式模式下使用。

    交互式: 执行命令从键盘键入

    非交互试:执行从文件读取到命令

    shell允许以同步和异步方式执行GNU命令。在接受更多输入之前,shell将等待同步命令完成;异步命令在读取和执行其他命令时,继续与shell并行执行。“重定向”构造允许对这些命令的输入和输出进行细粒度控制。此外,shell允许对命令环境的内容进行控制。

    shell还提供了一组内置命令(“builtins”),实现功能不可能或不方便通过单独的实用程序获得。例如,“cd”、“break”、“continue”和“exec”都不能在shell之外实现,因为它们直接操纵shell本身。“history”、“getopts”、“kill”或“pwd”的内置程序可以在不同的实用程序中实现,但它们更便于作为构建命令使用。后面的部分将描述所有的shell构建。

    与其他编程语言相同,shell也提供了变量,流程控制,引用,函数。

    shell中的常见名词

    定义

    解释

    POSIX

    一个基于Unix的开放系统标准系列。Bash主要关注POSIX 1003.1标准的外壳和实用程序部分。

    blank

    一个空格或者制表符

    builtin

    由shell本身在内部实现的命令,而不是文件系统中的某个可执行程序。

    control operator

    流程控制语句,执行控制功能的“令牌”。

    exit status

    命令返回给它的调用者的值。该值限制为8位,因此最大值为255。

    field

    一个文本单元,它是一个shell扩展的结果。扩展后,当执行一个命令时,结果字段被用作命令名和参数。

    filename

    用于标识文件的字符串

    job

    由管道组成的一组过程,以及由它派生的任何进程,它们都在同一个进程组中。

    job control

    用户可以有选择地停止(暂停)并重启(恢复)进程的机制。

    metacharacter

    当未被引用时,一个字符将单词分开。元字符是一个“空白”或下列字符之一。'\', '&', ';','(', ')', ''.

    name

    由字母、数字和下划线组成的“单词”,以字母或下划线开头。名称被用作shell变量和函数名。也称为“标识符”。

    operator

    “控制操作符”或“重定向操作符”。对于重定向操作符的列表。运算符包含至少一个未被引用的“元字符”。

    process group

    每个具有相同进程组ID的相关进程的集合。

    process group ID

    在其生命周期中表示“进程组”的唯一标识符。

    reserved word

    一个对shell有特殊意义的词。大多数保留字引入了shell流控制结构,例如“for”和“while”。

    return status

    “退出状态”的同义词。

    signal

    一种机制,通过该机制可以通过系统中发生的事件的内核来通知进程。

    special builtin

    一个被POSIX标准分类为特殊的shell内置命令。

    token

    由shell层考虑单个单元的一系列字符。它要么是一个“单词”,要么是一个“运算符”。

    word

    由shell作为单元处理的一系列字符。词汇可能不包括未引用的“元字符”。

    展开全文
  • Linux系统的Shell编程

    2021-11-16 17:56:50
    在学习Shell编程之前,我们应该要先知道什么是Shell 用户、Shell、Linux内核、硬件的关系如下图: Shell是一个应用程序,也可以说是一个命令解释器,它是用户和Linux内核之间的桥梁,可以将用户在图形界面上的...

    一. 什么是Shell

            1. 在学习Shell编程之前,我们应该要先知道什么是Shell

            用户、Shell、Linux内核、硬件的关系如下图:

            Shell是一个应用程序,也可以说是一个命令解释器,它是用户和Linux内核之间的桥梁,可以将用户在图形界面上的操作或在终端输入的命令传递给Linux内核,然后Linux内核再调度各个硬件及其他资源来完成用户的操作。

            什么是Linux的内核?在Linux操作系统中,真正能够操作计算机硬件完成某个用户功能的那一部分被称为Linux系统的内核。用户在使用Linux系统时,是不可以直接操作内核的,而是通过Shell来间接的操作内核的。Shell不属于内核的一部分,而是在Linux内核之外开发的应用程序,它将接收到的用户鼠标点击操作或输入的命令传递给内核,而内核再去调度硬件去完成指定的操作。这样用户就不需要直接操作内核,而是通过Shell间接地操作内核,内核也不会被直接的暴露于外部,保障了内核的安全性,也简化了用户的操作。

            Shell这个应用程序是开机即启动的,我们在操作Linux系统时,无时不刻都在直接或者间接地通过Shell去操作Linux内核。其实,在没有图形化界面之前,用户是通过终端或者控制台直接地去调用Shell这个应用程序,然后通过输入命令来操作Linux系统的。用户在控制台或者终端上看到的 $ 和 # 其实就是Shell的命令提示符,这表明用户已经进入了Shell这个程序,只需要输入命令,即可通过Shell来操作Linux内核。只不过root用户登录显示$,而普通用户登录显示#。

            另外,Shell在将用户的操作传递给内核的过程,就是在调用内核提供的API接口的过程。比如,用户在图形界面或者终端命令行做了一个打开文件的操作,而这个用户的操作Shell接收到后,就会去调用内核提供的相应的函数,然后内核再去调度硬件资源来完成用户的操作。

            2. 常见的Shell

            我们知道,Linux 是一个开源的操作系统,它是由世界各地的多个组织机构或个人共同开发完成的,每个组织机构或个人负责一部分功能,最后组合在一起,就构成了现在我们使用的 Linux。也正是这个原因,这些不同的组织机构或者个人都会开发出可以在Linux系统中使用的应用程序,而这些应用程序的功能可能是类似的,各有优缺点,至于使用哪一个由用户选择。而Shell就是这样的一个应用程序,所以Shell有很多个版本,目前Linux的大多数发行版默认使用的Shell是 bash shell。其他常见的Shell版本如下:

            (1) sh:sh 的全称是 Bourne shell,是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。

            (2) csh:这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。

            (3) tcsh:tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。

            (4) ash:一个轻量级占用资源少的 Shell,适合运行于低内存环境,与 bash shell 完全兼容。

            (5) bash:bash shell 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。

            3. 查看Linux系统的Shell

           在Linux系统中,一般默认使用的Shell是bash shell。Shell是一个应用程序,一般都是放在/bin或者/user/bin目录下,而当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。

    (1) 查看系统当前可用的Shell,执行命令【cat -n /etc/shells】:

    (2) 查看系统当前默认使用的shell,执行命令【echo $SHELL】:

     

    (3) 查看各个用户使用的Shell,执行命令【cat -n /etc/passwd】:

    二. 什么是Shell编程

            1. 什么是Shell编程语言

            我们已经知道,Shell是一个应用程序,而这个应用程序不单单只是可以将用户的操作命令传递给Linux内核,它也支持编程。Shell都会对应一套编程语言的语法,而这套语言就被称为Shell编程语言或是Shell脚本语言。Shell编程语言和JavaScript语言一样是一种脚本语言,它不需要编译,而它的解释器就是Shell应用程序本身。

            我们平时工作中所说的Shell,大多数情况指的是Shell脚本语言,而不是Shell应用程序。

            2. 什么是Shell脚本 

            我们在使用Shell脚本语言时,可以和Linux系统的其他操作命令结合使用(如 ls、grep等等),而我们使用Shell脚本语言和其他命令结合编写能够完成某个特定功能的扩展名为.sh的文本,就叫做Shell脚本程序。

            3. 第一个Shell脚本

            我们已经知道,Shell有很多个版本,而每个版本支持的Shell脚本语言语法可能是有差异的,而下面的关于Shell脚本的所有例子都是针对于Bash Shell这个版本而言。

    (1)在根目录下新建一个Hello.sh脚本:【vim Hello.sh】

    (2)然后输入以下内容:

    #!/bin/bash     
    echo "Hello World "

            第一行:#! 是一个约定标记,它可以告诉系统这个脚本要使用哪个Shell版本作为解释器,后面紧跟的/bin/bash则是Shell的所在路径,所以【#!/bin/bash 】表示声明使用bin目录下的 bash shell 作为这个脚本的解释器;

            第二行:【echo "Hello World "】表示输出文本 Hello World !;

    (3)然后保存退出:【!wq】;

    (4)这样,一个能够输出 Hello World !的脚本就编写完成。

    补充说明:

           上面我们已经说过,Shell程序就是Shell脚本语言的解释器,而我们在使用终端时(例如通过Xshell连接Linux服务器的终端),其实就是已经进入了Shell这个程序,所以其实我们是可以在终端直接输入Shell编程语言的代码来运行的,而不需要写在脚本里再去运行。例如,声明一个变量并打印这个变量的值:

            (1)输入代码:【name=张三】,表示定义了一个变量name,它的值为张三;

            (2)输入代码:【echo $name】,表示打印变量name的值。

            当然,这种方式只适合去执行逻辑简单只有一两句代码的情况,大多数情况下我们还是将Shell编程代码写在.sh脚本中再去执行。

             4. 运行Shell脚本的方式

            上面我们已经编写了一个能够输出 Hello World !的Shell脚本运行,而现在我们就要执行 Hello.sh 这个脚本。而Shell脚本的执行方式有两种:

             第一种:给予.sh文本可执行权限,然后执行文本:

            (1)先给予Shell脚本可执行权限:【chmod +x Hello.sh】;

            (2)直接执行:绝对路径:【/Hello.sh】 或者   相对路径:【./Hello.sh】

                    注意,这里执行时如果使用的是相对路径,必须要以./开头,表示当前目录,否则系统会找不到脚本,从而导致执行失败。

             第二种:将 Shell 脚本作为参数传递给 Bash Shell 解释器:

            (1)这里使用Bash Shell来作为解释器,那么我们直接调用Bash Shell 这个程序,然后把Hello.sh这个脚本作为参数传给Shell即可:【/bin/bash Hello.sh】或 【bash Hello.sh】

            (2)这里需要注意,使用这种方式执行Shell脚本时,在Shell脚本的第一行中就不需要声明使用哪个版本的Shell来作为解释器,也就是不需要这行代码【#!/bin/bash】,因为我们运行脚本的命令中【/bin/bash Hello.sh】,就已经指明了使用哪个版本的Shell作为解释器。

                    注意,这种方式执行脚本文件时,如果使用的是相对路径,那么【/bin/bash ./Hello.sh】和【/bin/bash Hello.sh】是一样的,并无使用第一种执行方式中的区别。

    展开全文
  • ln这是linux中一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。当我们需要在不同的目录,用到相同的文件时,我们不需要...

    ln

    这是linux中一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这

    个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。

    当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例

    如:ln -s /bin/less /usr/local/bin/less

    -s 是代号(symbolic)的意思。

    这里有两点要注意:

    第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;

    第二,ln的链接又软链接和硬链接两种,软链接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

    第三,软链接是可以跨分区的,但是硬链接只能在同一分区内。

    如果你用ls察看一个目录时,发现有的文件或文件夹的颜色和别的不一样,我机子上是蓝色的,那就是一个用ln命令生成的文件,用ls -l命令去察看,就可以看到显示的link的路径了。

    如果用rsync命令,你必须手动执行rsync命令才能同步,不能做到及时更新

    取消

    评论

    展开全文
  • 什么要有shell编程

    2021-05-17 12:46:10
    第一部分 热身++++++++++++++++shell是一个命令解释器.是介于操作系统kernel与用户之间的一个绝缘层.准确地说,它也是一一种强力的计算机语言.一个shell程序,被称为一个脚本,是一种很容易使用的工具,它可以通过将系统...
  • shell 编程能干什么

    2021-05-12 13:34:30
    该楼层疑似违规已被系统折叠隐藏此楼查看此楼#/*************************************************************************# > File Name: compile-arm-gcc.sh# > Author: Angel Criss# >...
  • Shell编程之变量

    2021-03-08 21:10:15
    本文主要对Shell中的变量进行简单总结,另外本文所使用的Linux环境为CentOS Linux release 8.1.1911,所使用的Shell为bash 4.4.19(1)-release。
  • 什么是Shell脚本示例看个例子吧:!/bin/shcd ~mkdir shell_tutcd shell_tutfor ((i=0; i<10; i++)); dotouch test_$i.txtdone示例解释第1行:指定脚本解释器,这里是用/bin/sh做解释器的第2行:切换到当前用户的...
  • 以下是由77cn范文大全为大家整理的linux编程SHELL编程实验报告的相关范文,本文关键词为linux,编程,SHELL,实验,报告,Linux,编程,,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您...
  • Shell编程Shell概述.PDF

    2021-05-16 10:24:11
    Shell编程Shell概述.PDFShell 编程Shell 概述Shell 概念最初是在Unix操作系统中形成和得到广泛应用的。Unix Shell有很多种类,Linux系统继承了Unix系统中Shell的全部功能,现在默认使用的是bash 。1 Shell 的特点...
  • Linux之Shell编程详解

    2021-08-13 09:03:49
    1. 为什么要学习shell编程 1)Linux运维工程师:编写Shell程序进行服务集群管理。 2)Python和JavaEE程序员:编写Shell脚本程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。大3)数据程序员:编写Shell...
  • shell编程之let命令

    2021-04-08 16:20:38
    let是用来计算的工具,用于执行一个或者多个表达式,且语句中不需要加$来访问一个变量. 就像C中定义了数值,然后进行加减乘除操作. a=0 let a+=100 let a++ let a-- let a=1+1 echo $a
  • 初识shell编程

    2021-01-03 21:50:12
    本文主要内容是shell编程涉及到的一些入门知识,例如shell编程的定义及其语言特性,shell变量的相关知识,尤其是按照作用范围的分类,以及shell脚本的入门知识等
  • for 循环 基本语法 1 (输入具体的值) for 变量 in 值1 值2 值3 ... do 程序/代码 done 应用实例 testFor1.sh ...案例 1 :打印命令行输入的参数 【这里可以看出$* 和 $@ 的区别】 ...$*:表示把输入的参数当做一个...
  • 1简介创建shell脚本的步骤第一行脚本的第一行位于左上角,以#!开头,将指明用哪个程序来执行脚本。这一行通常写作:#!/bin/csh 或 #!/bin/tcsh这一行必须在脚本的最顶端,否则会被当做注释行。启动脚本时,Cshell(TC...
  • 《LINUX-Shell编程实验报告》由会员分享,可在线阅读,更多相关《LINUX-Shell编程实验报告(6页珍藏版)》请在人人文库网上搜索。1、LINUX-Shell编程实验报告LINUX管理与应用课程实验报告一、实验过程1. 编写一个简单...
  • 按照Shell编程的惯例,以 bash为例,程序的第一行一般为“#!/bin/bash”,其中 # 表示该行是注释,叹号 !告诉Shell运行叹号之后的命令并用文档的其余部分作为输入,也就是运行/bin/bash并让/bin/bash去执行Shell...
  • shell编程之整数比较

    2021-05-08 22:59:59
    整数比较
  • linux课程设计-shell编程.doc还剩18页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,很抱歉,此页已超出免费预览范围啦!如果喜欢就下载吧,价低环保!内容要点:fidone4.passwd 文件root:x:0:0:root:/root...
  • SHELL编程命令大全

    2021-04-14 10:06:46
    什么是函数? 2. 如何定义函数? 3. 函数如何调用? ㈠ 当前终端调用 ㈡ 定义到用户的环境变量中 ㈢ 脚本中调用 4. 应用案例 (1)收集用户输入输入信息 (2)跳板机安全策略 a. 任务背景 b. 具体要求 c. 综合分析 ...
  • Shell编程就是对一组Linux命令的逻辑化处理,Shell 是将内核、程序和用户连接了起来 1 第一个shell程序 #!/bin/bash #第一个shell小程序 echo hello world! 第一行表示我们选择使用bash shell。 shell中#符号...
  • 1,输入n,输出n的阶乘。 #!bin/bash read -p "请输入一个正整数n:" n ans=1 for (( i=$n; i>1; i-- )) do ans=$[ans*i]; done echo $ans 2,输入n,输出n是否是素数。 #bin/bash read -p "请输入一个正... then
  • shell编程之echo命令

    2021-02-16 12:40:23
    shell的echo命令是用于字符串的输出, 格式为:echo string 1.显示普通字符串 echo "It is test" 结果为: It is a test 2.显示转义字符串 echo "\"It is a test\"" 结果为: "It is a test" 3.显示变量 #!/bin/...
  • shell编程之函数(详细介绍) 目录一、shell函数的作用二、shell函数的格式1、shell函数定义2、函数返回值三、函数的传参四、函数变量的作用范围五、递归1、阶乘2、递归目录六、函数库 一、shell函数的作用 将命令...
  • 以whois包中的mkpasswd的源码mkpasswd.c文件为例,两者都需要做的事情:(1)在程序运行前需要满足其运行环境,包括声明需要使用哪些库哪些文件,例如C中的条件编译,Shell编程中的部分条件判断,如文件是否存在、是否...
  • ShellScript,Shell脚本与Windows/Dos下的批处理类似,也便是用各类指令预先放入到一个文件中,便利一次性执行的一个程序文件,主要是便利办理员...shell编程100例1、编写helloworld脚本#!/bin/bash#编写helloworld...
  • shell 编程-Expect

    千次阅读 2021-01-12 00:49:34
    原标题:shell 编程-ExpectNo.1 expect的安装[root@qfedu ~] yum -y install expectNo.2 expect的语法-------通过expect可以实现将交互式的命令变为非交互式执行,不需要人为干预(手动输入)是一个免费的编程工具, ...
  • Linux shell编程

    2021-03-01 22:06:43
    1、为什么要学习Shell编程 2、Shell是什么 3、shell 编程快速入门-Shell 脚本的执行方式 4、shell变量 5、设置环境变量 6、位置参数变量 7、预定义变量 8、运算符 9、条件判断 10、流程控制 11、read读取...
  • 一、SHELL简介①什么是SHELL答:一个作为用户与LINUX系统之间的操作接口程序,允许用户向操作系统输入需要执行的命令。一种高级、解释性的程序语言。 ②SHELL的种类 ③SHELL的执行. *.sh④命令别名功能设置别名:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 371,524
精华内容 148,609
关键字:

shell编程是什么