浅谈Linux下的shell--BASH

简介: 浅谈Linux下的shell--BASH

shell的概念与作用



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


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


1.png


shell的作用


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


2.png


我们可以发现,我们使用的应用程序是在最外层的,就好像鸡蛋的外壳一样,因此这个东西也被成为壳程序。而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。


3.png


文件中的内容


我们打开后,会发现每一个用户都有自己的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文件,会看到我们上一次登录时的历史指令。(本次登录的指令记录会被缓存到内存中,只有退出登录时才会被记录到该文件中)


4.gif


演示


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

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


5.gif


Tab键演示


三、一些内置命令的使用

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


显示alias:说明该指令是别的指令的别名


显示file:说明该指令为外部指令


显示builtin:说明该指令为bash内置指令


6.png


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


7.png


查找指令所在位置演示


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


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


相关文章
|
15天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
29天前
|
JavaScript 关系型数据库 Shell
Linux shell编写技巧之随机取字符串(一)
本文介绍了Linux Shell脚本的编写技巧,包括环境配置、变量命名规则和缩进语法,并提供了一个实例练习,展示如何使用`$RANDOM`变量和`md5sum`命令来生成随机的8位字符串。
33 4
|
28天前
|
Unix Shell Linux
在Linux中,什么是 BASH?
在Linux中,什么是 BASH?
|
30天前
|
Ubuntu Linux Shell
在Linux中,如何使用shell脚本判断某个服务是否正在运行?
在Linux中,如何使用shell脚本判断某个服务是否正在运行?
|
29天前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
23 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
30天前
|
监控 Shell Linux
在Linux中,如何使用shell脚本进行系统监控和报告?
在Linux中,如何使用shell脚本进行系统监控和报告?
|
30天前
|
Shell Linux
在Linux中,shell脚本中的条件语句和循环结构是什么?
在Linux中,shell脚本中的条件语句和循环结构是什么?
|
28天前
|
监控 Shell Linux
在Linux中,如何使用shell脚本检测磁盘使用率?
在Linux中,如何使用shell脚本检测磁盘使用率?
|
28天前
|
Shell Linux 开发工具
在Linux中,如何编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下?
在Linux中,如何编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下?
|
28天前
|
Shell Linux
在Linux中,哪⼀个bash内置命令能够进行数学运算?
在Linux中,哪⼀个bash内置命令能够进行数学运算?