cs_notes

Missing Semester IAP 2020

https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J

1 Course Overview + The Shell

计算机工具高效利用

课程目标

Shell 简介

Shell 是计算机系统的操作界面,是用户与计算机系统交互的主要方式。Shell 是一个命令行解释器,它接受用户的命令并将其转换为计算机可以理解的格式。

基本命令

Shell 提供了许多基本的命令,可以用于执行各种操作。常见的基本命令包括:

参数和重定向

Shell 命令可以使用参数来指定操作的对象或内容。例如,ls -a 命令可以列出所有目录,包括隐藏目录。Shell 还可以使用重定向来将命令的输出重定向到文件或设备。例如,date > date.txt 命令将当前日期和时间写入文件 date.txt

路径

路径是指文件或目录在文件系统中的位置。路径可以是相对路径或绝对路径。相对路径相对于当前目录,绝对路径从根目录开始。

目录和文件操作

Shell 提供了许多命令来执行目录和文件的操作。常见的目录和文件操作命令包括:

man 手册

man 手册是 Shell 命令的参考手册。通过 man 手册,可以查阅 Shell 命令的使用方法和参数。

管道

管道符号 可以用于将一个命令的输出作为另一个命令的输入。管道可以用于串联多个命令,实现更复杂的操作。

root 用户

root 用户是 Linux 系统的最高权限用户。root 用户可以执行任何操作,包括修改系统配置和删除文件。

2 Shell Tools and Scripting

Bash 脚本基础

变量

Bash 脚本中的变量可以用来存储数据。变量定义使用 ``= 符号,例如:

foo=bar

访问变量时使用美元符号加变量名,例如:

echo $foo

条件判断

Bash 脚本中的条件判断使用 if 关键字,例如:

if [ $foo = "bar" ]; then
  echo "foo 等于 bar"
fi

常见的条件判断符号包括:

函数

Bash 脚本中的函数可以用来重复使用代码。函数定义使用 function 关键字,例如:

function funcName() {
  echo "This is a function"
}

调用函数使用函数名即可,例如:

funcName

输入/输出

Bash 脚本中的输入/输出可以用来读取数据和写入数据。常用的输入/输出方式包括:

通过这些方式可以进行输出,并通过重定向控制输出的目标文件或设备。

Shell 是计算机系统中重要的工具。通过学习 Shell 的基本知识和用法,可以提高计算机工作效率。 好的,以下是整理后的 Markdown 笔记:

3 Editors (vim)

Vim 介绍

Vim 是一个强大的文本编辑器,具有丰富的功能和特性,适合编程和其他文本处理工作。Vim 使用模式编辑,有普通模式、插入模式、可视模式等多种模式,可以根据不同的需求进行切换。

模式编辑

Vim 的模式编辑是其最独特的特性之一。在普通模式下,用户可以输入命令来控制 Vim 的行为,例如移动光标、删除文本、替换文本等。在插入模式下,用户可以输入文本。在可视模式下,用户可以选择文本进行操作。

常用命令

Vim 提供了丰富的命令,可以用来执行各种操作。常用的命令包括:

Vim 文件管理

Vim 支持多文件编辑,可以使用多个窗口和标签页来查看和编辑不同的文件。

实用命令

Vim 还提供了一些实用命令,例如帮助命令、历史命令等。

学习建议

学习 Vim 需要时间和精力,但长期使用后效率会远高于其他编辑器。建议初学者先学习 Vim 的基本概念和常用命令,然后再逐步深入学习。

Vim 的未来

Vim 的模式编辑概念被其他编辑器所采用,例如 neovim、Emacs 等。这些编辑器结合了 Vim 的模式编辑和其他编辑器的优点,成为了编程人员的常用工具。

Data Wrangling

数据处理概述

数据处理是指将数据从一种格式转换为另一种格式,以便更容易使用或分析。数据处理是数据挖掘的第一个步骤,也是非常重要的一步。

Linux 命令行工具

Linux 命令行提供了许多强大的工具,可以用于数据处理。常用的工具包括:

数据处理示例

一些数据处理的示例,包括:

5 Command-line Environment

任务控制

终端多路复用器

点文件

远程机器工作

实用配置示例

开源点文件配置

软链接管理点文件

6 Version Control (git)

介绍

数据模型

内部存储

操作

7 Debugging and Profiling

调试

性能分析

8 Metaprogramming

构建系统

软件依赖管理

连续集成

测试

9 Security and Cryptography

随机性和熵

杂凑算法

对称密钥密码学

密钥衍生函数

OpenSSL 使用

10 Potpourri

键盘映射

守护进程

用户空间文件系统

备份

API

命令行参数

窗口管理器

VPN

Markdown

11 Q & A

操作系统相关主题的学习方法

常用工具的优先顺序

Python 脚本 versus Bash 脚本的使用场景

源脚本与直接执行脚本的区别

不同系统路径下软件的存放位置

使用系统包管理器还是语言特定的包管理命令

性能调优工具

浏览器插件推荐

数据处理工具

Docker 与虚机的区别