什么是Linux?
Linux是一种免费、开源的操作系统内核
最初由芬兰计算机科学家 李纳斯·托瓦兹 (Linus Torvalds)在1991年创建
Linux内核最初是为个人电脑设计的,如今已普及到服务器、超级计算机、移动设备等各种硬件平台
由于Linux是自由软件(自由软件定义是指用户有权利运行、复制、分发、研究、修改和改进软件)
许多人和组织都可以贡献自己的代码
因此Linux成为了一个强大而活跃的社区
Linux内核既可以作为独立操作系统使用,也可以作为其他操作系统的内核
Linux系统通常使用GNU软件(GNU是GNU’s Not Unix的缩写,是一个开源的自由软件操作系统)
而Linux系统加上GNU软件,就形成了完整的操作系统,也成为了GNU/Linux系统
Linux系统以其稳定性、安全性、性能和灵活性等特点而著称
被广泛应用于企业级服务器,科学研究和教育等领域
此外,基于Linux内核的开源操作系统(如Ubuntu、Debian、Fedora等)
在桌面操作系统市场也有一定的影响力
Linux操作系统的组成
- 内核(Kernel):Linux操作系统的核心部分,提供了操作系统的基本功能,如进程管理、内存管理、设备驱动程序等,它是操作系统与硬件之间的接口
- Shell(命令行解释器):Linux操作系统提供了多种Shell,最常用的是Bash(Bourne Again Shell),Shell提供了用户与操作系统之间的交互接口,用户可以通过Shell执行命令、脚本和程序
- 文件系统(File System):Linux操作系统采用一种层次化的文件系统结构,并支持多种文件系统格式,如Ext4、XFS、Btrfs等,文件系统用于组织和管理文件和目录。
- 库(Libraries):Linux操作系统提供了各种库文件,包括动态链接库和静态链接库,用于为应用程序提供常用的函数和工具
- 工具和命令(Utilities and Commands):Linux操作系统提供了丰富的命令行工具和实用程序,如文件操作命令、网络工具、文本处理工具等,这些工具和命令能够完成各种系统管理和日常操作任务
- 图形界面(Graphical User Interface,GUI):Linux操作系统也提供了多种图形用户界面,如GNOME、KDE、Xfce等,这些界面使用户能够通过图形方式操作和管理系统
- 应用软件(Applications):Linux操作系统支持安装和运行各种应用软件,包括办公套件、图形处理软件、多媒体工具、开发环境等,用户可以根据需求选择和安装适合自己的应用程序
Linux内核版本
世界上各个厂家都会基于Linux的内核版本做出属于自己公司的Linux操作系统
比如RedHat、Ubuntu、Debian、CentOS等等
由李纳斯·托瓦兹进行内核更新并上传至kernel.org,为各个公司提供更新服务
但往往在使用过程中一般都会使用最稳定,以及最符合当今潮流的版本
但由于Linux内核是开源的,各个公司也会根据自己的需求来进行内核功能的增加,修改与删减
访问命令行
一般情况下,我们可以通过在电脑上安装虚拟机、更改电脑操作系统或者使用服务器使用Linux操作系统
对于不同的方式,我们有以下的推荐:
使用桌面版Linux,一般推荐使用带有UI界面的Linux操作系统,方便操作
使用服务器版Linux,一般推荐使用命令行的Linux操作系统,方便批量化操作
但在学习的过程中,我们更多的是使用命令行的形式来加深对Linux的理解
在此之前,我们先了解一下一个很重要的工具————Shell
Shell
Shell 是一种命令行解释器和编程语言
它是在计算机操作系统中提供给用户与操作系统内核进行交互的接口
通过 Shell,用户可以输入命令和脚本,并交由操作系统解释和执行
- Shell 可以理解和执行用户输入的命令,并且可以根据用户和程序的需要执行各种操作
- 如文件管理、进程控制、环境变量管理等
- Shell 还支持条件语句、循环结构和函数,使用户能够编写脚本来自动化任务和批处理操作
下面我们使用VMWare WorkStation Pro虚拟机的RHEL9.0版本来举例子
- 首先我们打开虚拟机,并登陆账号,进入到主页面菜单
- 随后我们点击最下方的终端来打开命令行,并如图所示
此时所显示的黑色框即为命令行,也就是shell,但这只是虚拟shell
若想打开本地shell,我们需要进行以下操作 - 在主页面组合键CTRL+ALT+F1~F6(每个版本的虚拟机都有不同)
现在所展示的便是本地Shell
一般而言,在一个Linux系统上装有三种shell:bash、sh和tmux
他们三种大差不差,也只有一些命令集上的不同
我们可以通过在命令行上输入这样的指令来查看存在的shell
cat /etc/shells
Shell命令格式
我们在终端中可以看到一串由 [ ] 所框起来的代码,这叫做 前导符
前导符的作用一般是显性的告诉用户以下的信息:
- kiosk 当前操作终端的用户名
- foundation0 当前的主机名
- ~ 当前用户的工作目录
- $ 代表普通用户权限
对于上面的前导符,我们也可以使用以下的命令来查看
[kiosk@foundation0 ~]$ id //查看当前用户信息
[kiosk@foundation0 ~]$ hostname //查看当前主机信息
[kiosk@foundation0 ~]$ pwd //查看当前用户的工作目录
[kiosk@foundation0 ~]$ id //查看当前用户信息
[kiosk@foundation0 ~]$ hostname //查看当前主机信息
[kiosk@foundation0 ~]$ pwd //查看当前用户的工作目录
既然有普通用户,也有超级用户
我们可以通过使用su -
输入木马把操作用户转换为root(超级用户)
可以看到,相比于上面,这里的权限符变为了#
而前导符后的则是命令的输入区域
正常来说,命令的格式一般是:命令 + 选项 + 参数
下面我们举几个例子
可以看到上面我们使用了 ls -a
和 ls --all
的命令
这个命令的作用是显示当前目录下的所有文件
而对于格式而言,ls是命令,-a和–all是参数
当选项为-时,代表缩写,当选项为–时,代表全写
对于上面两个命令的作用是相同的
对于上图而言,我们在 ls -a
后面添加了 /etc
代表着输出etc文件路径下的所有文件
/etc
则代表参数
但由于我们是在终端shell上进行操作,所显示出来的内容有时候让人眼花缭乱
当有需要使用之前使用过的命令时,我们可以通过键盘上下键来寻找
但当输入过的命令非常多时,这并不是一个非常好的方法
所以我们可以使用 history
命令来查看我们使用过的命令
并且可以通过 !+ 行号
来重新调用自己想要使用的历史命令
常见快捷键
快捷键存在的意义就是为了我们在shell中输入命令时提高我们的操作效率
下面介绍几个常见的快捷键
这几个快捷键是针对终端窗口使用的
下面介绍在终端shell内使用的快捷键
从命令行管理文件
我们在windows系统中一般会使用UI界面来管理各种各样的文件,方便操作
在Linux系统中同样可以,但是绝大部分情况下,我们需要通过对终端shell进行操作
所以下面我们来了解一下如何通过命令行的指令来管理Linux上的文件
在此之前,我们先来了解一下Linux的目录结构
Linux系统目录结构
由于每个不同的Linux发行版的差异,他们的系统根目录结构都会有所不同
这里只说常规的目录结构
Linux系统的文件目录结构是一种层次化的目录结构
有以下组成
- /:根目录,系统中所有文件和目录的起始点
- /bin:二进制可执行文件的存放目录,包含了系统启动和运行所需的基本命令,如ls、cp等
- /boot:系统启动时所需的文件,包括内核和启动加载程序
- /dev:设备文件目录,用于存放设备文件,如硬件设备、终端和打印机等
- /etc:系统配置文件存放的目录,包括系统和服务的配置文件
- /home:普通用户的家目录,每个用户在这个目录下有自己的文件空间
- /lib和/lib64:系统和应用程序所需的共享库文件
- /media:可移动媒体设备(如光盘、USB驱动器等)挂载的目录
- /mnt:临时挂载目录,用于挂载临时文件系统
- /opt:可选的应用程序软件包目录
- /proc:虚拟文件系统,包含系统和进程的相关信息
- /root:超级用户(root)的家目录
- /sbin:超级用户使用的系统管理命令目录
- /srv:服务相关的数据文件存放目录
- /tmp:临时文件目录,用于存放临时文件
- /usr:用户自己安装的应用程序和文件的目录,类似于Windows的Program Files
- /var:包含经常变化的文件,如日志文件、数据库文件等
路径的表示
对于路径而言,路径代表某一个点到某一个点的走法
路径有两种表达方式,一种是绝对路径,一种是相对路径:
绝对路径:从(/)根目录开始,显示子目录层次,最终到达指定文件夹
相对路径:非(/)根目录开始,当前工作目录的相对位置
对于路径管理,我们有以下几个命令需要掌握:
cd [目录位置]
切换当前工作目录pwd
查看当前工作目录ls
显示当前工作目录下的所有文件
对于文件而言也存在着很多不同的类型,下面一一举例:
- d 文件夹
- b 块文件(硬盘)
- c 字符文件
- l(ell) 链接文件(快捷方式)
- p 管道文件
- — 一般文件
我们可以通过输入ls -l
来查看一个文件夹下面所有文件的长格式列表(完整信息)
在最前面所显示的字符便是文件的类型
文件管理
对于在命令行中管理文件,我们有以下几个命令需要掌握:
mkdir + [文件夹名] + 选项
创建新的目录touch + [文件名]
新建空文件,或更新文件时间标记cp + 选项 + [文件/文件夹名] + [目标文件/目录]
复制文件或目录rm + 选项 + [文件或目录]
删除文件或目录
PS:root删除文件会提供一次确认操作,普通用户不会mv
移动文件或目录、改名
查看文件指令:cat + [文件名] + 选项
显示出文件的所有内容more|less + [文件名] + 选项
全屏方式分页显示文件内容(前者只可下翻,后者可以上下翻动)
PS:选项-n可以显示行数,q退出head|tail
查看文件开头(结尾)的一部分内容(默认10行)wc
统计文件中的个单词数量等信息
通配符
通配符是一种特殊语句,常用于模糊查找
可以用来代替一个或多个真正字符
常用通配符有以下几个:
*
匹配多个任意字符?
匹配一个任意字符[abc...]
匹配指定范围内的任意一个字符{a,b}
或{a..c}
匹配括号中的字符,或连续字符
下面举几个例子来方便理解
这里我们在Test文件夹中使用touch {a,b,c}{1,2,3}.txt
命令创建了9个文件
他们的名字是由abc和123组合起来的
随后我们使用ls a*
和ls *3*
分别显示了开头字符为a的所有文件和第二位字符为3的所有文件
这里我们使用ls ?3*
和ls ?[23]*
两个命令分别显示了第二位字符为3的所有文件和第二位字符为2和3的所有文件
最后我们使用 rm {a,b,c}{1,2,3}.txt 来删除所有abc和123组合起来名称的文件