Linux构成
按顺序来说,先来说说什么玩意是Linux
Linux由内核、外壳程序、实用程序、应用程序构成,而Shell就是作为Linux操作系统的外壳,为用户使用操作系统提供结构
就好比,A为内核,B为Shell,C为用户,C通过B来调用A执行一些操作,这也是为了保证内核安全,所以会给B一个接口,其他乱七八糟的知道了也没什么意思,常用的就是 BASH
Shell的语法
貌似这么称呼好像也没什么不对的,就是Shell执行命令的一种语法而已
<命令> <参数> <内容>
不知道是不是这么说(误)
参数分 -
和 --
两个,举个例子
-a
中的a是一个缩写,也就是那个程序规定了的缩写
而 --all
则代表全称
在使用的时候,你可以-a,也可以--all,Linux中就是用这种方法来区分的
在举个例子,如果你想看某个命令的帮助信息时,你可以通过<命令> -h的方式来查看(当然不是全部的都可以)
同时参数也可以连在一起的, -asdfg
这个就代表5个参数,分别为 -a-s-d-f-g
而--就不能这么解读了,使用--多参数的话,两者之间得有一个空格
比如 --help--all
这里的--help就不是 -h-e-l-p
这样看了
Shell的使用
- 查阅历史记录
命令: history | history <数字>
在Linux系统中,用户所输入的命令在执行后,这个命令都会被记录在命令记录表中,当用户需要再次执行,或者想查阅自己输入什么命令的时候,可以直接调用、查看,默认情况下Shell使用的记录表文件为用户主目录下的 .bash_history
Bash(Shell)默认最多保存1000个Shell命令历史纪录
通过 history4
就可以看到历史记录中的最后4条记录是啥
- 输入/输出重定向
命令: 没有,这是一种写法
下面为书上解释
执行一个Shell命令时可能存在这样的问题,用户输入的数据只能用一次,当下一次还想使用这些数据时,还得重新输入,同时输出到屏幕上的信息只能看不能改,无法对输入做更多处理。为了解决上述问题,Linux系统为输入、输出的传送引入了输入重定向
换个说法就是用户可能想将屏幕上出现的玩意保存到文件中,所以LInux给了重定向这个玩意
输入重定向没啥好说的
输出重定向就是命令执行结果不在屏幕上显示,而是直接保存到你指定的文件中,Shell通过符号">"来实现输出重定向
ls执行出来的内容为 elapse.txt
,然后下面执行了输出重定向,将内容直接保存到elapse.txt中,而屏幕中没有显示,我们cat一下发现原本是空的内容现在多出了个elapse.txt
附加输出重定向的功能和输出重定向基本相同,只不过附加输出他会将内容写入原本文件内容的后面而不覆盖。Shell通过符号">>"来实现
- 命令补全功能
命令: 没有,这是按键 <Tab>
在Shell中, 可以只输入命令的前几个字母,然后按键,系统将自动补全,若不止一个,则显示出所有和输出字母相匹配的命令,比如
- 管道机制
写法: <命令1> | <命令2>
Linux提供管道机制可将多个命令集成到一起,形成一个管道流,使一个命令的结果作为另一条命令输入,用来执行复杂的任务
例子:
他首先会去cat /etc/passwd的内容,其次,将输出的信息,交给grep 来处理,而grep "root"的意思是匹配root这个字符串,所以到最后只会输出这两条包含root字符串的内容