【Linux游記】基礎指令篇

???????

?

楓の個人主頁

你不能改變過去,但你可以改變未來

算法/C++/數據結構/C/Linux

Hello,這里是小楓。C語言與數據結構和算法初階兩個板塊都更新完畢,我們繼續來學習C++,C++更新的同時我也會更新Linux。Linux操作系統是很經典的操作系統,因此學習起來注定枯燥無味,西游記大家都看過吧~,我希望能帶著大家一起跨過九九八十一難,降伏各類難題,學會Linux,我會盡我所能,以通俗易懂、幽默風趣的方式帶給大家形象生動的知識,也希望大家遇到困難不退縮,遇到難題不放棄,學習師徒四人的精神!!!故此得名【Linux游記

?話不多說,讓我們一起進入今天的學習吧~~~??

一、軟件包管理器

1.1 什么是軟件包

在 Linux 下安裝軟件,通常的辦法是下載源代碼并編譯得到可執行程序,但這種方式比較麻煩。于是有人將常用軟件提前編譯好,做成軟件包(類似 Windows 上的安裝程序)放在服務器上,通過包管理器可方便地獲取并直接安裝。

軟件包和軟件包管理器的關系,就好比 "App" 和 "應用商店"。其中,yum(Yellow dog Updater, Modified)是 Linux 下常用的包管理器,主要應用在 Fedora、RedHat、Centos 等發行版;Ubuntu 則主要使用 apt(Advanced Package Tool),它同樣能自動解決依賴關系,實現軟件包的下載和安裝。

1.2 Linux 軟件生態

Linux 下載軟件時,用戶通過包管理器(yum/apt)向軟件包服務器發送查找、下載請求,服務器返回軟件包,包管理器負責解決依賴關系并完成下載、安裝、卸載等操作。

評估操作系統的好壞,生態是重要因素,包括社區論壇、官網文檔、軟件體系、維護更新速度、操作系統自身及針對性客戶群體等。

軟件包可能存在依賴問題,一個軟件可能依賴多個庫文件,如某軟件可能依賴 libc.so、ssl.so 等。為提高下載速度,可使用國內鏡像源,以下是一些國內 Linux 軟件安裝源的官方鏈接:

  • 阿里云官方鏡像站:阿里巴巴開源鏡像站-OPSX鏡像站-阿里云開發者社區,提供 CentOS、Ubuntu、Debian 等多種發行版鏡像。
  • 清華大學開源軟件鏡像站:清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror,提供多種 Linux 發行版鏡像及 Python、Perl 等編程語言擴展包,還有豐富文檔和教程。
  • 中國科學技術大學開源鏡像站:USTC Open Source Software Mirror,提供多種 Linux 發行版鏡像和常用開發工具。
  • 北京交通大學自由與開源軟件鏡像站:首頁 - 北京交通大學自由與開源軟件鏡像站,提供多種 Linux 發行版鏡像及相關軟件倉庫,還有詳細文檔和指南。
  • 中國科學院軟件研究所鏡像站 (ISCAS):歡迎訪問 ISCAS 開源鏡像站,提供多種 Linux 發行版、編程語言和開發工具鏡像。
  • 上海交通大學開源鏡像站:Index of /,提供豐富的 Linux 軟件資源,包括多種發行版鏡像和軟件倉庫。
  • 網易開源鏡像站:歡迎訪問網易開源鏡像站,提供多種 Linux 發行版鏡像及相關軟件倉庫,還有便捷的搜索功能。

1.3 yum 具體操作

1.3.1 查看軟件包

使用yum list命令可列出所有軟件包,結合grep命令可篩選關注的包,例如:

# Centos
$ yum list | grep lrzsz 
Lrzsz.x86_64 0.12.20-36.el7 @base# Ubuntu
$ apt search lrzsz
# 輸出省略

注意事項:

  • 軟件包名稱格式為:主版本號。次版本號。源程序發行號 - 軟件包的發行號。主機平臺.cpu 架構。
  • "x86_64" 表示 64 位系統安裝包,"i686" 表示 32 位系統安裝包,需與系統匹配。
  • "el7" 表示 centos7/redhat7,"el6" 表示 centos6/redhat6。
  • 最后一列的 base 表示 "軟件源" 名稱。
1.3.2 安裝軟件

通過簡單命令即可安裝軟件,例如安裝 lrzsz:

# Centos
$ sudo yum install -y lrzsz# Ubuntu
$ sudo apt install -y lrzsz

出現 "complete" 字樣或無報錯說明安裝完成。

注意事項:

  • 安裝軟件需向系統目錄寫入內容,一般需要 sudo 或切換到 root 賬戶。
  • yum/apt 需逐個安裝軟件,同時安裝多個會報錯。
1.3.3 卸載軟件

卸載軟件命令如下:

# Centos
sudo yum remove [-y] lrzsz# Ubuntu
sudo apt remove [-y] lrzsz
1.3.4 注意事項

yum/apt 的所有操作需保證主機網絡暢通,可通過ping www.baidu.com驗證。

1.4 安裝源

Centos 安裝源路徑:

$ ll /etc/yum.repos.d/
# 顯示CentOS-Base.repo(標準源)和epel.repo(擴展源)等

可安裝擴展源:sudo yum install -y epel-release

Ubuntu 安裝源路徑:

$ cat /etc/apt/sources.list # 標準源
$ ll /etc/apt/sources.list.d/ # 擴展源

二、編輯器 Vim

2.1 vi 與 vim 的區別

vi 和 vim 都是多模式編輯器,vim 是 vi 的升級版本,兼容 vi 的所有指令,還具有語法加亮、可視化操作等新特性,可在終端、x window、mac os、windows 等環境運行。

2.2 vim 的基本概念

課堂主要講解三種模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode):

  • 命令模式:控制光標移動,可進行刪除、復制等操作,能進入插入模式或底行模式。
  • 插入模式:可進行文字輸入,按 ESC 鍵回到命令模式。
  • 底行模式:可進行文件保存、退出等操作,在命令模式下按 shift+:進入。

2.3 vim 的基本操作

進入 vim:$ vim test.c,默認處于命令模式,需切換到插入模式才能輸入文字。

模式切換:

  • 命令模式→插入模式:輸入 a、i 或 o。
  • 插入模式→命令模式:按 ESC 鍵。
  • 命令模式→底行模式:按 shift+;(即輸入:)。

退出與保存:在底行模式下,w保存,wq存盤并退出,q!不存盤強制退出。

2.4 vim 正常模式命令集

  • 插入相關:i(從光標處輸入)、a(從光標下一位輸入)、o(插入新行并從行首輸入)。
  • 光標移動:h(左)、j(下)、k(上)、l(右);G(到文尾)、$(到行尾)、^(到行首)等。
  • 刪除操作:x(刪除光標處字符)、#x(刪除光標后 #個字符)、dd(刪除當前行)等。
  • 復制粘貼:yw(復制到字尾)、yy(復制當前行)、p(粘貼)。
  • 替換操作:r(替換光標處字符)、R(持續替換至 ESC)。
  • 撤銷操作:u(撤銷)、ctrl + r(恢復撤銷)。

2.5 vim 末行模式命令集

  • 列出行號:set nu
  • 跳至某行:輸入行號后回車。
  • 查找字符:/關鍵字(向后找)、?關鍵字(向前找),按 n 繼續查找。
  • 保存退出:w(保存)、q(退出)、wq(保存退出)。

2.6 vim 配置

  • 系統公共配置文件:/etc/vimrc
  • 用戶私有配置文件:~/.vimrc,可設置語法高亮(syntax on)、顯示行號(set nu)等。
  • 可安裝 TagList、WinManager 等插件增強功能。

三、編譯器 gcc/g++

3.1 編譯過程

gcc/g++ 編譯分為四個階段:

  1. 預處理:宏替換、去注釋、頭文件展開等,使用-E選項,生成.i文件。
  2. 編譯:生成匯編代碼,使用-S選項,生成.s文件。
  3. 匯編:生成機器碼,使用-c選項,生成.o文件。
  4. 鏈接:生成可執行文件,無特殊選項,生成可執行程序。

3.2 動態鏈接與靜態鏈接

  • 靜態鏈接:將庫代碼全部加入可執行文件,文件較大,運行時無需庫,但更新麻煩。
  • 動態鏈接:程序運行時加載庫,文件較小,節省資源,更為常用。

Linux 下動態庫后綴為.so,靜態庫為.a;Windows 下動態庫為.dll,靜態庫為.lib

3.3 常用選項

包括-E(預處理)、-S(編譯)、-c(匯編)、-o(指定輸出文件)、-g(生成調試信息)等。

四、自動化構建工具 make/Makefile

4.1 基本概念

make 是命令工具,Makefile 是定義編譯規則的文件,兩者配合實現項目自動化構建,提高開發效率。

4.2 基本使用

例如,對于myproc.c文件,Makefile 可寫為:

myproc:myproc.cgcc -o myproc myproc.c
.PHONY:clean
clean:rm -f myproc

myproc依賴myproc.c,通過gcc命令生成;clean為偽目標,用于清理文件。

4.3 make 工作流程

  1. 在當前目錄找 Makefile 或 makefile。
  2. 找到第一個目標文件作為最終目標。
  3. 若目標文件不存在或依賴文件更新時間更新,則執行命令生成目標。
  4. 遞歸查找依賴關系,直至生成最終目標。

五、Linux 第一個程序:進度條

5.1 相關知識

  • 回車(\r):光標回到行首;換行(\n):光標下移一行。
  • 行緩沖區:輸出帶\n會刷新緩沖區,否則需用fflush(stdout)手動刷新。

5.2 進度條代碼

  • process.c:實現進度條邏輯,包括版本 1 和版本 2 的函數。
  • process.h:聲明進度條函數。
  • main.c:調用進度條函數模擬下載過程。
  • Makefile:定義編譯規則。

六、版本控制器 Git

6.1 基本概念

Git 是主流版本控制器,可管理文件歷史版本,方便多人協作,支持各種格式文件,尤其適合管理源代碼。

6.2 安裝與使用

  • 安裝:yum install git
  • 基本操作(三板斧):
    1. git add:將文件加入暫存區。
    2. git commit -m "日志":提交到本地倉庫。
    3. git push:同步到遠程倉庫。
  • 可配置免密碼提交,需設置用戶信息(git config --global user.name等)。

七、調試器 gdb

7.1 基本使用

  • 程序需以 debug 模式編譯(加-g選項)。
  • 常用命令:
    • gdb binFile:啟動調試。
    • l:顯示源代碼。
    • b 行號:設置斷點。
    • r:運行程序。
    • n/s:單步執行(n不進函數,s進函數)。
    • p 變量:打印變量值。
    • q:退出調試。

7.2 高級技巧

  • watch:監視變量變化,值改變時暫停程序。
  • set var:修改變量值。
  • 條件斷點:b 行號 if 條件,滿足條件時觸發。

八、結語

今日C++到這里就結束啦,如果覺得文章還不錯的話,可以三連支持一下。感興趣的寶子們歡迎持續訂閱小楓,小楓在這里謝謝寶子們啦~小楓の主頁還有更多生動有趣的文章,歡迎寶子們去點評鴨~C++的學習很陡,時而巨難時而巨簡單,希望寶子們和小楓一起堅持下去~你們的三連就是小楓的動力,感謝支持~

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95791.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95791.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95791.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里云-基于通義靈碼實現高效 AI 編碼 | 4 | 場景學習:3分鐘寫一個音樂鬧鐘小應用

文章目錄一、初版需求與代碼生成二、需求迭代與代碼更新三、需求細化與功能完善3.1 pygame安裝3.2 放置音樂文件3.3 執行代碼免費個人運維知識庫,歡迎您的訂閱:literator_ray.flowus.cn 一、初版需求與代碼生成 首先向通義靈碼提出了基本需求&#xff1…

【算法筆記】歐拉降冪公式與歐拉函數

歐拉降冪公式 在數論中,歐拉降冪公式是一個強大的工具,用于簡化大指數模運算。公式如下: ?k>φ(m),有Ak≡Akmodφ(m)φ(m)(modm)成立。\forall k > \varphi(m),有 A^k \equiv A^{k \mod \varphi(m) \varphi(m…

基于STM32的交通燈設計—緊急模式、可調時間

基于STM32交通燈設計(仿真+程序+設計報告)功能介紹具體功能:1.數碼管和LED模擬交通燈;2.南北綠燈9秒,東西綠燈15秒,黃燈2秒;3.緊急情況:按下按鍵,…

汽車軟件研發智能化:AI在CI/CD中的實踐

當汽車行業加速駛入“軟件定義”的時代,軟件已成為決定車輛競爭力的核心要素。從智能座艙的多場景交互到自動駕駛的復雜決策邏輯,汽車軟件的代碼量逐年遞增,復雜度呈指數級攀升,傳統研發流程深陷困境:代碼質量管控滯后…

DeepSeek:開啟智能體驅動對話式數據分析新時代

在數字化浪潮洶涌澎湃的當下,數據已然成為驅動企業發展、推動科學研究以及優化日常生活決策的關鍵力量。數據分析,作為從海量數據中提取有價值信息、洞察趨勢、挖掘規律的核心手段,其重要性不言而喻。無論是企業精準把握市場動態、優化運營流程,還是科研人員探索未知領域、…

MCP驅動企業微信智能中樞:企業級機器人服務構建全攻略

一、背景與目標 公司規模200-300人,主要使用企業微信作為內部溝通平臺。日常面臨大量重復性通知工作,如會議提醒、系統維護通知、項目進度更新等。 業務痛點: 人工發送通知效率低下,平均3分鐘/條重要信息傳遞不及時&#xff0c…

語音識別系統的技術核心:從聲音到文字的智能轉換

語音識別技術,也稱為自動語音識別(ASR),其核心目標是將人類語音信號轉換為對應的文本或指令。隨著人工智能的發展,語音識別已成為智能助手、實時翻譯、車載系統等領域的關鍵技術。其工作原理可分解為信號處理、特征提取…

《用 Django 構建博客應用:從模型設計到文章管理的全流程實戰》

《用 Django 構建博客應用:從模型設計到文章管理的全流程實戰》 一、引言:為什么選擇 Django 構建博客系統? 在 Python 的 Web 框架中,Django 被譽為“全能型選手”。它不僅提供了強大的 ORM、模板系統、認證機制和后臺管理,還鼓勵開發者遵循“DRY”(Don’t Repeat You…

以 R1 為視角,手把手教你畫 OSPF 最短路徑樹與推導路由表

視頻版講解>>>>>>>>>>>>>>>>>>>OSPF最短路徑樹構建與路由計算練習(一) 在 OSPF 協議的學習中,“紙上談兵” 不如 “實戰推演”—— 尤其是以特定路由器為主視角,從 LS…

axios請求緩存與重復攔截:“相同請求未完成時,不發起新請求”

import axios from "axios";// 1. 緩存已完成的請求結果(key:請求URL參數,value:數據) const requestCache new Map(); // 2. 記錄正在執行的請求(避免并行重復請求) const pendingR…

k8s的SidecarSet配置和initContainers

目錄引言一、k8s如何實現Sidecar這段配置正確嗎?正確的配置方式為什么這樣做?一個簡單的例子總結二、什么是SidecarSet主要功能使用場景示例配置三、也可以通過 initContainers 的 restartPolicy 實現邊車邏輯四、題外話:什么是InitContainer…

PostgreSQL與SQL Server:為什么 PostgreSQL遙遙領先

PostgreSQL與SQL Server:為什么 PostgreSQL遙遙領先 在數據庫領域,PostgreSQL 和 Microsoft SQL Server 長期以來一直是競爭對手。然而,近年來,PostgreSQL 以其性能、靈活性和創新功能讓 SQL Server 望塵莫及。以下是對 PostgreSQL 明顯優越的…

零跑汽車8月交付57066臺,同比增長超88%

零跑汽車官宣,在剛剛過去的8月份,品牌交付57066輛,同比增長超88%再創歷史新高,并實現了連續6個月穩坐新勢力銷冠。目前,零跑旗下共有T03、B10、B01、C01、C10、C11、C16等七款車型在售,得益于零跑堅持全棧自…

DNS地址推薦

DNS地址推薦(2025年最新整理) 以下DNS服務器按使用場景分類,涵蓋國內、國際、安全隱私、游戲優化等需求,均為2025年仍在維護的公共DNS服務: 一、國內通用DNS(適合中國大陸用戶) 國內DNS服務器對…

興趣電商內容數據洞察未來市場走向研究——基于開源AI智能名片鏈動2+1模式S2B2C商城小程序的實踐

摘要:在互聯網電商數據高度透明的當下,“已發生”的品類規模和品類增速數據雖易獲取,但主要反映市場歷史狀況,難以預測未來走向。興趣電商的內容數據因揭示消費者“新需求”和“潛在需求”,在宏觀層面更早體現用戶消費…

【已更新文章+代碼】2025數學建模國賽A題思路代碼文章高教社杯全國大學生數學建模-煙幕干擾彈的投放策略

截止周四晚上11點已更新五個問題完整建模和問題一二的代碼 截止周五早上完整版已更新 可以看主頁最新博文獲取 完整內容請看文末最后的推廣群2.1問題1的分析 問題1是典型的確定性時空幾何與運動學計算問題,核心在于通過建立坐標系下的參數方程,量化煙幕云…

UE4 Rider如何直接調試PC DebugGame

背景1、用UBT 打了一個exe的包,打開時遇到崩潰,想獲知這個崩潰時的中間信息,例如材質信息,于是我直接雙擊 打包位置下的崩潰dmp文件 (MyGame/Saved/Archived/WindowsClient/MyGame/Saved/Crashes/....dmp) …

【FastDDS】Layer DDS之Domain ( 06-Partitions )

在DDS(Data Distribution Service,數據分發服務)中,Partition(分區) 是一種在“域(Domain)”提供的物理隔離基礎上,為發布者(Publisher)和訂閱者(Subscriber)新增的邏輯隔離與通信篩選機制。它的核心作用是在“域”和“主題(Topic)”之外,進一步精細化控制哪些…

FastVLM:高效視覺編碼助力視覺語言模型突破高分辨率效率瓶頸

想要掌握如何將大模型的力量發揮到極致嗎?葉梓老師帶您深入了解 Llama Factory —— 一款革命性的大模型微調工具。 1小時實戰課程,您將學習到如何輕松上手并有效利用 Llama Factory 來微調您的模型,以發揮其最大潛力。 CSDN教學平臺錄播地址…

【HarmonyOS】一步解決彈框集成-快速彈框QuickDialog使用詳解

【HarmonyOS】一步解決彈框集成-快速彈框QuickDialog使用詳解 一、集成的應用背景介紹 最近比較忙,除了工作節奏調整,有重點項目需要跟。業務時間,也因為參加了25年創新大賽,我們網友,組成了鴻蒙超新星研發團隊&#x…