Shell核心介绍、快捷键及常用的基本命令

1.Shell与bash

1.1 Shell的概念

1.1.1 Shell的由来

现在我们使用的操作系统(Windows、Mac OS、Android、iOS 等)都是带图形界面的,简单直观,容易上手;然而在计算机的早期,并没有图形界面,我们只能通过一个一个地命令来控制计算机,这些命令有成百上千之多。 对于图形界面,用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。然而,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。

由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,这样用户就能间接地使用操作系统内核了。用户界面和命令行就是这个另外开发的程序,在 Linux下,这个命令行程序叫做 Shell 。

Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。

Shell 本身并不是内核的一部分,它只是在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。

Shell 的另一个重要特性是它自身就是一个 解释型的程序设计语言 ,Shell 程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组。Shell 主要用来开发一些实用的、自动化的小工具,而不是用来开发具有复杂业务逻辑的中大型软件,例如检测计算机的硬件参数、搭建 Web 运行环境、日志分析等,Shell 都非常合适。任何在提示符下能键入的命令也能放到一个可执行的 Shell程序里,这意味着用shell语言能简单地重复执行某一任务。

1.1.2 Shell的工作原理

Shell 程序本身的功能是很弱的,比如文件操作、输入输出、进程管理等都得依赖内核。我们运行一个命令,大部分情况下 Shell 都会去调用内核暴露出来的接口,这就是在使用内核,只是这个过程被 Shell 隐藏了起来,它自己在背后默默进行,我们看不到而已。接口其实就是一个一个的函数,使用内核就是调用这些函数。

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

在 Shell 中输入的命令,有一部分是 Shell 本身自带的,这叫做内置命令;有一部分是其它的应用程序(一个程序就是一个命令),这叫做外部命令。

Shell 本身支持的命令并不多,功能也有限,但是 Shell 可以调用其他的程序,每个程序就是一个命令,这使得 Shell 命令的数量可以无限扩展,其结果就是 Shell 的功能非常强大,完全能够胜任 Linux 的日常管理工作,如文本或字符串检索、文件的查找或创建、大规模软件的自动部署、更改系统设置、监控服务器性能、发送报警邮件、抓取网页内容、压缩文件等。

更值得一提的是,Shell 还可以让多个外部程序发生连接,在它们之间很方便地传递数据,也就是把一个程序的输出结果传递给另一个程序作为输入。

将 Shell 在整个 Linux 系统中的地位描述成下图所示的样子。

What is shell in Linux? | MVPS.net Blog | MVPS.NET tutorials

不论何时你键入一个命令,它都被 Linux Shell 所解释。Shell 首先检查命令是否是内部命令,不是的话再检查是否是一个应用程序,这里的应用程序可以是Linux本身的实用程序,比如 ls 和 rm,也可以是购买的商业程序,比如 xv,或者是公用软件(public domain software),就象 ghostview。然后 Shell 试着在搜索路径($PATH)里寻找这些应用程序。搜索路径是一个能找到可执行程序的目录列表。如果你键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。而如果命令被成功的找到的话,shell的内部命令或应用程序将被分解为系统调用并传给Linux内核。

1.1.3 常用的shell

在 Linux 和 UNIX 系统里可以使用多种不同的 Shell 可以使用。最常用的几种是 Bourne shell (sh), C shell (csh), Korn shell (ksh)等。三种 Shell 都有它们的优点和缺点。Bourne shell 的作者是 Steven Bourne。

除了这些 Shell 以外,在 Linux 上常见的有 tcsh (csh 的扩展),Bourne Again shell(bash, sh 的扩展), 和 Public Domain Korn shell (pdksh, ksh 的扩展)。Bash 是大多数 Linux 系统的缺省 Shell。

1.2 bash简介

Bash(GNU Bourne-Again Shell)是一个为 GNU 计划编写的 Unix shell,它是许多 Linux 平台默认使用的 shell。

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

2.快捷键

3.配置网络参数

3.1 nmtui 图形化界面配置网络参数

image-20240218213329649

3.2 编辑网卡配置文件

网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-ens32

3.3 nmcli命令

4. 常用的基本命令介绍

4.1常用的系统工作命令

4.1.1 echo

4.1.2 date

4.1.3 重启相关命令

4.1.4 关闭系统相关命令

4.2 系统状态检测命令

4.2.1 ifconfig

4.2.2 uname

4.2.3 free

4.2.4 who

4.2.5 last

4.2.6 history

4.2.7 tracepath

4.2.8 netstat

4.2.9 alias

4.2.10 blkid

4.3 查找定位文件命令

4.3.1 tree

4.3.2 find

4.3.3 locate

4.3.4 whereis

4.3.5 which

4.4. 文件及目录管理命令

4.4.1 touch

4.4.2 cp

4.4.3 pwd

4.4.4 ls

4.4.5 cd

4.4.6 mkdir

4.4.7 mv

4.4.8 rm

4.4.9 dd

4.4.10 file

4.5 文本文件查看及编辑命令

4.5.1 cat

4.5.2 more

4.5.3 less

4.5.4 head

4.5.5 tail

4.5.6 cut

4.5.7 diff

4.5.8 uniq

4.5.9 tr

4.5.10 sort

4.6 打包压缩命令

4.6.1 tar

4.7 Linux三剑客

4.7.1 grep

4.7.2 sed

4.7.3 awk

5. 重定向、管道符、通配符、转义符

5.1 重定向

5.1.1 输入重定向
5.1.2 输出重定向

5.2 管道符

5.3 通配符

5.4 转义符

6. 重要的环境变量

彩蛋:修改命令提示符