美文网首页
Linux 之 Bash -- 认识Bash这个shell

Linux 之 Bash -- 认识Bash这个shell

作者: 熊猫人和熊猫猫 | 来源:发表于2019-04-17 16:34 被阅读0次

如果经常接触“使用Linux的大神们”,听他们的讨论,就应该不会对“shell”陌生,它是我们下达命令的一种方式。想要像大神们一样面对高级的黑屏幕轻松通过shell脚本批量得完成一连串的工作吗?那就来试着学习写shell吧。今天,对于我们初出茅庐的小白,先从bash开始来认识shell。然后过些时日再学习写shell脚本~激动吗?无论如何,猫毛是激动的~

前面我们都有提到,管理计算机硬件的其实是操作系统的核心(kernel),由于它太重要了,倘若被用户轻易修改便会造成系统崩溃,因此核心通常都是被保护的。虽然我们不能随意使用kernel,但总是要让我们操作系统嘛,于是就有了操作系统层面之上发展的 - 应用程序。下面这张图片不知道用了多少次了,还是再放一次吧,有利于理解:


应用程式=应用程序

从图可以看出,应用程序其实是在最外层,就如同鸡蛋的外壳,用户可以通过应用程序来指挥核心,让核心达成我们所需要的硬件任务,如下图,Shell,KDE,application都是应用程序。补充一个附加知识点 -(KDE:K桌面环境的缩写,一种著名的运行于Linux、Unix以及FreeBSD等操作系统上的自由图形桌面环境,整个系统采用的都是 TrollTech公司所开发的Qt程序库)

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

扯了那么多,到底什么是shell(壳程序)?

shell就是一种具有特定功能的应用程序!它有什么特定功能?它的功能就是给用户提供操作系统的接口,同时,可以操作其他各种应用程序来呼叫核心工作。因而,广义上讲,只要能够操作应用程序的接口都能够称为壳程序(shell),其中也包括图形接口的软件(只要该图形接口也能够操作各种应用程序来呼叫核心工作就可以)。
狭义的壳程序是指令列方面的软件(即文字接口的shell),而我们提到更多的也就是这种狭义上的壳程序(壳程序=shell)。还记得Linux基础操作里面学到的一些指令嘛?例如,man,vi等等指令,这些指令其实都是独立的应用程序,而我们可以通过shell来操作这些应用程序,让这些应用程序呼叫核心来运作所需要的工作。
终于要切入正题了,今天要学习的Bash,就是一种文字接口的shell。由于shell依据发展的不同有很多的版本,例如 Bourne SHell(sh)、在Sun里头预设的C Shell等等。

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

就像前面提到的,shell的版本有很多,虽然各家shell的功能都差不多,但是在某些语法的下达方面则有所不同,还是要根据自己的需求一种选择适合自己系统的shell来学习为好,而Linux预设就是使用bash。所以我们这里就要好好认识bash了。
不过,什么是系统合法的shell?
系统合法的shell都是要写入/etc/shells文件的,系统某些服务在运作过程中,会通过读取这份文件来检查使用者能够使用的shells。

设置系统合法的shell干什么用?(附加知识)
举例来说,某些FTP网站会去检查使用者的可用shell,如果不想让某些用户使用FTP以外的主机资源时,可能会给予该使用者一些怪怪的shell,让使用者无法以其他服务登入主机。然后你就要将那些怪怪的shell写到/etc/shells文件当中了。(这里看不懂没关系,不影响后面理解的)

2.Bash shell的功能

2.1 命令编修能力(history)

它能记忆使用过的命令,因此只要在$提示的指令列按“上”“下”键就可以找到前/后一个输入的指令。而且,这么多的指令记录在你的home目录内的.bash_history文件里。如果你有接触Linux的渠道,可以按照下面的指令操作来看一下上一次登陆自己执行的指令:

$ cd   # 回到home目录 $指代命令行
$ vi ~/.bash_history  # 查看home目录下的 .bash_history 文件 $指代命令行

值得注意的是:

  • .bash_history :记录前一次登陆以前所执行过的指令
  • 这一次登陆所执行的指令都暂存在内存中

2.2 命令与文件补全功能(巧用 tab)

  • tab 接在一串指令的 第一个字母 的后面,则为 命令补全
  • tab 接在一串指令的 第二个字母 的后面,则为 文件补齐
  • tab 接在某些指令后面,可以进行 选项/参数的补齐功能(前提:需要安装 bash-completion软件)

2.3 命令别名设定功能(alias)

我们都知道 ls -al 可以知道当前目录底下的所有文件(包含隐藏档)及所有的文件属性,由于这个指令串太长了,每次输入都好麻烦,我们可以使用ll代替嘛?
可以直接在命令行中输入
$ alias ll='ls -al'
以后你就可以直接通过指令“ll”查看当前目录下所有文件及他们的属性了

2.4 工作控制、前景背景控制

这个后面再提,使用工作控制和前、背景的控制可以让工作进行的更为顺利。

2.5 程序化脚本 (shell scripts)

shell scripts可以将你平时管理系统常需要下达的连续指令写成一个文件,该文件并且可以透过对谈交互式的方式来进行主机的侦测工作,同时可以借由shell提供的环境变量及相关指令来进行设计。总之功能强大,后面紧接着就要学习了。

2.6 通配符(Wildcard)

bash支持许多的通配符来帮助用户查询与指令下达,举例:

ls -l /user/bin/X* # 知道/user/bin底下有多少X开头的文件
ls -l /user/bin/ *txt #知道/user/bin底下有多少 txt结尾的文件

3.查询指令是否为 Bash shell 的内建命令:type

$ type [-tpa] name

4.指令的下达与快速编辑按钮

4.1 指令跳脱

\有“指令跳脱”的作用,例如\[Enter]让[Enter]按键不再具有“开始执行”的功能。注意:\仅跳脱“紧接着的下一个字符”而已

4.2 指令快速编辑按钮

快速编辑按钮

当我们顺利的在终端机上面登入后,Linux就会依据/etc/passwd文件的设定给我们一个shell(预设是bash),然后我们就可以依据上面的指令下达方式来操作shell。

相关文章

  • Linux 之 Bash -- 认识Bash这个shell

    如果经常接触“使用Linux的大神们”,听他们的讨论,就应该不会对“shell”陌生,它是我们下达命令的一种方式。...

  • 第11章 认识与学习 bash

    第11章 认识与学习 bash 标签: 鸟哥的linux私房菜 [toc] 11.1认识bash这个shell 什...

  • Linux学习日记——BASH

    一、认识BASH BASH是目前Linux系统应用最多的shell,也是大多数Linux系统默认的shell. s...

  • chapter 3.基本的bash shell命令

    基本的bash shell命令 启动shell 大多数Linux默认的shell都为GNU bash shell/...

  • shell & bash基础命令及巧用

    shell与bash脚本的区别shell是Linux基础命令解释器bash(Bourne Again shell)...

  • Bash

    主要概念 Linux默认的shell是bash Shell bash Shell 可以交互使用,或者作为一种强大的...

  • bash 特性总结

    使用bash能更好的完成linux工作 CentOS 默认shell为bash,echo $SHELL获得当前系统...

  • Shell 的种类

    Linux中默认的Shell是/bin/bash,流行的Shell有ash、bash、ksh、csh、zsh等,不...

  • 认识bash这个shell

    认识bash这个shell 1.硬件 内核和shell 我们必须通过shell将我们输入的命令与内核通信,好让内核...

  • 认识Bash这个Shell

    介绍 shell(壳) 首先要明白shell是用户和计算机打交道的一个入口,用户给shell发命令,shell和内...

网友评论

      本文标题:Linux 之 Bash -- 认识Bash这个shell

      本文链接:https://www.haomeiwen.com/subject/qkaiwqtx.html