强行转Linux,开始以为会很不适应,其实还好,换汤不换药

本文只讲基本操作,足够让你愉快的打代码,想飞上天的自行百度,或找其他大神(友链)

Update 6/20:由于写得太烂被学长爆踩了一顿

直接复制粘贴学长的评论(TAT我太菜啊啊啊)

1. 文本编辑器(GEdit)并不是唯一编辑代码的工具, Linux下两个神仙编辑器vim/emacs的coding效率都极高
2. 写代码一般要用等宽字体.
3. ls 列出的并不是所有文件和文件夹. 隐藏文件并不会列出, 要列出需要加参数.
4. 不带参数调用 cd 是返回主目录 ~ 而不是返回上一级. 返回上一级用 "cd ..", 返回上一次访问的目录用 "cd -".
5. Ctrl+Z根本没有结束这个进程, 只是暂停了而已. (不信您试试打个fg上去看看能不能恢复运行) 想结束应该用 Ctrl+C. Ctrl+Z按多了后果您可以自己想象一下(逃

----By rvalue

但是我还是要补(扯)两句,一是神仙编辑器找不到也不会用,个人感觉文本编辑器比guide好用

我不会隐藏文件夹所以ls对我来说就是全部文件(人菜烦恼少)

平常我就是在主目录或一层目录下活动所以cd我一直是那么认为嗒不要被我误导

gdb是某教练告诉我最好不要用的(以及某本书)

我我我我我错错错错错了了了了了-----

【多图预警】

首先没有了Dev C++,曾经被嘲笑的Windows下的笔记本改个名叫文本编辑器,就成为了唯一的工具

这基本上是最终形态了。在左下角菜单里找到文本编辑器,打开它。点击左上角“文本编辑器”的三角号。选择首选项。

各项设定根据喜好自己调整。但是最关键的是插件那一项。

先把这两项都打开,再关闭Python那一个,这时候你的文本编辑器下面可能就会出现了终端。

Terminal,或者就是中文“终端”二字。

这会方便很多。然而有的系统下文本编辑器并没有“终端”这个插件,那么你只好从全部应用中找到终端了,所有操作都一样。

打代码的时候文字都是没有颜色的,可以在右下角“纯文本”那里改为选择“C++”,关键字就会出现不同颜色了。

另一个处理办法是在你打完第一行include之后就保存一下,扩展名为".cpp",然后就会自动进入C++模式了。

接下来假如你已经打完一个代码。现在需要编译运行。

首先,Ctrl+S保存文件,注意:起名是结尾要带“.cpp”,否则无法编译。以abc.cpp为例。

在终端输入“g++ abc.cpp”即可编译。如果没有任何其他信息出现,则编译成功,否则会弹出错误信息,和Windows下一样。

注意:每次修改代码都要重新(Ctrl+S)保存,重新编译。

编译之后你的代码会被转化为"a.out"的程序。在终端输入"./a.out"即可运行。其中“./”表示当前目录。(后文有解释)

注意:与Windows不同,程序运行时仍然可以继续输入,所以一个死循环代码会表现出Windows下读入未完毕的性状。

在终端下,按↑↓键可以浏览历史指令,这样就不用每次都输入完整指令了。

如多数情况下我们都是编译->运行->改代码->编译->运行->...,所以编译和运行的指令按两下↑就出来了(多调,你会熟练的)

在终端下,按Tab可以自动补全单词,如你需要"g++ abc.cpp",那么你只需要输入"g++ ab",然后按Tab,整条指令就会自动补全。

然而当你取了太多相同的文件名,Tab补全不知道该帮你补成那一个,那你就。。。。。。(及时删文件,或自己手动补全)

其他可能用到的终端指令:

  ls 列出当前目录下所有文件。

  其中蓝色的是文件夹。

  cd 文件夹名 :进入文件夹目录。因为你的所有操作都只能在当前目录下进行所以你得先进入文件夹再动里面的文件。

  cd:返回上一级目录。

  rm 文件名:删除指定文件

  mkdir 文件夹名:建立一个文件夹

  kill -9 -1:结束所有进程,相当于保存文件的重启。用于结束崩溃的程序。(我才不会试一遍再给你截图)

  然而如果你的文本编辑器没有死掉而你想结束目前程序,按(Ctrl+Z)即可,对!这个东西不是结束读入,而是结束程序!

  在编译时也有些可以一用的操作。

  g++ abc.cpp -o b.out  --------编译abc.cpp并且将编译出的程序更名为b.out(默认为a.out)

  g++ abc.cpp -g   --------编译并为gdb调试做准备。(最好不要用,在文末讲解)

重头戏:接下来再说一说Linux下的对拍

  数据生成器,标程,错误代码和它们的freopen完全不变,而对拍器有一点点变化。

 #include<cstdio>
#include<cstdlib>
using namespace std; int main()
{
int i;
for (i=;i<=;i++)
{
system("./make");
system("./ab1");
system("./ab2");
printf("%d : ",i);
if (system("diff ab1.out ab2.out"))
{
printf("WA\n");
return ;
}
else printf("AC\n");
}
return ;
}

对拍器代码

  只不过是运行时system函数调用时多了个“./”表示当前目录,而文件比较的cd改成了diff而已。

  diff和Windows下的fc一样,相同为false不同为true,没区别。

  然后运行对拍器就可以了。

  更棒的是不像Windows随便输出“正在比较”什么的一堆,Linux下除非文件不同,diff什么也不会输出。

  它只会乖乖地输出你代码里写的“AC”什么的,看着奇爽。

对拍到此结束。

接下来内容,阅读需谨慎:变态的gdb调试

为什么说最好不要看它呢?因为它太好用了,可能会让你产生依赖,削弱你的直觉,降低你调代码的能力。

各类比赛都支持使用,当你实在调不出来时再用。反正现在我是不敢总用它了。

该提醒的提醒完了,接下来自己珍重,我要开始讲了。

gdb调试的程序编译时需要在后面加上-g,如g++ abc.cpp -g

运行时在程序名前加上gdb 如gdb ./a.out

然后它会弹出一大堆版权之类的玩意

接下来是常用指令:

r:开始运行程序,区别于c。

b sth:设置断点,当程序每次运行到断点时会暂停。sth可以是数字表示第几行,也可以是一个函数名,相当于函数声明的第一行。

cl sth:清除断点,和b完全相同。当只输入cl而没有参数时会清除第一个。

c:使暂停的程序继续运行(到结尾或者下一个断点),不能用于开始程序所以你仍然需要记住r。

p sth:输出相应内容。sth可以是变量,数组(不能太大),结构体,以及vector,priority_queue,map等系统自带的数据结构。

disp sth:和p一样,但是disp会在程序每次暂停时输出相应内容。我不会清楚disp,会的大神教教我。

wa sth:和disp一样,但是wa会在每次相应变量发生变化时暂停程序,无需断点。

cond sth (条件):cond是针对断点的,sth是断点的编号,条件是C++语句,cond会使程序运行到断点时判断,满足条件则暂停,否则继续。如cond 1 i==5

按(Ctrl+Z)可以退出gdb模式。而修改完代码仍需要带-g的再次编译。

用-g编译出的也默认是a.out,也仍然可以用./a.out正常执行而不进入gdb模式。

还有一些也很神奇的指令,不再讲了,本身就不建议用。我也不会,会的大神可以补充。

换系统时的我什么也不会,花了一天多上网搜+自己探索,我现在所列举的肯定也不全,等待你们的补充。

尝试,探索,不正是个其乐无穷的过程么?

Linux下基本操作的更多相关文章

  1. linux下MongoDB客户端shell基本操作

    MongoDB 是一款NoSql数据库,没有固定的模式,即同一个集合中的不同文档结构可以不同,如:第一条记录{name:”xiaoming”},第二条记录:{name:”xiaoli”,age:15} ...

  2. Linux下SVN安装与基本操作

    1.安装svn linux下通过yum安装svn yum -y install subversion 本地Windows系统安装TortoiseSVN 2.配置 建立版本库目录 mkdir /home ...

  3. Linux下MySQL 数据库的基本操作

    1. 创建数据库相关命令: 首先,下载MySQL相关软件包:aptitude install mysql-server/mysql-client MySQL中的root用户类似于Linux下的root ...

  4. Linux下vim基本操作和清空文件内容的常用方法

    以前都是用的很土的办法,大概有以下几种.1.直接删除,创建一个新的同名文件(这种方法的弊端是有可能这个文件带着权限或者是属性,那么你新建这个文件后有可能会导致权限不正确或者丢失属性).2.使用vim编 ...

  5. 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)

    Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  6. 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)

    Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  7. linux下的一些操作(持续更新)

    文件操作 创建文件夹: mkdir 文件夹名称 查看当前目录的文件夹及文件:ls 参看当前文件夹下的所有文件及信息: ls -l 删除空文件夹:rmdir 文件夹名称 删除非空文件夹:rm rf 文件 ...

  8. linux 下 jdk+tomcat+mysql 的 jsp 环境搭建

    JDK 在 linux 下安装 1.          把安装文件放在 /opt 下,并执行 [root@localhost opt]# ./jdk-1_5_0_06-linux-i586.bin 并 ...

  9. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

随机推荐

  1. .NET成人礼 | 还记得20年前一起拖过的控件吗?

    本文是MVP Ediwang写的回忆一个80后的拖控件的感悟,与君共勉: 每一代人都有记忆里的味道.煤球炉.黑白电视机是属于父母的记忆.而“拖控件”式编程,启蒙了无数像我这样的80后(嗯,89也算80 ...

  2. 常见过滤器表格整理,Date,time过滤格式表;常用标签表

    一.常用过滤器表 二.date.time过滤器参数表 三.模板常用标签 四.模板标签示例 ①if,for ②url解析标签 ③with缓存标签 ④autoescape的使用 ⑤注释标签(多行注释)一般 ...

  3. Spring Boot 2.X(七):Spring Cache 使用

    Spring Cache 简介 在 Spring 3.1 中引入了多 Cache 的支持,在 spring-context 包中定义了org.springframework.cache.Cache 和 ...

  4. .NET GC垃圾回收器

    GC垃圾回收器简介 全名: Garbage Collector 原理: 以应用程序的根(root)为基础,遍历应用程序堆(heap)上动态分配的所有对象,通过识别它们是否被引用来确定哪些对象是已经死亡 ...

  5. Mapper

    public static T MapTo<T>(this object obj) { if (obj == null) return default(T); Mapper.CreateM ...

  6. Kubernetes网络插件Flannel的三种工作模式

    跨主机通信的一个解决方案是Flannel,由CoreOS推出,支持3种实现:UDP.VXLAN.host-gw 一.UDP模式(性能差) 核心就是通过TUN设备flannel0实现(TUN设备是工作在 ...

  7. 《深入理解Java虚拟机》-----第13章 线程安全与锁优化

    概述 在软件业发展的初期,程序编写都是以算法为核心的,程序员会把数据和过程分别作为独立的部分来考虑,数据代表问题空间中的客体,程序代码则用于处理这些数据,这种思维方式直接站在计算机的角度去抽象问题和解 ...

  8. USART_FLAG_TXE和USART_FLAG_TC

    在串口数据发送操作中,代码一般是这样写的: void USART_SendByte(USART_TypeDef* USARTx, uint8_t Data) { while(USART_GetFlag ...

  9. Redis集群与高可用性技术小结

    客户端分片,这种方式需要实现特定的客户端,需要手工配置redis实例并根据算法进行访问,对于redis实例的增减,调整灵活性很差,一般不推荐. 代理分片,常见的有Twemproxy架构(豆瓣创建了co ...

  10. 小程序预览pdf文件

    有个业务需求,需要在小程序查看客户已开的发票 发票地址: https://www.chinaeinv.com/p.jspa?cxxxxxxxxxxxx 刚开始是想利用webview当作外链进行跳转访问 ...