首页 > 系统相关 >浅谈Linux下的shell--BASH

浅谈Linux下的shell--BASH

时间:2023-03-15 17:32:15浏览次数:42  
标签:bin shell 浅谈 -- 指令 Linux OS bash

shell的概念与作用

我们已经学习并知道了操作系统实际上就是一款软件,一款用来管理计算机软硬件资源,为用户提供良好的执行环境的软件。假如该软件能被用户随意操作,就会有可能出现因操作不当而导致整个系统崩溃的情况。因此:操作系统是不能直接与用户沟通的

但是,计算机的使用一定是离不开操作系统的,基于此情况,就有了在OS上面发展的各种应用程序。用户可以通过应用程序来指挥OS内核,从而让内核完成我们所需要的硬件任务。

浅谈Linux下的shell--BASH_命令行

  • 举个简单的例子:假如我想要播放音乐,就一定要有声卡,然后我们用户只需要在应用层面点击播放就可以实现让声卡播放声音的目的。实际上,我们点击播放,就是向OS发出指令,从而让OS管理硬件(声卡),完成任务。

浅谈Linux下的shell--BASH_命令行_02

  • 我们可以发现,我们使用的应用程序是在最外层的,就好像鸡蛋的外壳一样,因此这个东西也被成为壳程序。而shell的作用就是充当壳程序,OS内核通过shell接收我们用户发出的各项指令,从而完成一系列任务。再简单一点的理解:shell就是Linux下的命令行解释器,我们写的一系列指令并不是直接在OS内核操作,而是通过命令行解释器来指挥OS内核。(当然,对于不合理的指令,OS是有权限拒绝的,这样就保证了OS内核的安全性)。

★简单总结一下:

  • shell就是一种壳程序,避免用户直接与OS内核沟通
  • shell的作用是将我们的指令翻译给OS内核,让内核来进行处理,并把处理的结果反馈给用户。(Windows下的壳程序就是图形化界面)
  • shell的存在使得用户不会直接操作OS,保证了OS的安全性
  • 简单来说,shell就是Linux下的命令行解释器,我们写指令的地方。

Linux下的shell

bash

我们可以打开文件/etc/shells,可以查看我们Linux下的shell,打开后内容如下:

/bin/sh    (已经被/bin/bash所替换)                                                                                                           
/bin/bash (Linux默认的shell)
/usr/bin/sh (同/bin/sh)
/usr/bin/bash (同/bin/bash)
/bin/tcsh (整合C shell,提供更多的功能)
/bin/csh (被/bin/tcsh替换)

我们可以发现,Linux默认的shell就是bash,所以我们常说的命令行解释器,其实就指的是bash。当我们登陆时,系统就会自动给我们一个shell来工作,我们可以在文件/etc/passwd中查看用户登陆的shell。

浅谈Linux下的shell--BASH_bash_03

我们打开后,会发现每一个用户都有自己的shell,这个shell就是bash,当然这也可以说明一点:Linux是一个多人多任务的环境,即每一个用户都有自己对应的bash。即使是在同一个机器登录。

★这里简单总结一下;

  • Linux默认的shell就是bash。
  • 在我们登陆时,系统会自动给我们分配对应的shell—bash,并且每个用户都有自己的bash。即Linux是一个多人多任务的环境。

bash的功能

Linux既然使用bash作为默认shell,那么bash就一定有它的优点吸引住了Linux。我们接下来简单了解一下bash的优点:

一、历史命令

我们为什么可以通过上下键来翻看我们的历史命令,就是因为它是bash的一个功能,而我们既然可以bash上工作,那么理所当然的就可以使用这个功能。-----通过上下键来翻看历史指令

指令都存放在家目录下的.bash_history中,~表示是当前用户的家目录,我们可以进入里面,用ls -al来查看家目录下的所有文件,打开.bash_history文件,会看到我们上一次登录时的历史指令。(本次登录的指令记录会被缓存到内存中,只有退出登录时才会被记录到该文件中)

浅谈Linux下的shell--BASH_bash_04

二、命令与文件名补全功能(Tab键)

我们在输入一个指令时,假如只知道前面的一部分,后面的给忘记了,就可以按键盘上面的Tab键(可能会按两次),然后屏幕就会显示以我们写的字母开头的所有指令,帮助我们回忆。并且当一个文件名过于长,而我们又懒得一个字母一个字母敲打时,就可以只输入前几个字母,就会实现文件名自动补全。很爽的一个功能。

浅谈Linux下的shell--BASH_命令行_05

三、一些内置命令的使用

我们使用的一些指令,比如alias(给指令起别名)、cd、等指令都是bash内置的指令,只有使用bash工作时,才可以使用这些指令。我们可以通过type -t 指令的命令来查看该指令是否为bash的内置指令

  1. 显示alias说明该指令是别的指令的别名
  2. 显示file说明该指令为外部指令
  3. 显示builtin说明该指令为bash内置指令

浅谈Linux下的shell--BASH_命令行_06

我们也知道,指令实际上就是一个程序,也是一个文件,Linux下一切皆文件,所以我们可以用type -a 指令 的命令来查找指令所在的位置,当然也可以用which来查找。

浅谈Linux下的shell--BASH_bash_07

除此之外,还有任务管理、前后台控制、程序化脚本的支持、包括我们用过的通配符的使用(比如*),都是bash所支持的功能,这里就不一一介绍了。后面有时遇到再进行扩展。

由此可见,bash的功能真的很香,怪不得Linux默认的shell是bash。


end.

生活原本沉闷,但跑起来就会有风!

标签:bin,shell,浅谈,--,指令,Linux,OS,bash
From: https://blog.51cto.com/u_15954929/6123118

相关文章

  • 美图公司FinOps探索的那些事儿~
    2023年2月28日,由优维科技联合FinOps产业推进方阵举办了第1期「UGeek大咖说-极致用云·共济FinOps」线上直播活动,来自中国信通院及美图公司技术专家共同带来了一场精彩的技术......
  • 数据落盘
    落盘,就是将数据写入到磁盘(存储介质);刷盘,并不是每次接收到数据后就将数据写入到磁盘,而是会先写入缓冲区,将缓冲区的数据写入到磁盘的过程,称为刷盘。importpickle#持久化,数......
  • SqlServer(三):数据库表调整
    1、修改字段名:altertable表名renamecolumnAtoB2、修改字段类型:altertable表名altercolumn字段名typenotnull3、修改字段默认值altertable表名addde......
  • liunx 命令
    ls-l-hls-lhls-hlcd(更改目录的意思)的用法cd命令(空格)可选参数文件夹几个特殊的目录.当前工作目录..上一级工作目录-上一次的工作目录~当前......
  • QT5笔记:7. 自定义类、自定义信号及类的元对象信息
    自定义的QPerson类,需要继承QObject类qperson.h头文件#ifndefQPERSON_H#defineQPERSON_H#include<QObject>classQPerson:publicQObject{Q_OBJECT......
  • K8S部署Prometheus
    前言:zabbix与prometheus的区别和Zabbix类似,Prometheus也是一个近年比较火的开源监控框架,和Zabbix不同之处在于Prometheus相对更灵活点,模块间比较解耦,比如告警模块、代理......
  • C++ 常用语法
    1.定义一个字符串常量staticconststd::stringversion("0.0.1");staticconststd::stringname("Car-"+version);2.定义size大小staticconstexpruint64_tsh......
  • 公众号前端访问后台500 疑难问题解决
     后台日志联调,发现前端根本无法进入后台方法中去经过仔细对比发现referrer请求过长在主设置页面增加<metaname="referrer"content="origin">配置问题解决 ......
  • k8s dashboard 访问报错
      1、浏览器访问:若页面报错提示:“ClientsentanHTTPrequesttoanHTTPSserver.”,需要加https去访问。2、之后浏览器会告诉你“攻击者可能会试图从127.0.0.1窃......
  • 网络流学习笔记
    题单+1网络流一个有向图,每条边描述一个有向的限制条件,如果我们把它类比为水流的话,每条边就维护一个最大的水流量。一般有一个源点(可以流出无限多的水)和一个汇点(所有......