Yurchiu's Blog

NOI Linux

Rorshach 2020-02-05, 17:23:50 1.2k 隐藏左右两栏 展示左右两栏

安装

转自NOI Linux的安装说明以及使用指南

安装环境windows。

  1. 首先从官网上下载一个CCF官方提供的Noi linux虚拟机以及安装文档 传送门

  2. 然后,安装一个VMware Workstation 14 Pro,这里给出网盘 然后一步步解压安装 记得安装的时候不要勾选"启动时检查产品更新",其他按照默认设置安装就好。

  3. 打开VMware Workstation Pro,然后用keygen.exe获取激活码将产品激活。

  4. 然后创建新的虚拟机,选择典型。

  5. 在下一个弹窗中,选择稍后安装操作系统。之后的弹窗中,操作系统选择Linux,版本选择默认的Ubuntu

  6. 选择名称与位置,名称和路径最好不要带中文。

  7. 硬盘容量选择20G,将虚拟机存储为单个文件。

  8. 最后的一个弹框,点确定就好了。

  9. 然后,点击左上角 编辑——虚拟网络编辑器,点击桥接模式这一栏,然后勾选桥接模式

  10. 然后右键单击安装的虚拟机,进入设置。

  11. 跳到CD/DVD,勾选使用ISO镜像文件,路径是你下载的NoiLinux安装包

  12. 点击网络适配器,并勾选右边栏的前两项。

  13. 最后关闭设置,启动虚拟机。

如果虚拟机一直黑屏,用管理员模式运行cmd,输入netsh winsock reset并重启电脑。

然后再按照安装文档里面写的做就可以安装好了。

如何解决安装过程中坑人的小窗口导致的无法按到“下一步”问题:按下 Alt+F7,同时按下鼠标左键,然后拖动窗口就行了

使用

改编自darkflames 的博客

进入终端

Ctrl + Alt + T​ 组合键。

目录

绝对目录:/Yurchiu/code/hello/hello.cpp

相对目录(当前在code目录中):./hello/hello.cpphello/hello.cpp

当前目录:./

父目录:../

注意linux没有扩展名这一个概念

文件操作的相关命令

ls

$ ls

显示当前目录的所有文件与目录。

$ ls [DIR]

显示指定目录的所有文件与目录([DIR]目录)。

cd

$ cd [DIR]

进入指定目录。

mkdir

$ mkdir [DIR]

创建子目录(新建文件夹)。

$ mkdir -p [DIR]

使用参数 -p 确保目录名称存在,不存在的就建一个。

mv与cp

$ mv [DIR] [DIR]
$ cp [DIR] [DIR]

mv是将一个目录或文件移动到另一个目录。

cp是将一个目录或文件复制到另一个目录。

rm

删除文件或目录,参数:

  • -i 删除前逐一询问确认。
  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r 将目录及以下之档案亦逐一删除。
  • -rf直接删除指定的目录或文件。

删除文件可以直接无参数执行,删除目录则需要使用-r

$ rm [参数] [DIR]

pwd

$ pwd

显示当前工作目录的绝对路径。

其他

  • cat [FILE] 输出文件内容。
  • time [PRO] 计时器,计算程序运行时间。
  • diff -bB [参数] 文件比对器。

命令行下编辑,编译,运行程序

  1. 编辑

    $ vim [FILE1]
    $ gedit [FILE1]
    
  2. 编译

    $ g++ [FILE1]   #输出文件默认为a.out
    $ g++ [FILE1] -o [FILE2] #输出文件为[FILE2]
    $ g++ [FILE1] -o [FILE2] -O2 # 开启O2优化
    $ g++ [FILE1] -o [FILE2] -Wall #显示所有警告建议开启
    
  3. 运行程序

    $ ./[FILE]
    
  4. 其他辅助工具

    $ time ./[FILE2] #统计运行时间
    $ diff -b [FILE3] [FILE4] # 比较文件差异,-b参数忽略行末空格
    

对拍

重定向到文件:./helloworld < input file > output file

将前一个程序的输出作为后一个程序的输入:./first | ./second

bat脚本版

@echo off
:loop
	数据生成器 > data.txt
	std程序 < data.txt > std.txt
	debug程序 < data.txt > debug.txt
	fc std.txt debug.txt
	if not errorlevel 1 goto loop
pause
goto loop

C++版

#include<bits/stdc++.h>
using namespace std;
#define cmd(cmds) for(int a=0;a<sizeof(cmds)/4;a++){system((cmds[a]));}

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() {
    cmd(build);
    for(int i=0;i<100;i++)
    {
        cmd(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

vim

参见文章 Vim 的使用





本文作者:Rorshach

本文链接:https://yz-hs.github.io/3c7dcf6a11e0/

版权声明:本博客中所有原创文章除特别声明外,均允许规范转载,转载请注明出处。所有非原创文章,按照原作者要求转载。


By Yurchiu.
其他物件杂物收纳
Hitokoto

Yurchiu 说,除了她以外的人都很强!嘤嘤嘤~~
博客信息
文章数目
158
最近更新
08-21
本站字数
350.6k
文章目录