热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用户和Linux之间的接口:shell命令

文章标题:用户和Linux之间的接口:shell命令。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  shell是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。

  什么是shell

  Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。

  shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。

  shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。

  有一些命令,比如改变工作目录命令cd,是包含在shell内部的。还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。

  shell 首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给 Linux内核。

  shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。

  当普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。

  一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。shell将执行这些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行)。

  当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符(EOF)(按ctrl+d实现),结束登录。

  我们来实习一下shell是如何工作的。

  $ make work

  make:***No rule to make target ‘work’. Stop.

  $

  注释:make是系统中一个命令的名字,后面跟着命令参数。在接收到这个命令后,shell便执行它。本例中,由于输入的命令参数不正确,系统返回信息后停止该命令的执行。

  在例子中,shell会寻找名为make的程序,并以work为参数执行它。make是一个经常被用来编译大程序的程序,它以参数作为目标来进行编译。在 “make work”中,make编译的目标是work。因为make找不到以work为名字的目标,它便给出错误信息表示运行失败,用户又回到系统提示符下。

  另外,用户键入有关命令行后,如果shell找不到以其中的命令名为名字的程序,就会给出错误信息。例如,如果用户键入:

  $ myprog

  bash:myprog:command not found

  $

  可以看到,用户得到了一个没有找到该命令的错误信息。用户敲错命令后,系统一般会给出这样的错误信息。

 

[1] [2] [3] [4] 下一页


推荐阅读
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文详细介绍如何在树莓派上安装并配置Samba服务,以实现与Windows系统的网络共享兼容性。适合初学者参考。 ... [详细]
  • CGroups: 资源管理和控制
    CGroups(Control Groups)是Linux内核提供的一个功能,旨在限制、记录和隔离进程组使用的物理资源,如CPU、内存和I/O等。它通过精细的资源管理,支持现代容器技术如Docker的资源限制需求。 ... [详细]
  • Unix与Linux的起源与发展
    本文详细探讨了Unix与Linux的操作系统起源,从自由软件运动的兴起,到Linux内核的诞生,全面解析了这两款操作系统的发展历程及其对现代计算技术的影响。 ... [详细]
  • 本文探讨了如何使Shell和程序同时响应Ctrl-C信号的方法,即通过将两者置于同一进程组并将其设为终端的前台进程组。 ... [详细]
  • 当需要利用sed模式筛选并仅打印筛选结果而无需进一步编辑时,可以通过特定命令实现。 ... [详细]
  • 深入理解Linux哲学与命令实践
    本文探讨了Linux系统的核心哲学理念,包括但不限于‘万物皆文件’的原则、小型且专注的程序设计、通过管道链接程序以完成复杂任务等。同时,文章还介绍了如何通过设置环境变量来增强history命令的功能,使其能够记录命令执行的具体时间,以及几个常用的Linux命令及其使用方法。 ... [详细]
  • ###########性能监控脚本###########################!binbash#监控cpu系统负载IPifconfigeth0|grepinetaddr ... [详细]
  • 每位开发者都应该拥有一个展示自我技能与分享知识的空间——个人技术博客。本文将指导你如何使用静态网站生成器Hexo结合GitHub Pages搭建这样一个平台。 ... [详细]
  • 利用Excel VBA调用Linux命令及Bash脚本
    Excel VBA不仅能够处理日常办公任务,还具备调用外部命令行或Bash脚本的能力。本文将介绍如何使用VBA中的Shell函数来执行命令行指令,并通过实际示例展示如何获取计算机网络配置信息。 ... [详细]
  • Linux环境下PostgreSQL的安装、配置及日常管理
    本文详细介绍了在Linux环境下安装、配置PostgreSQL数据库的过程,包括环境准备、安装步骤、配置数据库访问以及日常服务管理等方面的内容。适合初学者和有一定经验的数据库管理员参考。 ... [详细]
  • 本文探讨了管道符在Shell编程中的应用,详细解释了它作为进程间通信工具的功能,以及如何利用管道符实现命令间的高效数据传输。 ... [详细]
  • 四月个人任务:Linux基础操作与网络管理
    本文介绍了两项主要任务:编写一个脚本来检测192.168.1.0/24子网中当前在线的IP地址,以及如何在Linux系统中挂载Windows网络共享目录。通过具体步骤和代码示例,帮助读者理解和掌握相关技能。 ... [详细]
  • 本文详细介绍了如何在Ubuntu操作系统中安装和配置Maven,包括必要的环境准备和验证步骤。 ... [详细]
  • Mac环境下Java与Ant自动化构建环境搭建指南
    本文详细介绍了如何在Mac操作系统上为测试工程师搭建Java和Ant开发环境,包括环境变量配置等关键步骤。 ... [详细]
author-avatar
玩偶0-0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有