Linux基礎(chǔ)教程
●前置系統(tǒng):任意Linux(不用NOI Linux也沒問題,我用的是deepin),如果沒有裝,而且你用的是win10,請(qǐng)看往期的洛谷日?qǐng)?bào):練習(xí)Linux?其實(shí)你的Win10自帶一個(gè)Ubuntu(https://www.luogu.org/blog/asfr/Run-Ubuntu-On-Windows10)。如果你用的不是win10,你可以裝雙系統(tǒng)或是虛擬機(jī),這里直接給地址,不再贅述(mac os的操作類似linux,僅提供win教程):虛擬機(jī)雙系統(tǒng)NOI Linux下載地址(https://jingyan.baidu.com/article/86112f135e584a273697876b.html)
●前排cqy,826755370,喜歡EXO,bigbang,BTS,ikon,nine percent,本命世勛。
引言
眾所周知,NOIP復(fù)賽使用的操作系統(tǒng)將逐漸變?yōu)镹OI Linux,湖南已經(jīng)取消了windows機(jī)房,我所在的江蘇今年似乎也要將win7+NOI Linux虛擬機(jī)換成NOI Linux,所以我們需要適應(yīng)Linux系統(tǒng),從而就有了這篇教程。
Linux基本操作
1.打開終端:直接用快捷鍵Ctrl+Alt+T即可。
2.用root(類似windows的administrator)權(quán)限運(yùn)行命令:在命令的最前面加上sudo,輸入完命令后輸入此時(shí)登錄的賬號(hào)的密碼,注意,輸入進(jìn)去的密碼是隱藏的,不會(huì)顯示明文或“*”,不要以為是電腦壞了。
3.終端內(nèi)打開自己用戶的文件夾(類似windows里你的用戶文件夾):cd ~
4.終端里打開某個(gè)文件夾:cd 路徑
5.終端里返回上一級(jí)文件夾:cd ..
6.~與/的區(qū)別:“~”放在路徑開頭表示的是自己的文件夾目錄,“/”放在路徑開頭表示的是根目錄,放在中間表示就和普通的“/”意義相同,如果路徑的開頭沒有這兩個(gè)符號(hào),那么表示將從你當(dāng)前所在的文件夾開始查找目標(biāo)文件(夾)。
7.安裝軟件:
(1)debian系(如debian,ubuntu,NOI Linux(這玩意兒能叫一個(gè)系統(tǒng)?),deepin,elementary OS):sudo apt-get install 軟件名
(2)arch系(如arch Linux,manjaro):sudo pacman -S 軟件名
(3)Redhat系(如Redhat,centos):sudo yum install 軟件名
8.刪除文件:rm -rf 路徑(這個(gè)指令爽歪歪,手動(dòng)滑稽:rm -rf /)
9.以上就是我最常用的,其他的都不常用啊…因?yàn)長(zhǎng)inux本身也有圖形界面,所以復(fù)制粘貼,新建文件(夾),重命名之類的操作就不講了。我講路徑和cd是因?yàn)榫幾g時(shí)要用到,講安裝軟件那是必須的,講rm是為了某個(gè)好玩的指令,如果覺得有什么需要添加的請(qǐng)指出。
使用Linux編寫c++程序
IDE
(1)北航的雞肋guide:這個(gè)NOI官網(wǎng)上有詳細(xì)的教程N(yùn)OI(http://download.noi.cn/T/noi/GUIDE_v1.1.pdf)的教程,但是我不喜歡用這個(gè)弱智IDE。
(2)我認(rèn)為比較好用的anjuta:
?、俅蜷_之后先選擇“create a new project”。
?、谥髲棾鲆粋€(gè)窗口,上方選擇“c++”,里面選“通用c++”,之后彈出的窗口全部點(diǎn)擊“確定”或“應(yīng)用”。
?、廴缓笪覀儊淼较聢D的頁(yè)面,左側(cè)按照我的目錄樹,打開main.cc,記得把拓展名改成“.cpp”,NOIP的c++源文件的拓展名必須是cpp?,F(xiàn)在我們看到了hello,world的代碼,直接在里面修改即可,寫完之后按F9編譯,F(xiàn)3運(yùn)行。
(3)NOI Linux不自帶的Geany、Code::Blocks等:因?yàn)椴蛔詭В荚囉貌涣?,所以我也不做使用講解。
文本編輯器
無論你是用什么編輯器(vim除外),我都建議你在目錄下新建一個(gè)cpp文件。
雙擊該文件,默認(rèn)使用gedit打開的,寫完代碼后,你是不是發(fā)現(xiàn)賊丑?
(2)emacs(業(yè)界有這樣一句話:“emacs是神的編輯器,vim是編輯器的神?!保?/p>
?、傥覀円脀indows中右擊選擇打開方式的方法,使用emacs打開文件(你也可以設(shè)置默認(rèn)打開方式),我們選擇GUI版本,如果選傳統(tǒng)版本的話,你還不如用vim。
②沒什么想講的了,直接放張圖吧,與gedit相比,emacs支持代碼補(bǔ)全,據(jù)說有許多強(qiáng)大的功能,但是我是vim選手,不是emacs選手,所以關(guān)于emacs的騷操作,請(qǐng)自行百度吧。
(3)vim,我用的就是vim,但是vim的教程都能寫十篇文章,這里我并不想寫啊,而且當(dāng)初我聽信采取他人的蠱惑建議,學(xué)vim用了一個(gè)多星期…直接扔一個(gè)鏈接吧:vim教程。需要注意的是,NOIP不提供vim的插件,所以不能過度依賴vim的插件,但是可以改.vimrc,NOIP發(fā)題之前給你的時(shí)間已經(jīng)足夠你寫.vimrc了。下面fa♂一張我的vim:
等一等,我們寫完代碼了,該怎么編譯?
①先打開終端,在終端里打開你的源代碼所在的目錄。
?、诮又诮K端里輸:g++ 你的代碼文件名.cpp -o 隨便填(如果你用了cmath,那么你需要-lm,開優(yōu)化你需要-O0,-O1,-O2,-O3,想用gdb調(diào)試要開-g0 -g1 -g2 -g3,建議使用-g2)。
③然后我們?cè)诮K端里輸入:./"隨便填"(就是編譯的時(shí)候你自己填的)。這樣就亦可賽艇辣!
終端里使用gdb調(diào)試
(1)首先用終端在存放編譯好的文件的目錄下運(yùn)行:gdb ./你的可執(zhí)行文件名(編譯時(shí)必須加了-g選項(xiàng))
①設(shè)置斷點(diǎn):break(或b) 行號(hào)
?、诓榭醋兞康闹担簆 變量名
③下一步(跳過函數(shù)):next(或n)
?、芟乱徊剑ú粫?huì)跳過函數(shù)):step
?、萏霎?dāng)前函數(shù):finish
⑥查看斷點(diǎn)信息:info b
?、呃^續(xù)運(yùn)行:c
⑧開始運(yùn)行:run
?、釀h除某個(gè)斷點(diǎn):delete(或d) break 斷點(diǎn)號(hào)(如果沒有則刪除所有的斷點(diǎn))
⑩刪除某行斷點(diǎn):clear 行號(hào)
(3)退出gdb
輸入quit,回車之后再輸入y,這樣就退出了。
(4)一點(diǎn)建議
不要過度依賴gdb,養(yǎng)成靜態(tài)查錯(cuò)的習(xí)慣,NOIP考場(chǎng)上也有過gdb出鍋的先例:gdb出鍋。
(5)gdb詳細(xì)教程
對(duì)拍
1.除了待測(cè)程序,你還需要自己寫一個(gè)數(shù)據(jù)生成器和暴力程序,如果要得到一個(gè)小于n的數(shù),可以用rand()%n得到。
2.你要寫一個(gè)shell腳本,我們將其命名為judge.sh(其他的名字也可以,但是拓展名必須是.sh),將它與那三個(gè)程序放在同一個(gè)目錄下,它的模板是下面這個(gè)樣子的(#在shell里表示注釋):
#!/bin/bash#相當(dāng)于c++的頭文件,背下來就對(duì)了
whiletrue;do
./makedata>in.txt#數(shù)據(jù)生成器輸出數(shù)據(jù)重定向到in.txt
./wait_judge<in.txt>out.txt#待測(cè)程序重定向輸入輸出
./check<in.txt>right.txt#正確(暴力)程序
ifdiffout.txtright.txt;then#比較兩個(gè)文件
printfAC#正確輸出AC
else
printfWA#錯(cuò)誤輸出WA
#catout.txtright.txt#顯示兩個(gè)文件
exit0#退出
fi#結(jié)束if
done#結(jié)束while
3.我們打開終端,進(jìn)入到保存對(duì)拍程序的目錄,輸入:sh ./judge.sh,然后回車即可。
贈(zèng)品——我該如何在Linux下頹廢?
1.slay.one
2.linux版的網(wǎng)易云音樂了解一下,steam for linux了解一下。
3.上ab站使人身心愉悅。
4.wine下的TIM、QQ了解一下(強(qiáng)勢(shì)安利一波deepin、完美wine模擬)。
完結(jié)撒花!★,°:.☆( ̄▽ ̄)/$:.°★。
本文發(fā)布于洛谷日?qǐng)?bào),特約作者:Chanis
原文https://www.luogu.org/blog/Chanis/Linux
聯(lián)系客服