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

第十一章、认识与学习 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操作系统学习

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

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

    介绍的bash等。广义的壳程序则包括图形接口的软件!因为图形接口其实也能够操作各种应用程序来呼叫核心工作啊!不过在本章中,我们主要还是在使用 bash 啦!为何

    学习 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学习手册bash学习手册bash学习手册

    bash 入门经典 不可不看哦 bash 入门经典 不可不看哦 bash 入门经典 不可不看哦

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

    影响 bash 环境操作的变量 [root@www ~]# echo $variable [root@www ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@www ~]# echo ${PATH}

    bash入门学习实例

    bash入门学习实例

    学习bash(第二版本)

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

    学习Bash(第二版)

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

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

     本书还介绍了shell编程,一种UNIX或Linux用户不可或缺的技巧,阐述了如何使用bash的编程特性完成各种功能。读者还将学习流程控制、信号处理以及命令行处理和I/O方面的内容以及如何调试bash程序。

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

    学习Bash(第二版)中文版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!

    学习 bash.pdf

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

    Bash shell 学习笔记

    Bash shell 学习笔记

    学习bash(第二版中文)

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

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

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

    学习bash 中文第二版

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

    学习 bash (第二版)中文版

    很好的一本学习bash的书籍,而且是中文的

    学习git和gitbash使用的一些详细操作

    学习git和gitbash使用的一些详细操作,学习git和gitbash使用的一些详细操作

    Bash_shell学习笔记

    Bash_shell学习笔记

    鸟哥的Linux私房菜基础学习篇(第二版PDF)02

     第11章 认识Bash Shell   第12章 正则表达式   第13章 学习Shell脚本  第四部分 Linux用户管理  第14章 Linux账号与身份管理   第15章 Linux磁盘配额   第16章 例行性命令的建立   第17章 ...

Global site tag (gtag.js) - Google Analytics