Shell是什么
当我们向计算机发出某条命令,计算机硬件在操作系统内核的控制下工作来执行我们发出的指令。那么内核是怎么知道我们的指令是什么的呢?换句话说,人与内核之间是怎样通信的呢?这就要靠Shell了。
实际上,Shell只是给提供用户操作系统的一个接口,它是一个应用程序。Shell,顾名思义是壳的意思,当我们去看Linux的系统层级,会发现应用程序会在最外层,就像一层壳一样。
另外需要注意的是,系统上合法的shell会被写入etc/shells
这个文件中。因为系统某些服务在运行的过程中回去检查用户的可用shell,而这个查询操作就是通过查询etc/shells
文件。
例如一些FTP服务器,它们不希望用户使用除FTP之外的系统服务,那么它就会给用户etc/nologin
的shell。这个shell不允许用户登录系统,即便有密码也不行,但并不是说就无法使用主机的服务。
bash shell
优点
命令记忆能力
- 即按方向键的上下键即可找到我们前或后一个输入的命令。在许多发行版中,默认的记忆功能可以达到1000条。
- 这些命令都被记录在主文件夹的
.bash_history
文件内。不过这个文件,记录的是前一次登录以前所执行过的命令。而本次登录所执行的命令会被暂存在内存中,当成功注销系统后,浙西记录才被保存到.bash_history
中。 - 不过万事有利也有弊,一旦我的系统被黑客入侵,他只需翻看我的bash历史记录就能知道我做过什么。
命令与文件补全能力
- Tab接在一串命令的第一个字的后面,则为命令补全
- Tab接在一串命令的第二个字的后面,则为文件补全
命令别名设置功能(alias)
- 这个功能非常像C/C++里的
define
,如果我想看一个目录下的所有文件(包括隐藏文件),那么我需要使用ls -al
的命令。然而总是这么输命令十分繁琐,那么我可以使用alias
为这条命令设置一个别名,例如alias='ls -al'
。