引言
??小伙伴們,不管是學習c++還是學習其他語言在我們學的路上都繞不過操作系統,而且,老生常談的Linux更是每個計算機人的必修,那么我們對Linux的了解可能只是從別人那聽到的簡單的這個系統很牛,巴拉巴拉的,但是我們還是不太懂,那么今天我們就來學習有關Linux的基礎。
Linux
了解Linux
??我們先從一個故事來簡單了解一下Linux的由來吧。
?? 從前有一個叫林納斯的小伙子,他很喜歡電腦,但是對當時那些要花大價錢才能用的操作系統不滿意。于是,他決定自己動手,豐衣足食,就自己寫了一個操作系統的核心部分。這個核心部分,就是我們今天說的Linux內核。
??林納斯把這個內核放在網上,說:“嘿,大家一起來玩吧,你們可以隨便用,隨便改。” 結果,一大群人被吸引過來,他們覺得這個主意太酷了,就開始幫忙一起寫代碼,一起改進這個系統。
??這些人來自世界各地,他們通過網絡聚集在一起,形成了一個強大的社區。他們不僅把Linux做得越來越好,還做了很多基于Linux的操作系統,比如Ubuntu、Fedora等等,讓普通人也能輕松使用。
??因為Linux是大家共同創造的,所以它的代碼是開放的,這意味著任何人都可以看到它,修改它,甚至拿去賣。這種開放的態度讓Linux變得非常強大和靈活,現在幾乎所有的互聯網巨頭,比如谷歌、Facebook,都在用Linux來搭建他們的服務器。
??所以,Linux不僅僅是一個操作系統,它還是一群人共同協作、不斷創新的故事。
??有關Linux的故事幫助大家知道它是怎么來的,如果小伙伴們對Linux由來想了解的更清楚一點,大家可以百度或者谷歌搜索一下,那么現在都有哪些Linux的發行版呢
Linux發行版
- 1、CentOS 7
紅帽(Redhat)組織于2014年收購了CentOS,現在的CentOS是紅帽在維護。
主要用在服務器上- 優點:穩定性好,有專業團隊維護,適用面廣
- 缺點:已經停止更新了,不太適用于普通用戶
- 2、Ubuntu
- 應用面最廣的LINUX發行版,適合普通用戶使用。
- 每年會在10月和4月發布兩個版本,其中偶數年的四月會發布LTS(長期維護版本),一般的LTS版本會
維護5年。今年發行的24.04 LTS有了Ubuntu pro的名字,宣布維護12年。
- 3、其他的類Unix系統
- ArchLinux、Debian、FreeBSD
Linux文件系統
??文件系統會使用樹狀結構對所有硬盤上的文件進行管理,這個管理系統就叫文件系統。在windows下,每個盤符下都是一個樹狀結構,以盤符根,各盤符獨立;
而在LINUX下,只有一個樹狀結構,所有的文件和目錄全部掛在根目錄下。
- 重要目錄:
1. /homehome路徑下,放著所有用戶的主目錄,即每個用戶的私人文件夾
2. /rootroot用戶的主目錄
3. /etc系統和各種應用程序的配置文件
4. /usr/usr/local : 用于存放用戶自己安裝的一些應用程序的文件/usr/bin : 用于用戶自己安裝的一些指令
- 路徑:
/ :根目錄,所有的文件和文件夾都掛載在根目錄下~ :主目錄,用戶的自定義空間,通常主目錄在/home下. :當前路徑.. :上一級路徑,通常用于相對路徑絕對路徑:指的是從根到自己的路徑,可以用 pwd 指令抓取。
相對路徑:指的是從自己到待跳轉目標的路徑
軟件下載與環境配置
-
虛擬機VMware
??VMware作為虛擬化技術的代表軟件,可以虛擬整個操作系統供我們學習和使用,會單獨搭建環境而不會因為操作失誤而影響我們的主機,同時在虛擬機上安裝Linux系統會比在主機上安裝更方便。??虛擬機安裝鏈接:點擊附件網盤鏈接 提取碼:h094
-
CentOS7系統
??在學習一門新東西的時候我們往往會從最老的開始學起,因為越是老軟件,老系統,用戶使用的時間越長,大家才會對其研究越深,研究資料也會越多,方便我們學習。??下載鏈接:點擊附件網盤鏈接 提取碼:18c4
裝載步驟:
1.打開虛擬機并點擊創建新的虛擬機,然后下一步。
2.找到剛下好的CentOS7并選擇安裝,點擊下一步。
3.填寫用戶名和密碼,為了方便我們學習,我們的密碼建議和小楊一樣設置為123
然后點擊下一步。
4.修改虛擬機名稱(不改也行)并設置存放位置,點擊下一步。
5.設置虛擬磁盤大小,建議20G,點擊下一步。
6.點擊完成,完成創建虛擬機并開機
7.當界面顯示如圖所示時,表示已成功進入虛擬機
8.打開虛擬機后右鍵桌面并點擊Open Terminal
,這下我們就可以開始我們對指令的學習了。
- 安裝編譯器
在命令框輸入如下命令:
sudo yum install -y gcc
sudo yum install -y gcc-c++*
輸入后如圖所示等待即可,第一條是刪除指令,由于做示范,小楊特意把之前的下載好的刪掉的。
下載完成后命令框的提示行會回閃
- 建立root權限用戶
用vim編譯器打開sudoers文本可以看到所有用戶
輸入如下命令
sudo vim /etc/sudoers
用 su root
切換超級用戶,并用vim打開上述文件,復制第100行到101行,將剛剛復制出的那一行的,這個操作可以看下邊對vim操作的注解。
root
改成自己的用戶名,即可直接用sudo獲取管理員權限
如圖所示
- 切換阿里云鏡像
輸入以下指令,這是我在學習過程中使用的鏡像,小伙伴們可以試試,這個鏡像可以加速我們稍后下載文件或者軟件的速度。
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
yum工具和vim工具
-
CentOS下的yum工具
yum是一個CentOS下的應用程序,可以用來自動安裝軟件,以gcc為例指令如下:
sudo yum install -y gcc
-
vim工具
vim工具是Linux自帶的文本編輯器,vim下一共有三種模式,進來以后是普通模式。
普通模式:在這個模式下可以對文件進行翻閱、復制粘貼、跳轉等操作。
末行模式:也叫命令模式,可以執行一些復雜的指令,如查找替換、設置行號、保存退出等。
編輯模式:在這個模式下可以自由編輯文本- 如何切換三種模式:
普通模式->末行模式:直接輸入指令即可
末行模式->普通模式:刪除指令即可
普通模式->編輯模式:按i,其他方法無需記憶(O/S)
編輯模式->普通模式:按Esc - 普通模式下的常用指令
- 如何切換三種模式:
yy:復制一行%yy:復制n行dd:剪切一行%dd:剪切n行p:粘貼gg:跳轉到開頭%gg:跳轉到第n行開頭u:撤銷
- 末行模式下的常用指令
:w:保存文件:q:退出:wq:保存并退出:q!:強制退出:wq!:強制保存退出:set nu:顯示行號:set nonu:關閉行號顯示/字段:查找該字段,按n下一個
:s/字段1/字段2/g 查找字段1替換成字段2
:%s/字段1/字段2/g 查找所有的字段1替換成字段2
基礎命令與必備參數
命令的參數:
- 命令后面可以跟上一個 - 來表示后面要加一個短參數,具體每個命令可以加什么參數可以參考 man 指令里的結果
- 多個參數可以寫在一起
man
man
指令是Linux下的一個幫助菜單,后面可以跟上一個詞條,這個詞條可以是一個命令,也可是一些C語言的函數
ls
列表顯示命令,用于列表顯示當前文件夾下的內容
※文件夾是用藍色顯示的
ls
指令的后面可以跟一個路徑,表示顯示指定路徑的文件信息。
- 重要參數:
-a :顯示隱藏文件
※在linux下,以 . 開頭的文件叫隱藏文件-l :列表顯示詳細信息
cd
cd
指令用于跳轉路徑。
cd
后面可以跟絕對路徑或者相對路徑去跳轉到目標路徑下。
cd
如果后面什么都不跟,則回到主目錄
cd
后面如果跟了一個 - ,表示后退,但只能后退一步
mkdir
創建一個空文件夾
mkdir
后面可以跟多個文件夾名,可以一并創建
- 重要參數:
-p :可以遞歸創建空文件夾,例如 mkdir -p a/b/c/d 的意思就是,
創建空文件夾d,但如果其父目錄不存在,則遞歸創建a、b、c后,再創建d
rmdir
刪除一個空文件夾
rmdir
后面可以跟多個文件夾名,可以一并刪除
※rmdir
只能刪除空文件夾
touch
touch
命令可以創建新文件,空文件,也可以用來改變文件最后更改時間
cat
抓取文件內容
重要參數:
-n :可以顯示行號
cp
復制文件,基本格式是 cp A B
功能1:將文件創建備份
如果A、B均不是目錄且A文件存在,則含義為將A復制成B。
功能2:將文件復制到指定目錄
如果A不是目錄且A文件存在,B是一個存在的目錄,則含義為將A復制到B里
※ cp
無法復制目錄,當A是目錄時會報錯
- 重要參數
-r
:允許cp復制目錄
-f
:復制時不經過詢問直接復制
復制目錄,基本格式是cp -r A B
功能1:將目錄創建備份
如果A時目錄、B不是一個存在的目錄,則含義為將A復制成B。
功能2:將目錄復制到指定目錄
如果A是目錄且A目錄存在,B也是一個存在的目錄,則含義為將A復制到B里
※cp
的核心是判斷B是否是已經存在的路徑。
mv
移動文件或目錄,基本格式是 mv A B
功能1:給目錄或文件重命名
如果A和B都是文件或都是路徑,且B不存在,則意味著將A改名成B
功能2:移動目錄或者文件
如果B是已經存在的路徑,則意味著是將A(無論是文件還是目錄)移動到B里
rm
刪除文件,rm后可以跟一個文件列表,表示刪除多個文件
- 重要參數
-r
:允許rm刪除目錄
-f
:刪除時不經過詢問直接刪
Linux的C/C++代碼
基本方法:
1、使用vim編輯代碼
2、使用gcc/g++編譯代碼
3、用 ./a.out
運行
補充:
gcc
的部分參數
-o
:后面跟一個文件名,表示編譯出來的文件命名為這個文件名
-g
:表示編譯為debug模式,可以用來調試
※加了-g
參數后,用gdb調試時可以看到代碼
重定向
??把原本要輸出到屏幕上的東西輸出到文件去
重定向符號 >
,例如ls > 1.txt
就是將ls的輸出結果直接放到文件1.txt中,不再顯示在屏幕上
※ 重定向時,如果文件已經存在,則會覆蓋,不存在則創建
如果想要追加,那么用 >>
即可
※ 向屏幕輸出的耗時遠高于向文件輸出
管道符
??管道符的作用就是把上一條信息的內容經過管道處理后丟出來然后做接下來的操作
管道符號 |
管道常用功能:
less
:用less
軟件打開文件,可以翻頁預覽
tail/head
:只要尾10行或者頭10行,可以加-n
參數并指定行數()
grep
:篩選出包含某個指定對象的行,可以加-v
參數反向選取,即不包含某個關鍵字的行
例如: grep "guanjianzi" 1.txt | cat 1.txt >2.txt
作業練習:使用Linux指令完成下列任務:
-
- 創建和編輯文件:
- 在你的主目錄下創建一個名為 project 的文件夾。
- 在 project 文件夾中,使用 touch 命令創建三個空文件: file1.txt 、 file2.txt 、file3.txt
- 使用 echo 命令,向 file1.txt 中寫入“Hello, World!”。
- 使用 echo 命令,向 file1.txt 中追加“Goodbye, World!”。
- 使用 echo 命令,向 file1.txt 中追加“Good night!”。
-
- 復制和修改文件:
- 將 project 文件夾復制為 project_backup 。
- 使用 cat 命令和管道 | ,結合 grep 命令(假設你想篩選出包含“World”的行),將file1.txt中包含“World”的行合并到一個新文件 filtered.txt 中,將該文件放置在project_backup 文件夾下。
-
- 目錄和文件操作:
- 在 project_backup 文件夾中,創建一個名為 logs 的文件夾。
- 在 logs 文件夾中,使用 touch 命令創建三個日志文件: log1.log 、 log2.log 、log3.log 和三個任意 txt 文件。
- 將 project_backup/logs/log1.log 移動到 project 文件夾中
- 刪除 project_backup/logs 文件夾中剩余的日志文件。
結語
??有關Linux的基礎就簡單說到這里吧,其實還有一些進階的知識,我們留在下一章,也有的小伙伴對Linux的學習并不用很深,有所了解到這就差不多了,這章的內容已經對一些基礎指令都寫進去了,大家可以點贊收藏加關注哦,小楊會持續給大家分享更好的文章的。
??都學到這里啦!給棒棒噠自己點個贊吧,好牛的!!!
??明天也要繼續努力喲!!!沖沖沖!!!