小白学超算之Linux基础(2)

接下来,我们继续学习bash shell的概念与其基本功能。在此,也默认虚拟机等必要环境都已配备完毕,接下来我将以VMware虚拟机环境下的CentOS 7系统为例,并搭配MobaXterm远程计算工具箱进行学习。本博客的参考资料为鸟哥的《Linux私房菜:基础版》以及黑马程序员的Linux课程笔记(主要用于基本命令的查阅)。

Bash Shell的基本功能

shell简介

想要了解bash shell,我们首先要清楚,到底什么是shell。

在Google翻译下,,我们发现shell原本的意思主要为“壳、贝壳、外壳”等与“壳”相关的意思,那在操作系统中,shell又是什么意思呢?想要解决这个问题,我们需要先明确通过操作系统实现功能所需要的必要因素。

  1.  硬件(hardware):即输出设备,如显卡、声卡等看得见摸得着的实体,实际上为芯片组。
  2. 核心管理(kernel):即支持芯片组的核心,实际上为芯片相应的驱动程序。
  3. 应用程序(application):即输入/控制指令,用户正是通过直接使用应用程序去实现各种功能。

 以上便是实现一个功能,由内而外的功能需求,而在Linux系统中,shell便是这个application,由因其在最外层,像鸡蛋的外壳一样,故称为”壳程序“,这样就一目了然了吧!

更深层次的讲,Shell 是一个命令语言解释器(command-language interpreter),它自身就是一个解释型的程序设计语言。它可以把我们在计算机上的操作或我们的命令,翻译为计算机可识别的二进制命令,传递给内核,以便调用计算机硬件执行相关的操作;同时,计算机执行完命令后,再通过Shell翻译成自然语言,呈现在我们面前。

bash shell简介

我们在root权限下进入/etc查看shells文件,去除创建用户时自动复制的shell文件外,Linux自带的shell文件,共有四个,如下图所示。

  •  /bin/sh(已经被/bin/bash取代)
  • /bin/bash(就是Linux默认的shell)
  • /bin/tcsh (整合 C Shell ,提供更多的功能)
  • /bin/csh (已经被 /bin/tcsh 所取代)

而其中,Bash 与 Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性。Bash 也包含了很多 C 和 Korn shell 里的优点,有很灵活和强大的编程接口,同时又有很友好的用户界面。 

bash shell的基本功能

命令编修功能(history)

说白了就是命令记忆功能,但需要注意的时,本次登录时和上次登录时,命令记录在不同的地方。本次登录所执行的指令都暂存在内存(即RAM)中,而一旦登出,本次登录时的指令就会以覆盖的形式记录到~/.bash_history中,如下图所示,该文件中只记录了上次登录时我输入的指令,前几次关于动物园的指令,以及本次的cat等指令,都没有显示在里面。

命令与文件补全功能(与上节提到的vim的补全功能相似,但可tab一键搞定!)

 这个相信大家都不陌生,在常见的IDE中都配备这个功能,需要注意的是:

  • [Tab] 接在一串指令的第一个字的后面,则为命令补全
  • [Tab] 接在一串指令的第二个字以后时,则为“文件补齐”

命令别名设置功能(alias)

这个大家应该也不陌生,因为bash本身就是shell的一种,而shell本身就是一种语言,下面将通过简单的举例帮助大家理解。

#python
import numpy as np
n = np.abs(-5)
#C++
#include "iostream"
using namespace std;

typedef int * IntPtr;
int main()
{
  
  IntPtr x = new int(6);
  cout << x << " " << *x << endl;


  system("pause");
  return 0;
}
#bash
alias lm='ls -al'

 效果如下图所示,成功实现命令的别名设置,从而简化指令,但需要注意,无论是在用户权限下还是root权限下,该别名设置仅在本次登录有效

那如果想永久有效怎么办呢?这里以个人用户为目标进行设置,而不进行全局设置。首先,我们直接在home目录(.目录,全部设置需要root权限至/etc目录)通过vim打开.bashrc文件,接着将别名定义添加到文件末尾,并保存更改,如下图所示。保存文件后,重新登录或执行source ~/.bashrc命令以使别名生效。

程序化脚本(shell scripts) 

可以将平时管理系统常需要下达的连续指令写成一个 件, 该文件并且可以通过对谈互动式的方式来进行主机的侦测工作,也可以借由shell提供的环境变量及相关指令来进行设计 。

万用字符(Wildcard)

除了完整的字串之外, bash 还支持许多的万用字符来帮助使用者查询与指令下达。 举例来说,想要知道 /usr/bin 下面有多少以A为开头的文件,只需使用:“ ls -l /usr/bin/A* ”就能够知道啦。更多万用字符的功能表如下图所示。

指令的下达与快速编辑

在C/C++中,'/'的含义为转义字符,而在bash中,'/'的含义为使下一个按键“跳脱”。比如指令太长,想要分行输入时, 我们可以利用 \[Enter] 将 [Enter] 这个按键“跳脱”开来,让 [Enter] 按键不再具有“开始执行”的 功能,而是让指令可以继续在下一行输入。需要特别留意, [Enter] 按键是紧接着反斜线 (\) 的,两者中间没有其他字符。 因为 \ 仅跳脱“紧接着的下一个字符,因此 \ [Enter] (即 [Enter] 与反斜线中间有一个空格时)则 \ 跳脱的是“空白键”而不是 [Enter] 按键。

 如图所示,如果顺利跳脱 [Enter] 后,下一行最前面就会主动出现 > 的符号, 可以继续输入指令。

而当我们输入的指令特别长,需要快速修改某段指令串时,便可使用下图所示的功能键去实现相应操作!

下期将更新shell的变量功能部分,感谢支持! 


参考

  1. Shell与Bash的区别和联系:https://blog.csdn.net/xq151750111/article/details/114491731

  2. linux命令别名:https://blog.csdn.net/wangxinru123456/article/details/133085742

  • 22
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值