Linux

Linux 是一种免费、开源的类Unix操作系统内核。它最初由芬兰的Linus Torvalds在1991年创建,并迅速发展成为一个庞大且活跃的开源社区项目。Linux内核是操作系统的核心部分,但通常与 GNU 工具和其他软件一起使用,形成完整的(GNU/Linux)操作系统,通常被称为 Linux发行版(如 Ubuntu、Red Hat、CentOS)

GNU

GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操作系统,称为 GNU,其内容软件完全以 GPL 方式发布。其中 GPL 全称为 GNU 通用公共许可协议,包含了以下内容:
1、以任何目的运行此程序的自由;2、再复制的自由;3、改进此程序,并公开发布改进的自由。

发行版

Linux 发行版是 Linux 内核及各种应用软件的集成版本。

基于的包管理工具 商业发行版 社区发行版
RPM Red Hat Fedora / CentOS
DPKG Ubuntu Debian

Bash

是一种Unix和Linux操作系统中常用的命令行解释器和脚本语言。它是许多Linux发行版和Unix系统默认的命令行shell,使用户能够以文本方式与系统进行交互,用于与操作系统进行交互、管理文件、执行命令和编写脚本。
命令行shell是一种计算机程序,它允许用户通过文本界面与计算机操作系统进行交互,以执行各种命令和操作。用户可以在命令行shell中输入文本命令,然后系统会解释和执行这些命令。这种方式通常与图形用户界面 GUI相对。
Bash支持许多功能,包括:

  • 执行命令和程序:Bash允许用户执行各种命令和程序,可以通过命令行或脚本文件来执行。
  • 变量和环境设置:Bash支持变量,用户可以定义和使用环境变量,这些变量可用于存储数据和配置。
  • 文件操作:用户可以使用Bash执行文件和目录的操作,如创建、复制、移动、删除文件等。
  • 管道和重定向:Bash允许将命令的输出连接到其他命令的输入,还支持文件重定向,使用户能够将命令的输出保存到文件或从文件中读取输入。
  • 条件语句和循环:Bash支持条件语句(如if语句)和循环结构(如for循环和while循环),以实现更复杂的控制流程。
  • 脚本编写:用户可以编写Bash脚本,这是一系列命令和操作的集合,用于执行自动化任务、自定义系统配置和处理数据等。

而在 Windows 系统上,PowerShell 是一个更现代、功能更强大的命令行工具,特别适用于系统管理和自动化任务。尽管命令行程序cmd 仍然存在并且仍然可以使用,但PowerShell已成为Windows系统管理和开发的首选工具。

WSL

WSL(Windows Subsystem for Linux)允许用户直接在 Windows 上运行Linux 环境(包括大多数命令行工具、实用程序和应用程序),无需修改,无需单独的虚拟机或双重启动。与完整虚拟机相比,WSL 需要的资源(CPU、内存和存储)更少。
WSL是 Windows10/11 自带的一个功能,默认是关闭的,旨在为希望同时使用 Windows 和 Linux 的用户提供无缝且高效的体验。能够在 Bash shell 中运行Linux,并选择您的发行版(Ubuntu、Debian、OpenSUSE、Kali、Alpine 等)。

  • 开启 Hype-V:ctrl+r - control - 程序 - 开启Windows功能 - 勾选Hype-V
  • 启动 msl:以管理员打开powershell输入下列命令
    1
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  • 启用虚拟化
    1
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • 更新wsl版本;或手动下载最新版本的 Linux 内核更新包,运行(双击运行 - 系统将提示您提供提升的权限,选择“是”以安装)
    1
    wsl --update
  • 将 WSL 2 设置为默认版本
    1
    wsl --set-default-version 2
  • 安装Linux发行版,创建账号用户密码,Installation successful
    1
    wsl --install -d Ubuntu
  • 至此,已成功安装并设置了一个与 Windows 操作系统完全集成的 Linux 发行版!下次,您可以以管理员身份打开 PowerShell 或 cmd 命令控制台,输入 wsl 命令即可打开安装好的Linux发行版(如Ubuntu)了。
    注意:在wsl中,本地磁盘都位于 /mnt 目录。比如 c 盘位于 /mnt/c 。要进入 d 盘,执行命令 cd /mnt/d
  • PowerShell 进出 wsl:
    1
    2
    3
    4
    PS C:\Windows\system32> wsl
    root@caifeng7138:/mnt/c/Windows/system32# exit
    logout
    PS C:\Windows\system32>

Linux 命令

Linux 操作系统拥有丰富的命令行工具。可以使用--help获取指令的基本用法与选项介绍;在终端中使用man命令查看每个命令的手册页以获取更多信息,例如 man lsdoc:/usr/share/doc 存放着软件的一整套说明文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# **管理员:** 允许一般用户使用 root 可执行的命令,不过只有在 /etc/sudoers 配置文件中添加的用户才能使用该指令。
sudo + 命令
which # 指令搜索。-a : 将所有指令列出,而不是只列第一个
# **文件和目录管理:**
ls # 列出目录中的文件和子目录,是 list 的缩写(dir 命令通常不是默认可用的)
cd # 切换当前工作目录。
pwd # 显示当前工作目录的路径。
mkdir # 创建新目录。
rmdir / rm -r # 删除目录。
touch # 创建新文件或更新文件的访问时间戳。
vim + 文件名 # 编辑文件
cp # 复制文件或目录。
mv # 移动文件或目录,也可用于重命名文件。
rm # 删除文件。
cat # 查看文件内容。
tac # 是 cat 的反向操作,从最后一行开始打印。
more # 和 cat 不同的是它可以一页一页查看文件内容,比较适合大文件的查看。
head # 取得文件前几行,-n指定n行
tail # 是 head 的反向操作,只是取得是后几行。
od # 以字符或者十六进制的形式显示二进制文件。
whereis # 文件搜索。速度比较快,因为它只搜索几个特定的目录。
locate # 文件搜索。可以用关键字或者正则表达式进行搜索
find # 文件搜索。可以使用文件的属性和权限进行搜索。example: find . -name "shadow*"
## **压缩,打包:**
gzipg # zip 是 Linux 使用最广的压缩指令,可以解开 compress、zip 与 gzip 所压缩的文件。
tar # 打包。tar 不仅可以用于打包,也可以使用 gip、bzip2、xz 将打包文件进行压缩。
## **系统管理:**
ps # 查看运行中的进程。
top # 实时显示进程信息。示例: 两秒钟刷新一次 ## top -d 2
netstat # 查看占用端口的进程
kill # 终止进程。
shutdown / reboot # 关机或重启系统。
uname # 显示系统信息。
date # 显示或设置系统时间。
useradd / userdel # 添加或删除用户。
passwd # 更改用户密码。
## **包管理:** RPM 和 DPKG 为最常见的两类软件包管理工具;YUM 基于 RPM,具有依赖管理功能,并具有软件升级的功能
apt-get # 安装、更新和删除软件包。(Debian/Ubuntu)
yum # 安装、更新和删除软件包。(Red Hat/CentOS)
snap install # 下载最新
dpkg # 直接管理软件包。(Debian/Ubuntu)
rpm # 直接管理软件包。(Red Hat/CentOS)
pip # Python包管理器。
## **网络工具:**
ping # 测试网络连接。
curl / wget # 下载文件或内容。
ssh # 远程登录到其他计算机。
scp # 安全拷贝文件到远程主机。
ifconfig # 显示网络接口的配置信息,包括IP地址、子网掩码等。(Windows系统上是 ipconfig)

二、磁盘

Linux 中每个硬件都被当做一个文件,包括磁盘。磁盘以磁盘接口类型进行命名,常见磁盘的文件名如下:

  • IDE 磁盘: /dev/hd[a-d]
  • SATA/SCSI/SAS 磁盘: /dev/sd[a-p]
    其中文件名后面的序号的确定与系统检测到磁盘的顺序有关,而与磁盘所插入的插槽位置无关。

三、分区

磁盘分区表主要有两种格式,一种是限制较多的 MBR 分区表,一种是较新且限制较少的 GPT 分区表。

四、文件系统

Linux 文件系统是一种层次化的组织结构,用于存储和管理文件。这个文件系统通常由一个根目录和一系列子目录、文件以及链接组成。
Linux 系统是以文件目录系统为根基的,一切东西都是文件,包括硬件、进程、命令、系统设置等等。

  1. 树状结构: Linux文件系统采用树状结构,以根目录(/)作为顶层目录。树状结构允许文件和目录以层次结构进行组织,方便用户和应用程序定位和访问文件。(Windows 中的目录斜杠与之相反,是右斜杠 \)
  2. 根目录(/): 根目录是文件系统的最顶层目录,包含整个文件系统的目录和文件。所有的文件和目录都位于根目录下或其子目录中。
  3. 目录(文件夹): 目录是用于组织和存储文件的容器。它类似于Windows中的文件夹。目录中可以包含文件和其他子目录。
  4. 文件: 文件是数据的容器。在Linux中,一切都是文件,包括文本文件、二进制文件、设备文件等。
  5. 路径: 路径是指定文件或目录位置的方式。绝对路径从根目录开始,而相对路径从当前工作目录开始。例如,/home/user/documents 是一个绝对路径,表示文档目录在用户主目录下。

十、进程管理


Vim

Vim(Vi Improved)是一款强大的文本编辑器,广泛用于Linux和Unix系统。它是Vi编辑器的改进版本,提供了许多额外的功能和改进。

启动和退出

打开文件:进入正常模式

1
vim filename

退出Vim:

  • 进入命令模式(按 Esc 键),然后输入 :q,按 Enter;按 u 来撤销上一步操作。
  • 如果有未保存的更改,使用 :q! 来强制退出,或者 :wq 保存并退出。

模式驱动

  1. 普通模式:在这个模式下,键盘输入被解释为命令。你可以使用这些命令来移动光标、删除文本、复制粘贴等。
  2. 插入模式:在这个模式下,你可以输入文本。按下 “i” 进入插入模式,按 “Esc” 退出插入模式并返回到普通模式。
  3. 可视模式:这模式下,你可以选择文本块以进行复制、剪切或其他操作。按下 “v” 进入可视模式,然后使用移动命令来选择文本。
  4. 命令行模式:在这个模式下,你可以输入各种命令,例如保存文件、退出 Vim、搜索等。按下 “:” 进入命令行模式。
  5. 选择模式*与可视模式有些类似,但是在选择后直接进入插入模式。按下 “v” 进入可视模式,然后按 “Shift” 和 “v” 进入选择模式。

移动光标

  • 移动光标: h:左移 - j:下移 - k:上移 - l:右移

  • 移动到行首或行尾: 0:移动到行首 - $:移动到行尾

搜索和替换

  • 搜索: 在命令模式下,按 /,然后输入要搜索的文本,按 Enter

  • 替换: 在命令模式下,输入 :%s/old/new/g 来将所有匹配的 old 替换为 new