Linux 系统简介
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
复赛考试形式
**第二轮四道编程题,CSP-J 3.5 小时,CSP-S 4 小时,100分/题。**测评环境
大部分省份都是提供Windows主系统+VMWare虚拟机。
- Windows 系统支持 Dev C++。
- 虚拟机中是 NOI Linux2.0 系统,内核是 Ubuntu 20.04。
- NOI Linux2.0 VMWare15虚拟机和ios镜像下载
写代码可以选择任意系统,但是最终测评结果以 NOI Linux 结果为准。因此,掌握 Linux 基础操作和命令是有必要的,避免因系统中个别语法和库函数不同而导致结果错误。
虚拟机环境配置
- 安装 VMWare15
双击安装,最后输入注册码
安装 NOI Linux2.0 系统
编译执行C++程序
- 编译 C++ 文件:
g++ filename.cpp -o filename
- 执行 C++ 文件:
./filename
文件读取
写完程序后,加上以下文件读取函数。
#include <cstdio>
int main() {
freopen("filename.in", "r", stdin);
freopen("filename.out", "w", stdout);
fclose(stdin);
fclose(stdout);
return 0;
}
数据提交格式(仅供参考,具体以本年度为准,以监考老师要求为准)
每道题都给出了目录名和源程序名,切记不要写错!
建立以考生考号为名称的文件夹,考号在准考证上,以上海 CSP-J00001 号为例:
在文件夹内创建相应试题的文件夹,对应文件夹内创建cpp源程序,名字试卷已经给出。
NOI Linux2.0 里面的图形化界面编程工具
NOI Linux2.0 相较于早期的 Ubuntu16.04 测评系统有了很大改进,界面美观,而且提供了多种 C++ 编程工具,对于不熟悉命令的同学是一个很好的机会。
下面介绍一下code::blocks
新建空文件:
保存文件:
写代码、编译、运行:
也可以点击编译并运行。
什么是shell?
shell 就是命令解析器,对用户输入到终端的命令进行解析,调用对应的执行程序
用户在终端输入命令, 由 shell 命令解析器对命令进行解析(按照 $PATH
环境变量搜索命令), 解析成内核能够识别的指令, 然后由内核执行命令, 最后由终端显示命令执行的结果给用户。
注意:shell 在寻找命令的时候是按照 $PATH
环境变量去查找的,如果找到了就执行对应的命令,若找不到就报错。
- 查看 PATH 环境变量的值:
echo $PATH
- 当前系统所使用的 shell:
echo $SHELL
- 查看所有 shell:
cat /etc/shells
Linux目录结构
常用终端快捷键
Linux命令行
基础操作
查看文件和目录:ls
查看当前路径:pwd
清空终端:clear
切换目录:cd
自动补全:Tab
日期命令:date
创建、删除文件及目录命令的使用
命令 | 说明 |
---|---|
touch 文件名 | 创建指定文件 / touch {1,2,3}.txt 创建多个文件 |
mkdir 目录名 | 创建目录(文件夹) |
rm 文件名或者目录名 | 删除指定文件或者目录 |
rmdir 目录名 | 删除空目录 |
命令选项 | 说明 |
---|---|
-i | 交互式提示 |
-r | 递归删除目录及其内容 |
-f | 强制删除,忽略不存在的文件,无需提示 |
-d | 删除空目录 |
-p | 递归创建空目录 |
复制、移动文件及目录命令的使用
命令 | 说明 |
---|---|
cp | 拷贝文件、拷贝目录 |
mv | 移动文件、移动目录、重命名 |
查看文件
命令 | 说明 |
---|---|
cat | 查看小型文件 |
more | 分屏查看大型文件 |
less | 取more的反义词less加上后退功能 |
重点:time命令
用于测量命令的运行时间,还可以测量内存、I/O等的使用情况。
CPU资源的统计包括实际使用时间(real time)、用户态使用时间(the process spent in user mode)、内核态使用时间(the process spent in kernel mode)。
time ls /usr/bin/
real远大于user加上sys。
Mac系统VSCode配置C++编程环境
VSCode是一款非常轻量化的编程软件,启动速度快,跨平台,支持多语言。
Mac中安装C++一般都使用Xcode,安装XCode同时安装Clang,但是比较笨重,我们可以直接安装Clang:
xcode-select --install
然后执行:clang -v
验证 clang
安装是否成功。