管理整个计算机硬件的是操作系统的核心 (kernel),这个核心是需要被保护的! 所以一般使用者就只能透过 shell 来跟核心沟通,以让核心完成我们的工作。
硬件、核心与 Shell
让计算机播放声音:
- 硬件:『声卡芯片』;
- 核心管理:操作系统的核心可以支持这个芯片组,提供芯片的驱动程序;
- 应用程序:需要使用者输入发生声音的命令!
图 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,
相关推荐
【认识 BASH 这个 Shell】 BASH,全称Bourne-Again SHell,是Linux系统中最常用的Shell之一,尤其对于初学者来说是必须掌握的基础工具。它是一种命令解释器,允许用户通过文本界面与操作系统内核进行交互,执行各种...
第0章 计算机概论 第1章 Linux是什么 第2章 Linux 如何学习 第3章 主机规划与磁盘分区 第4章 安装Centos5.x 与多重引导...第11章 认识与学习BASH 第12章 正规表示法与文件格式化处理 第13章 学习Shell Scripts ........
第11章 认识与学习bash 第12章 正则表达式与文件格式化处理 第13章 学习shell script 第四部分 Linux使用者管理 第14章 Linux账号管理与ACL权限设置 第15章 磁盘配额(Quota)与高级文件系统管理 第16章 例行性...
第11章 认识Bash Shell 第12章 正则表达式 第13章 学习Shell脚本 第四部分 Linux用户管理 第14章 Linux账号与身份管理 第15章 Linux磁盘配额 第16章 例行性命令的建立 第17章 ...
教程名称:老段带你学鸟哥Linux(第三版)视频教程课程目录:【】第10章:vim程序编辑器【】第11章:认识与学习bash【】第12章:正则表达式与文件格式化处理【】第13章:学习shell script【】第14章:Linux...
"第11课认识和学习bash.pptx"将介绍Bash shell,它是Linux中最常用的命令解释器。Bash提供了强大的脚本编写能力,通过学习Bash,用户可以编写自动化任务,提高工作效率。 "第14课Shell编程.pptx"则进一步深入到...
第十一章“Shell重定向”讲解了如何改变程序的标准输入、输出和错误输出,使得数据可以被重定向到文件、管道或其他进程。这是实现数据流程控制的关键,也是Shell强大之处的体现。 第十二章“管道和过滤器”则涉及...
第11章可能是高级主题,如进程调度、内存管理和设备驱动。这部分内容对于系统管理员和开发者来说非常重要,因为它涉及到如何优化系统性能和处理硬件资源。 每个章节都通过PDF文档的形式提供,这使得你可以方便地...
"Linux命令第一部分"可能是对Linux常用命令的详细讲解,包括它们的功能、语法和实际应用场景,这对于熟悉Linux操作至关重要。 "linux.gif"可能是对Linux桌面环境的图形展示,帮助初学者直观地了解Linux的工作界面。...