NOI Linux 使用
转载自 这里
一、Linux 的基本操作(命令行)
-
打开命令行
在 Noi Linux 中可以使用快捷键
Ctrl + Alt + T
打开命令行终端 -
Linux的目录
Linux 是没有 Windows 下硬盘分区的概念的,所有设备均会被挂载到一个统一的文件系统,Linux 下的目录有两种:
-
绝对目录:
相对于文件系统的根目录
/
来定位文件,如:/etc/apt/source.list
,/var/www/
-
相对目录:
相对于当前工作目录而言,比如工作目录位于
/etc
,/etc/apt/source.list
也可以表示为apt/source.list
或./apt/source.list
Linux 下一个核心的思想就是一切皆文件,是没有扩展名这一个概念的,有时文件名被写作
xxx.xxx
也只是为了方便标识或分隔,并不被程序或者操作系统分别处理同时还有一些特殊的路径表示,比如可以用
./
表示当前目录../
表示父目录 -
-
文件操作的相关命令
-
ls
显示当前目录的所有文件与目录: $ ls 显示指定目录的所有文件与目录: $ ls [DIR]$ ls /etc $ ls /var/www
-
cd
进入指定目录
$ cd [DIR] $ cd /etc$ cd app/src $ cd ..
-
mkdir
创建子目录(新建文件夹)
可以使用参数
-p
确保目录名称存在,不存在的就建一个$ mkdir src $ mkdir -p /home/darkflames/test
-
mv & cp
mv
是将一个目录或文件移动到另一个目录cp
是将一个目录或文件复制到另一个目录$ mv app/src /etc/app/src $ cp app/src /etc/app/src
-
rm
删除文件或目录,参数
-i
删除前逐一询问确认。-f
即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r
将目录及以下之档案亦逐一删除。
删除文件可以直接无参数执行,删除目录则需要使用-r
通常我们可以直接使用
-rf
参数直接删除指定的目录或文件$ rm -rf app/src $ rm -rf /home/darkflames/app
-
pwd
显示当前工作目录的绝对路径
-
二、如何写代码
- 使用 NOI Linux 自带的 guide
- 使用 emacs/vim/gedit 命令行编译,同时可以使用 gdb
命令行下编辑,编译,运行程序
-
编辑
$ vim [FILE] $ gedit [FILE] #建议使用这句
-
编译
$ g++ code.cpp #输出文件默认为a.out $ g++ code.cpp -o code #输出文件为code$ g++ code.cpp -o code -O2 # 开启O2优化 $ g++ code.cpp -o code -Wall #显示所有警告建议开启
-
运行程序
$ ./code $ ./a.out
-
其他辅助工具
$ time ./code #统计运行时间 $ diff -b test.out test.ans # 比较文件差异,-b参数忽略行末空格
对拍
CPP
#include<bits/stdc++.h>
using namespace std;
#define _DO_CMDS(cmds) for(int _index = 0; _index < sizeof(cmds) / 4; _index++){ system((cmds[_index])); }
char* build[] = {
"g++ test.cpp -o test",
"g++ gen.cpp -o gen -O2",
"g++ std.cpp -o std -O2"
};
char* genData[] = {
"./gen > data.in",
"./std < data.in > data.ans"
};
int main() {
_DO_CMDS(build);
for(int i = 0; i < 100 ; i++) {
_DO_CMDS(genData);
printf("CASE: %d", i);
if(system("./test < data.in > data.out") != 0) {
printf("RE\n");
break;
}
else if(system("diff -b data.out data.ans")) {
printf("WA\n");
break;
}
else printf("AC\n");
printf("#####################################");
}
return 0;
}
Shell
#!/bin/bash
g++ test.cpp -o test
g++ std.cpp -o std -O2
g++ gen.cpp -o gen
i=1
tot=100
while [ $i -le $tot ]; do
./gen > data.in
./std < data.in > data.ans
./test < data.in > data.out
if [ $? -ne 0 ]; then
echo -e "CASE $i: RE"
break
elif diff -b data.ans data.out ; then
echo -e "CASE $i: AC"
else
echo -e "CASE $i: WA"
break
fi
let i++
done
作者:I_like_magic
出处:https://www.cnblogs.com/I-like-magic/
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。
出处:https://www.cnblogs.com/I-like-magic/
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效