`
jimode2013
  • 浏览: 40098 次
社区版块
存档分类
最新评论

第十一章、认识与学习 BASH

 
阅读更多

管理整个计算机硬件的是操作系统的核心 (kernel),这个核心是需要被保护的! 所以一般使用者就只能透过 shell 来跟核心沟通,以让核心完成我们的工作。

 


硬件、核心与 Shell

计算机播放声音:

  1. 硬件:『声卡芯片』;
  2. 核心管理:操作系统的核心可以支持这个芯片组,提供芯片的驱动程序;
  3. 应用程序:需要使用者输入发生声音的命令!

 

硬件、核心与用户的相关性图标
图 1.1.1、硬件、核心与用户的相关性图示

shell只是提供给用户操作操作系统的一个接口,因此sell其实就是软件。命令,包括 man, chmod, chown, vi, fdisk, mkfs都是独立的应用程序, 但是我们可以透过壳程序 (就是命令列模式) 来操作这些应用程序,让这些应用程序呼叫核心来运行所需的工作!

Tips:
只要是提供给用户操作操作系统的应用程序都称为壳程序。狭义的壳程序指的是命令行方面的软件,包括 bash 等。 广义的壳程序则包括图形接口的软件!因为图形接口也能够操作各种应用程序来呼叫核心工作! 
 

为何要学文字接口的 shell?

 


  • 文字接口的 shell:大家都一样!

  • 远程管理:文字接口就是比较快!

较不容易出现断线或者是信息外流的问题


  • Linux 的任督二脉: shell 是也!

系统的合法 shell 与 /etc/shells 功能

 Linux 使用『 Bourne Again SHell (简称 bash) 』,这个 Shell 是 Bourne Shell 的增强版本,也是基于 GNU 的架构下发展出来的!

第一个流行的 shell 是由 Steven Bourne 发展出来的,为了纪念他所以就称为 Bourne shell ,或直接简称为 sh !而后来另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计依附于 BSD 版的 Unix 系统中的 shell ,这个 shell 的语法有点类似 C 语言,所以才得名为 C shell ,简称为 csh !由于在学术界 Sun 主机势力相当的庞大,而 Sun 主要是 BSD 的分支之一,所以 C shell 也是另一个很重要而且流传很广的 shell 之一 。

   

 /etc/shells:

  • /bin/sh (已经被 /bin/bash 所取代)
  • /bin/bash (就是 Linux 默认的 shell)
  • /bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash)
  • /bin/tcsh (整合 C Shell ,提供更多的功能)
  • /bin/csh (已经被 /bin/tcsh 所取代)
  • /bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)

为什么我们系统上合法的 shell 要写入 /etc/shells 这个文件? 这是因为系统某些服务在运行过程中,会去检查使用者能够使用的 shells !

举例来说,某些 FTP 网站会去检查使用者的可用 shell ,而如果你不想要让这些使用者使用 FTP 以外的主机资源时,可能会给予该使用者一些特殊的 shell,让使用者无法以其他服务登陆主机。 这个时候,你就得将那些特殊的 shell 写到 /etc/shells 当中了。举例来说,我们的 CentOS 5.x 的 /etc/shells 里头就有个 特殊的shell /sbin/nologin

登陆后取得的 shell配置在 /etc/passwd 这个文件内!

[root@www ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
.....(底下省略).....

如上所示,在每一行的最后一个数据,就是你登陆后可以取得的默认的 shell!


Bash shell 的功能

bash 主要的优点:


  • 命令编修能力 (history):

只要在命令行按『上下键』就可以找到前/后一个输入的命令!在很多 distribution 里头,默认的命令记忆功能可以到达 1000 个!这么多的命令记录在你家目录内的 .bash_history! 不过,需要留意的是,~/.bash_history 记录的是前一次登陆以前所运行过的命令, 而至于这一次登陆所运行的命令都被缓存在内存中,当你成功的注销系统后,该命令记忆才会记录到 .bash_history 当中




  • 命令与文件补全功能: ([tab] 按键的好处)
  • [Tab] 接在一串命令的第一个字的后面,则为命令补全;
  • [Tab] 接在一串命令的第二个字以后时,则为『文件补齐』!

  • 命令别名配置功能: (alias)

在命令行输入 alias 就可以知道目前的命令别名有哪些了!也可以直接下达命令来配置别名:

alias lm='ls -al'


  • 工作控制、前景背景控制: (job control, foreground, background)

  • 程序化脚本: (shell scripts)

  • 通配符: (Wildcard)

除了完整的字符串之外, bash 还支持许多的通配符来帮助用户查询与命令下达。 例如『 ls -l /usr/bin/X* 』


Bash shell 的内建命令: type

 

 为了方便 shell 的操作,bash 已经『内建』了很多命令了,例如 cd ,umask !

 

[root@www ~]# type [-tpa] name
选项与参数:
    :不加任何选项与参数时,type 会显示出 name 是外部命令还是 bash 内建命令
-t  :当加入 -t 参数时,type 会将 name 以底下这些字眼显示出他的意义:
      file    :表示为外部命令;
      alias   :表示该命令为命令别名所配置的名称;
      builtin :表示该命令为 bash 内建的命令功能;
-p  :如果后面接的 name 为外部命令时,才会显示完整文件名;
-a  :会由 PATH 变量定义的路径中,将所有含 name 的命令都列出来,包含 alias

范例一:查询一下 ls 这个命令是否为 bash 内建?
[root@www ~]# type ls
ls is aliased to `ls --color=tty' <==未加任何参数,列出 ls 的最主要使用情况
[root@www ~]# type -t ls
alias                             <==仅列出 ls 运行时的依据
[root@www ~]# type -a ls
ls is aliased to `ls --color=tty' <==最先使用 aliase
ls is /bin/ls                     <==还有找到外部命令在 /bin/ls

范例二:那么 cd ?
[root@www ~]# type cd
cd is a shell builtin             <==看到了吗? cd 是 shell 内建命令

type 主要在找出『运行档』而不是一般文件档名!

命令的下达

 

范例:如果命令串太长的话,如何使用两行来输出?
[vbird@www ~]# cp /var/spool/mail/root /etc/crontab \
> /etc/fstab /root

当我们顺利地在终端机 (tty) 上面登陆后, Linux 就会依据 /etc/passwd 文件的配置给我们一个 shell (默认是 bash),然后我们就可以依据上面的命令下达方式来操作 shell, 


 

分享到:
评论

相关推荐

    鸟哥的 Linux 私房菜第11章-认识与学习 BASH1

    【认识 BASH 这个 Shell】 BASH,全称Bourne-Again SHell,是Linux系统中最常用的Shell之一,尤其对于初学者来说是必须掌握的基础工具。它是一种命令解释器,允许用户通过文本界面与操作系统内核进行交互,执行各种...

    Linux操作系统学习

    第0章 计算机概论 第1章 Linux是什么 第2章 Linux 如何学习 第3章 主机规划与磁盘分区 第4章 安装Centos5.x 与多重引导...第11章 认识与学习BASH 第12章 正规表示法与文件格式化处理 第13章 学习Shell Scripts ........

    学习 bash 第二版(英文版).chm

    《学习 bash 第二版(英文版)》.chm,作者:Cameron Newbam & Bill Rosenblatt。...第十一章:用户系统 bash。 附录一:相关 shell。 附录二:参考列表。 附录三:可载入命令。 附录四:语法。 附录五:获得示例程序。

    鸟哥的私房菜.pdf

    第11章 认识与学习bash 第12章 正则表达式与文件格式化处理 第13章 学习shell script 第四部分 Linux使用者管理 第14章 Linux账号管理与ACL权限设置 第15章 磁盘配额(Quota)与高级文件系统管理 第16章 例行性...

    认识与学习 BASH,Shell 的变量功能

    【标题】:“认识与学习 BASH,Shell 的变量功能” 【描述】:“影响 bash 环境操作的变量[root@www ~]# echo $variable[root@www ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/...

    学习Bash(第二版)中文版.pdf

    然而,由于标题明确指出了文档内容是关于学习Bash(第二版)中文版,我们可以根据这方面的知识进行扩展。 Bash是Bourne Again SHell的缩写,它是基于Unix操作系统的流行命令行界面。Bash作为免费和开源的软件,已经...

    学习 bash (第二版)中文版

    《学习Bash(第二版)中文版》这本书深入浅出地介绍了如何有效地利用Bash进行系统管理、自动化任务执行以及编写复杂脚本。 **1. Bash基础知识** Bash提供了丰富的命令行交互功能,包括基本的文件操作(如创建、...

    学习bash(第二版本)

    《学习 bash 第二版》,作者:Cameron Newbam & Bill Rosenblatt。 本书教授了如何使用bash的高级命令行特性,如命令历史、命令行编辑和命令完成。

    学习Bash(第二版)

    O'Relly 出版的Bash书,非常不错。

    bash入门学习实例

    **Bash 入门学习实例** Bash,全称是“Bourne-Again SHell”,是Unix和类Unix系统中最常用的命令行解释器。它不仅是一个交互式shell,还是脚本编程语言,广泛用于Linux和macOS系统。这篇教程将通过一系列实例,帮助...

    学习 bash.pdf

    bash非常好的教程,自学很棒

    bash官方手册/Bash Reference Manual

    第一章节是介绍,讲解什么是 Bash 和 shell,以及基本概念定义。第二章节是基本 shell 特性,涵盖了 shell 语法、shell 操作、变量、命令、函数等。 在基本 shell 特性章节中,讲解了 shell 语法,包括 shell 操作...

    学习bash(第三版)_英文版

    总之,《学习Bash》这本书是一部全面而详尽的Bash指南,不仅适合新手入门,也适用于高级用户进一步探索Bash的强大功能。通过本书的学习,读者能够熟练掌握Bash的各种特性和编程技术,从而提高日常工作的效率。

    Bash shell 学习笔记

    ### Bash Shell 学习笔记知识点概览 #### 1. 引言 - **Shell**:作为用户与操作系统之间的桥梁,Shell提供了一种与系统进行交互的方式,支持用户执行命令和编写脚本来自动化任务。 - **Bash**:是Bourne-Again ...

    学习bash(第二版中文)

    本书详细介绍了bash的安装配置使用及编程,还介绍了shell编程

    Bash参考手册.pdf

    Bash参考手册.pdf是Bash shell的官方参考手册,涵盖了Bash shell的所有方面,包括基本语法、变量、命令、函数、文件处理、...通过学习Bash参考手册.pdf,用户可以深入了解Bash shell的所有方面,从基本语法到高级特性。

    学习 bash (第二版)中文版.pdf

    学习 bash (第二版)中文版.pdf O'Reily经典教材

    学习bash 中文第二版

    第二版还加入了一些新命令,增强了安全性,也加入了readline,增强了配置和安装过程,并且增加了附助编程的bash shell调试器。 经过不懈的实践和对实例及问题进行深入的研究后,你会发现《学习bash》对Linux和其他...

    高级BASH脚本学习

    高级BASH脚本学习是一项技能,对于掌握Linux系统和进行自动化操作至关重要。BASH(Bourne Again SHell)是UNIX和Linux系统中最流行的shell之一,几乎所有Linux发行版和大部分UNIX系统都支持BASH。由于其强大的功能和...

    bash高级编程 advanced bash script

    **Bash高级编程详解** Bash(Bourne-Again SHell)是Unix/Linux系统中最常用的命令行解释器,也是脚本编程的强大工具...因此,无论你是初学者还是经验丰富的开发者,深入学习Bash都是一个值得投入的时间和精力的投资。

Global site tag (gtag.js) - Google Analytics