{eval=Array;=+count(Array);}
分享好玩科技,探索未知世界。大家好,我是drinkingcode。針對如何學習Linux編程,分享一下作為過來人的經驗,希望可以幫助到大家。
如果要在Linux下進行編程,那么首先我們需要有Linux操作系統的環境。通常的做法是下載并安裝VMware,然后在VMware下安裝Linux操作系統的發行版,比如Ubuntu,CentOS等。當一切安裝就緒后,你就擁有一個Linux的編程環境了。如果大家需要相關資料,可以關注私信我,百度網盤分享給大家。(僅供個人參考學習)
掌握C語言
環境搭建好之后,接下來我們需要掌握一門編程語言。由于在Linux下提供的系統API都是針對C語言的,所以想要進行Linux編程,就需要掌握C語言的基本使用。針對C語言的學習,給推薦大家一本《C和指針》
熟悉Linux命令
在Linux下編程,很多時候都是通過命令來進行操作的,ls命令,cd命令等。所以掌握常用 的Linux命令之后,你就能更方便地去使用Linux系統。對于Linux命令的掌握,大家只需要選擇一些常用的命令來進行學習就可以,至于平時不常見的命令,到時遇到再去選擇性學習。在這里推薦一本學習Linux命令的書籍《鳥哥的Linux私房菜》基礎學習篇
熟悉vim
有了前三步的基礎,接下來,我們就可以手動來寫C語言了。在Linux下,C語言的編輯器為vim。但是想要在vim上編寫代碼,就需要了解vim基本命令的使用,因為vim的使用使用vim命令來進行交互的。當我們熟悉了vim命令的使用后,我們就可以自由自在地在Linux下編寫我們的C語言代碼啦,然后用gcc編譯器編譯我們寫好C語言代碼的文件,就可以得到可執行程序,運行可執行程序,就可以看到輸出結果。
熟悉系統API
在入門階段,我們掌握基本開發Linux程序的流程。但是在入門階段中,我們編寫的應用還不具備太大的實用意義,因為我們編寫的程序并沒有借助系統的API。所以在進階階段,我們需要做的就是借助Linux系統API,以便我們編寫的應用發揮更大的威力,更具有實用的價值。
在Linux系統中,比如讀取一個文件的內容或者把服務器建立一個連接等,都需要調用Linux系統API才能實現。如何掌握這些API呢?在這里,推薦搭建閱讀《UNIX環境高級編程》,里邊介紹了文件I/O,進程間通信等知識。這樣我們就可以借助系統API讓應用發揮更大的價值。
掌握Makefile
當我們編寫一個程序的時候,為了讓其層次更清晰,通常會把不同部分的程序放在不同的文件或文件夾中,但這些文件之后又是有相互依賴關系的,如何在gcc編譯時告知他們之間的順序呢?此時,就需要我們掌握Makefile的基本語法,然后用Makefile來告知gcc如何編譯。在這里推薦一本《GNU make》。
以上就是我說認為在Linux編程學習中幾個比較重要的節點,予以羅列出來,希望對于想要學習Linux編程的同學有一定的借鑒作用。如果你喜歡我的文章或對你有幫助,歡迎點贊轉發!
關注我,我是drinkingcode,分享好玩科技,探索未知世界!
其實和Windows下面編程流程差不多,唯一的區別就是你需要先熟悉一下Linux環境(畢竟沒有Windows使用起來那么方便),其次,還有就是你需要熟悉一下常用的shell命令及vim等編輯器,下面我簡單介紹一下:
熟悉常用的Linux Shell命令:這個是使用Linux的基礎,像常見的ls,cd,find,mdkir,rm,top,grep,sed,awk,su等,簡化版的Linux就只Terminal終端而已,如果你連基本的命令都不會,就不要想著還能操作Linux:
熟悉一下vim,emacs等編輯器的使用,可能在迷你版的Linux下,就只是一個vim編輯器,你所有的編程工作都只能在這個環境下進行,wq!命令,這個你會經常用到,如果是桌面版的,可能還有相關IDE可供使用:
最后就是編程了,這個根據自己的編程語言安裝對應的包或編譯器就行(gcc,java,python等),無非就是vim編輯,命令行編譯,調試運行而已(和windows平臺可能會有差異),開始使用起來不舒服,后面熟悉后,也就沒啥了,當然,有些IDE是跨平臺的,也有Linux平臺的版本,使用起來和windows的差異不會太大:
就分享這么多吧,可能有些亂,初學編程的話,如果對Linux不熟悉的話,建議還是在Windows環境下面進行,使用起來能更方便一些,熟悉后,可在Linux下面進行,當然,直接在Linux下面也行,不過有個熟悉的過程,建議初學者,還是下載一個桌面版的Linux,不至于直接一個終端命令行,使用起來很迷茫,不知所措,以后很多服務器都是基于Linux平臺的,Linux的應用也很廣泛,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言。
在Linux下編程那么必定要使用Linux的命令行終端vim了,要熟練掌握各種vim命令。
在Linux下打開命令行終端:Ctrl +Alt + T
瀏覽目錄或者文件:ls 后面可以加很多參數,-l 、-a、-h等
進入某個目錄:cd + 路徑
返回到上層目錄:cd ..
切換到上次cd 進入的目錄:cd -
創建一個文件:touch
a.c
創建一個目錄:mkdir mydir
創建和刪除目錄
創建一個文件
復制 cp
移動文件或修改名字(mv)
創建一個文本文件并進入編輯模式:vi
filename.txt
vim三種模式之間的轉換
1) 命令行模式
esc: 進入命令行模式
yy:復制當前一行
nyy:從當前行開始復制n行
:3, 6yy:從第三行復制到第六行
dd:刪除當前行到剪切板
ndd: 刪除n行到剪切板
p:在光標的下一行粘貼
P:在光標的上一行粘貼
u:撤銷
Ctrl +r:反撤銷
2) 插入模式(編輯模式)
i :進入插入模式光標之前插入
a:光標之后插入
I :行首插入
A:行尾插入
o:光標下一行插入
O : 光標上一行插入
s:刪除光標所在字符并進入插入模式
S:刪除光標所在行并進入插入模式
r:修改光標所在字符
R:替換光標所在行,直到按下esc鍵結束
0:光標移動到行首
$:光標移動到行尾
gg: 光標移動到文件開頭
G: 光標移動到文件結尾
cc:刪除當前行并進入插入模式(刪除的內容放在剪貼板中)
yw:將光標所在單詞copy到剪貼板
3) 底行模式
Shift +::進入底行模式
:wp:保存并退出
:q:不保存退出
:q!:強制退出
c語言基礎
要熟悉基本的C語法,數據類型、函數、指針等。
文件IO
要掌握文件IO相關的系統調用函數,對文件進行打開、關閉、讀寫等操作。
數據結構
熟練掌握順序存儲與鏈式存儲等存儲結構:鏈表、隊列、棧、二叉樹等。
進程和線程
理清進程和線程的區別,掌握進程和線程的創建方法,熟練運用線程和進程相關的系統調用函數。
網絡編程
理清TCP/IP協議,會使用socket創建網絡套接字,掌握網絡通信的方法,熟悉各種服務器模型。
Linux下編程其實非常方便,Linux下了有完整的編輯、調試,編譯,打包一棧式工具。
當然需要有前提熟悉linux常用命令、熟悉shell環境、能適應純命令行終端的使用(Xwindows環境不咋成熟,不建議)。然后蟲蟲給大家說說Linux編程的一些技術:
Vim:vim是最常用的Linux編輯工具和linux IDE環境的母體,使用vim配合一些插件完全可以實現現代IDE環境下的絕大多數功能。
推薦組合:
主題:molokai(github:/tomasr/molokai),vim-colors-solarized
插件:YouCompleteM自動補全(github:/Valloric/YouCompleteMe)
瀏覽目錄結構的插件nerdtree(github:/crooloose/nerdtree)
其他有益插的vim工具推薦:
vim-surround:刪除、修改和添加 括號、引號、XML操作。
matchit:用%在字符間跳轉。
tComment:快速注釋、反注釋代碼。
tabular:對齊。
snipmate.vim:代碼片段。
vim-easymotion:定位。
vim-instant-markdown: Markdown文檔時預覽。
emacs是*unix體系最大強大的編輯器和操作系統(幾乎可以做任何事情)
emacs常用的插件推薦
spacemacs vim和emacs功能的優勢集合;
dracula-theme 很靚的主題;
更多的可以看github的這個倉庫awesome-emacs(github :/emacs-tw/awesome-emacs)
linux有強大的調試工具gdb。GDB可以讓你調試一個程序,包括讓程序在你希望的地方停下,此時 你可以查看變量,寄存器,內存及堆棧。更進一步你可以修改變量及內存值。原生支持c、c++、Fortran,rust、golang,通過插件可以支持其他語言。比如基于瀏覽器的擴展gdbgui(github:/cs01/gdbgui)
make是*nix下最強大的鏈接和編譯工具,基于Makefiles的配置可以實現對大規模項目的自動編譯和編譯,可以大家減輕開發人員的編譯勞動。
screen、Tmux和byobu等工具也是碼農們必不可少的工具,這些蟲蟲文章中有過專門介紹,在此不再贅述。
基于需求和碼農的語言環境,Linux下也有大量的工具來滿足需求,這也是蟲蟲文章涉獵的領域之一,關注蟲蟲可以學習并且接受蟲蟲最新文章介紹。
由于某些特殊的歷史原因,國內開發者還是以Windows系統為主,這跟國外在Unix哲學下成長起來的開發者群體不一樣。
不過這兩年Linux在國內開發者群體中的歡迎程度越愛越高,要知道連Windows10都有了Ubuntu/Debian/fedora等Linux發行版作為Windows10的Linux子系統,那么想要在Linux下編程,需要掌握哪些知識呢?
二十年前你在Linux上學習的編程知識,基本上現在還能用,不過五年前你在windows上學習的編程知識,也許大部分現在已經用不了了。
絕大多數服務器環境都是運行Linux操作系統,大部分開發者寫的程序,最終都是要在Linux服務器上運行的;絕大多數的開源軟件會優先適配Linux平臺;很大比例的第三方庫只會登陸Linux平臺。Linux開源、免費、高效,Linux能夠給你最大的可能性,Linux給了你一大堆最為原始的工具,你可以用這些工具組合成專屬于你自己的高效工具庫。
Linux下各種開源環境應有盡有,各種shell拿來就可以用,跟Unix保持了很好的血緣關系,Lisp/Python/Java/C/C++/PHP/Ruby等各種各樣的環境拿來就可以用。
visual studio是銀河系最好的繼承開發環境,但是Windows卻沒有因此成為最強的開發者生態。
想要在Linux下熟練編程,你必須要學很多專業技能。
熟悉Linux命令
Linux的精華是命令行,你必須熟練使用命令行進行日常的工作、學習,Linux上有各種各樣的shell命令,bash、sh等命令應有盡有。
你還得熟悉在Linux上通過命令行安裝軟件、搭建開發環境、完成文件管理,對于代碼調試、編譯等等。
熟練使用vim/emacs
在Linux編程世界里,不會使用emacs和vim是可怕的。
emacs號稱是“神之編輯器”,vim則被稱為“編輯器之神”,這兩款文本編輯器都是Linux下開發者的重要編程工具,豐富的插件讓這兩款編輯器非常強大。
看一些Linux的書籍
《鳥哥Linux私房菜》、《深入理解Linux內核》、《Unix環境高級編程》、《Unix網絡編程》、《Linux程序設計》、《深入理解Linux內核》等,這些都是Linux/Unix下的經典書籍。
在Linux下編程不需要什么特別的技術,你只需要掌握Linux操作系統的使用方法,然后在里面安裝你所需要編程語言的IDE即可。
Linux系統下是兼容大部分編譯軟件的,比如Java語言應用最廣泛的是eclipse,它具備Linux版本,而且用起來和Windows下差別不大。
Linux生態圈還有一款廣為人知的可以寫代碼的軟件,那就是vim,如果你在Linux下跑過C語言程序,那一定用過vi這個指令。它類似于Windows上的notepad,功能強大。
Linux入門,個人推薦一本書:《Linux鳥叔的私房菜》。
一、熟悉Linux基本操作和系統管理;
二、熟悉vim基本操作和man命令;
三、找一本厚點的C語言教材(比如<c語言程序設計第二版>),精讀+實現每一個例子,做每一個習題;
四、熟悉計算機基礎
1.買一本二手<深入理解計算機系統(csapp)>(影印或原版),精讀+實現每一個例子,做每一個習題;
2.看網課cmu的15-213,做每一個作業,完成全部六個lab;
五、補課數學課
微積分、線性代數、概率和數理統計
離散數學
六、算法
1.買一本clrs<算法導論intro algorithms>(影印或原版),精讀+實現每一個例題+做每一個習題
2.上網課,cs61b或Princeton的algorithms I&II
七、操作系統
1.買二手書<操作系統概念><現代操作系統><操作系統:原理和實現>(影印或原版),粗讀前兩本,最后一本精讀+做每一個例子和習題。
2.上網課MIT6.828,做每一個作業,完成全部6個lab。
八、數據庫
參照七。
九、網絡
參照七。
十、云計算
1.直接上網課分布式系統
2.直接上網課cloud computing(以及advanced)。
----
十一大數據方向(線性代數和統計高分)
上網課
十二machine learning方向(線代和統計高分)
網課(推薦Stanford cs229+230,Andrew Ng吳恩達)
Linux是一個開源的操作系統,它最初僅僅只是芬蘭Helsinki大學的一位年輕學生Linux Torvalds作為愛好開發的。Linus對Minix(一個小型的UNIX系統)很感興趣,并且決定開發一個比Minix更好的系統。
Linux下編程可分為Linux C語言編程和Linux底層內核編程
1.Linux之io系統編程
2.Linux
3.Linux
4.Linux
1.Uboot原理和編程
2.Kernel
3.Linux
編程很多技術,技能基本類似,不完全依賴于操作系統,比如WEB編程。局部區別在于工具,不過工具很多也跨平臺了。差別更多是系統調用層面,這個層面如果準尋POSIX也是兼容的。
要做什么如,運維:Shell,Python;WEB開發:HTML,CSS,JavaScript,數據庫(MySQL,MongoDB);服務端:Java,Python;游戲:unity,C++,Javascript等等。
如類似編輯工具:vim/vi vscode,Atom,Sublime text 其中一種,還有一些測試、性能分析工具等等。
在Linux下進行編程需要什么技術?看來你是沒有接觸過Linux操作系統啊。
很多人想到Linux就想到什么呢?想到黑乎乎的命令行?一堆自己完全沒有接觸過的命令,然后想到自己一臉懵逼的樣子?
哈哈哈哈,你實在是想得太多了。
首先你需要選擇一個正確的發行版,或者說選擇一個比較好用的Linux發行版。我個人推薦初次接觸Linux操作系統的人,使用深度開發的深度Linux操作系統。
當你進入到深度Linux操作系統的桌面之后,你就會發現原來是這樣的一個系統啊,和windows有什么區別呀?
然后你該用什么編輯器就用什么編輯器,該用什么就用什么,沒有任何的關系的。
至于編程本身需要的技術和操作系統沒有關系。
當然如果你對Linux操作系統有了更進一步的研究,你還需要去嘗試一下不同的發行版本,比如說由紅帽公司推出的cent OS操作系統。這是一個非常常見的運行在服務器上的操作系統,當然你接觸這樣的操作系統的話是必須使用命令行了。
還有ubuntu的Linux操作系統,也是需要去嘗試一下的。因為現在有很多的服務器上開始使用ubuntu的操作系統了。
如果你的Linux水平達到了一定的境界,你一定要嘗試一下arch Linux操作系統。當你能夠順利的在虛擬機上把它給安裝上,說明你的Linux操作系統已經達到一定的境界了。
當你使用的發行版足夠多之后,你就會發現其實各種各樣的Linux操作系統都是差不多的。只不過在自帶的環境方面各有特色而已。
總之不要害怕,也不要膽怯,放手去干 just do it。
各位看官,你們是怎么接觸到Linux操作系統并使用它的呢?歡迎在評論區中討論。
喜歡我的話給我點贊并關注哦。
0
回答0
回答0
回答1
回答3
回答0
回答0
回答1
回答0
回答0
回答