Linux 假期预习备忘

Hello, Linux!

  • 什么是 Linux?
    • Linux 是基于 Linux 内核的开源操作系统,由 Linus Torvalds 于 1991 年首次发布。
    • Linux 发行版包括 Ubuntu、Debian 等,本教程使用 Ubuntu 22.04.1 LTS。

初识 CLI Shell

  • CLI Shell 概念
    • CLI(Command Line Interface):命令行界面,通过命令行与操作系统交互。
    • Shell 是操作系统的外壳,用于访问操作系统服务,分为 CLI Shell 和 GUI Shell。
  • 为什么使用 CLI Shell?
    • 节约资源:在资源有限的设备上,运行 GUI Shell 会增加系统负担。
    • 高效自动化操作:CLI Shell 可以通过脚本实现复杂操作。
    • 精准操作:命令行操作可以精确控制,便于复现和传播。

Linux 基础操作

  • 命令格式
    • 命令名 [选项] [参数] …
  • 目录操作
    • cd:切换目录。
    • ls:列出目录内容。
    • mkdir:创建新目录。
    • rmdir:删除空目录。
    • pwd:显示当前目录的绝对路径。
  • 文件操作
    • touch:创建新文件或更新文件时间戳。
    • rm:删除文件或目录。
    • cp:复制文件或目录。
    • mv:移动或重命名文件或目录。
    • diff:比较两个文件的差异。
  • 查找操作
    • find:查找文件。
    • grep:搜索文件内容。
    • tree:显示目录树结构。

开源文本编辑器——Vim

  • Vim 基本操作
    • 创建文件:touch helloworld.c
    • 打开文件:vim helloworld.c
    • 进入插入模式:按 I 键。
    • 保存并退出::wq
  • Vim 配置
    • 配置文件:.vimrc,位于用户主目录下。

实用工具介绍

  • GCC
    • 编译器:gcc hello.c
    • 执行:./a.out
  • make & Makefile
    • 编写 Makefile 文件,使用 make 命令构建项目。
  • ctags
    • 代码跳转工具,使用 ctags -R * 创建符号索引文件 tags
  • tmux
    • 终端复用工具,支持分屏操作和会话管理。

Git 简易教程

  • Git 基本概念
    • 三种储存位置:工作区、暂存区、储存库。
    • 四种储存状态:未跟踪、未修改、已修改、已暂存。
  • 常用命令
    • git init:初始化仓库。
    • git clone:克隆仓库。
    • git status:查看仓库状态。
    • git add:添加文件到暂存区。
    • git restore:恢复文件。
    • git checkout:切换分支。
    • git commit:提交更改。
    • git push:推送更改到远程仓库。
    • git pull:拉取远程仓库的更改。

Shell 脚本教程

  • Shell 脚本基础
    • 创建脚本文件:touch hello.sh
    • 编写脚本:#!/bin/bashecho "Hello, world!"
    • 运行脚本:chmod +x hello.sh./hello.sh
  • 变量和参数
    • 定义变量:var_name=value
    • 脚本参数:$1, $2, $#, $*
  • 条件与循环
    • if 语句:条件判断。
    • while 语句:循环操作。
  • 函数
    • 定义函数:function fun_name() { ... }
    • 调用函数:fun_name param1 param2 ...

用命令编辑和输出文本——sed 的使用

  • sed 基本用法
    • sed [选项] '命令' 输入文本
    • 常用选项:-n(安静模式),-i(直接修改文件)
    • 常用命令:a(新增),c(取代),i(插入),d(删除),s(替换)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sed [选项] '命令' 输入文本
选项(常用):
-n:安静模式,只显示经过sed处理的内容。否则显示输入文本的所有内容。
-i:直接修改读取的档案内容,而不是输出到屏幕。否则,只输出不编辑。
命令(常用):
<行号>a<内容>: 新增,在行号后新增一行相应内容。行号可以是“数字”,在这一行之后新增,也可以是“起始行,终止行”,在其中的每一行后新增。当不写行号时,在每一行之后新增。使用$表示最后一行。后面的命令同理。
<行号>c<内容>:取代。用内容取代相应行的文本。
<行号>i<内容>:插入。在当前行的上面插入一行文本。
<行号>d:删除当前行的内容。
<行号>p:输出选择的内容。通常与选项-n一起使用。
s/<re>/<string>:将<re>(正则表达式)匹配的内容替换为<string>。

sed -n '3p' my.txt
# 输出 my.txt 的第三行
sed '2d' my.txt
# 删除 my.txt 文件的第二行
sed '2,$d' my.txt
# 删除 my.txt 文件的第二行到最后一行
sed 's/str1/str2/g' my.txt
# 在整行范围内把 str1 替换为 str2。
# 如果没有 g 标记,则只有每行第一个匹配的 str1 被替换成 str2
sed -e '4astr ' -e 's/str/aaa/' my.txt
#-e 选项允许在同一行里执行多条命令。例子的第一条是第四行后添加一个 str,
# 第二个命令是将 str 替换为 aaa。命令的执行顺序对结果有影响。

重定向和管道

  • 重定向
    • 输出重定向:>>>
    • 输入重定向:<
  • 管道
    • command1 | command2 | command3 | ...

部分实践内容

  • Git 操作

    • 克隆分支:git clone <URL>
    • 切换分支:git checkout lab2
    • 撤销修改:git restore <filename>
    • 添加文件到暂存区:git add .
    • 移出暂存区:git restore --staged <filename>
    • 恢复文件:git restore <filename>
    • 提交更改:git commit -m "git is so easy"
    • 推送更改:git push
  • Shell 脚本

    • 创建脚本文件:touch hello.sh
    • 编写脚本:#!/bin/bashecho "Hello, world!"
    • 运行脚本:chmod +x hello.sh./hello.sh
  • sed 操作

    • 替换内容:sed 's/str1/str2/g' my.txt
    • 删除行:sed '2d' my.txt
  • 重定向和管道
    标准输入(stdin):文件描述符为0;标准输出(stdout):文件描述符为1;标准错误(stderr):文件描述符为2。

    • 输出重定向:ls / > lsoutput.txt
    • 输入重定向:cat < input.txt
    • 管道操作:cat hello.txt | grep "Hello"

参考资料