Linux開發利器:探秘開源,構建高效——基礎開發工具指南(上)【包管理器/Vim】


???~~~~~~歡迎光臨知星小度博客空間~~~~~~???

???零星地變得優秀~也能拼湊出星河~???

???我們一起努力成為更好的自己~???

???如果這一篇博客對你有幫助~別忘了點贊分享哦~???

???如果有什么問題可以評論區留言或者私信我哦~???

??????個人主頁??????

????????前面的兩篇博客,我們已經對Linux命令行的基礎指令進行了簡單的學習,更多的使用指令需要我們在實踐中去積累,這一篇博客,我們將開啟Linux新篇章——Linux下的基礎開發工具~準備好了嗎~我們發車去探索Linux的奧秘啦~🚗🚗🚗🚗🚗🚗

目錄

軟件包管理器😎

Linux下軟件安裝、查找與卸載方法😘

操作系統生態😊

Linux安裝/刪除/搜索軟件實踐操作😁

安裝源😜

文本編輯器Vim🤔

簡單程序引入🙂

命令模式🤪

底行模式😘

五種常用模式🤩

vim的配置🤨

補充:【!char】指令🤗


軟件包管理器😎

Linux下軟件安裝、查找與卸載方法😘

????????Linux下安裝軟件有下面的幾種方式,在此之前我們需要明確一點軟件之間是存在著依賴關系的【即一個軟件在運行或執行某些功能時,需要依賴另一個軟件或庫的存在和正常工作】,我們可以手動解決~也可以使用到軟件包管理器~

源碼安裝:直接通過源代碼進行安裝~

rpm安裝方式:平時使用到的安裝包本質在Windows下編譯源代碼后打包~

yum/apt工具級別【軟件包管理器】安裝

功能:自動提供軟件并解決依賴關系~

比喻:軟件包相當于APP,軟件包管理器相當于應用商店~找到軟件即可下載~

下面的圖片顯示了Linux下下載軟件的過程:云服務器通過包管理器(如yum/apt)發起軟件包查找和下載請求,軟件包服務器響應并提供所需軟件包~包管理器負責解決軟件包間的依賴關系,確保軟件正常運行,并執行下載、安裝和卸載操作~

進一步理解軟件包管理器:

????????軟件包管理器是一個工具,它負責自動化軟件包的安裝、更新、卸載等操作,并處理軟件包之間的依賴關系~軟件包管理器通過維護一個軟件包倉庫(類似于應用商店),用戶可以從倉庫中搜索、下載和安裝軟件包~

操作系統生態😊

????????操作系統生態是以操作系統為核心,涵蓋應用軟件、硬件設備、開發者社區和用戶群體的完整體系~它對于保障國家信息安全、推動技術創新和產業發展、提升操作系統市場競爭力和用戶滿意度具有重要意義~

??????? 評價一個操作系統的好壞是通過操作系統生態進行評估的,而不是單獨某一個方面進行評估~

?組成部分

?》操作系統內核和系統軟件:

????????????????作為生態的基礎,提供運行環境和支持,包括系統調用、編譯環境等。

?應用軟件:

????????????????滿足用戶在不同領域的需求,如辦公、娛樂、教育等,是生態價值的重要體現。

?》硬件設備:

????????????????確保操作系統與各種硬件的兼容性,包括計算機硬件、外設等,是生態穩定運行的基礎。

??》開發者社區:

????????????????活躍的開發者社區推動技術創新和生態發展,為開發者提供技術支持和分享經驗。

??》用戶群體:

????????????????作為生態的最終受益者,用戶的需求和反饋對生態發展至關重要。

????????軟件包管理是操作系統生態中的重要環節,涉及軟件的安裝、更新和卸載。一個完善的操作系統生態應提供便捷、高效的軟件包管理工具和服務,以滿足用戶的不同需求。同時,軟件包管理流程的優化和改進也有助于提升操作系統生態的完善程度和用戶體驗。

??????? 也就有了下面的圖片:

Linux安裝/刪除/搜索軟件實踐操作😁

??????? 我們知道在操作系統中,不同的用戶具有不同的權限,普通用戶通常只能訪問和修改自己的文件和目錄,而無法對系統級別的文件和目錄進行更改,而安裝軟件通常涉及到將軟件文件復制到系統目錄(如/usr/bin/usr/lib等),這些目錄通常只有超級用戶(如root)才有權限寫入~所以Linux下安裝軟件,我們要以超級用戶的身份進行安裝!也就是說我們需要對普通用戶進行權限提升(使用sudo)~

??????? 小編使用的Linux發行版是Centos版本,所以使用yum軟件包管理器,如果是Ubuntu可以使用apt軟件包管理器~

我們這里測試下載一個比較好玩的,命令行輸入sudo yum install sl

詢問是否安裝,確認輸入y,否定輸入n

安裝完成!

使用sl:

就會出現一個跑起來的小火車~

如果我們想要刪除這個軟件就可以命令行輸入:sudo yum remove sl

確認刪除:

刪除成功:

????????我們可以發現安裝的時候總是會詢問我們是否安裝,我們可以在命令行輸入的時候加上【-y】選項就可以不詢問直接進行安裝了~

??????? 有了安裝和刪除軟件,我們知道平時應用商店還支持搜索查找軟件,那么使用軟件包管理器怎么搜索查找呢?我們可以使用接下來的兩條命令:

sudo yum list | grep sl

  • sudo:以超級用戶身份執行命令。
  • yum list:列出所有可用或已安裝的軟件包。
  • |:管道符,將前一個命令的輸出作為后一個命令的輸入。
  • grep sl:在yum list的輸出中搜索包含字符串“sl”的行。grep是一個文本搜索工具,用于在輸入中搜索匹配特定模式的行。

sudo yum search sl | grep sl.x86

  • sudo:同樣以超級用戶身份執行命令。
  • yum search sl:搜索名稱或描述中包含字符串“sl”的軟件包,與yum list不同,yum search更靈活,它會在軟件包的名稱和描述中搜索匹配項。
  • |:管道符,將yum search sl的輸出傳遞給grep
  • grep sl.x86:在yum search sl的輸出中搜索包含字符串“sl.x86”的行。這通常用于篩選出特定架構(如x86)的軟件包。

總結

安裝/刪除軟件【-y選項自己選擇】

sudo yum install [-y] 你要安裝的軟件
sudo yum remove [-y] 你要刪除的軟件

搜索查找軟件:

1、基于名稱的直接過濾:使用sudo yum list | grep <關鍵詞>,適用于已知軟件包部分名稱,快速列出匹配項。

2、基于描述的靈活搜索:使用sudo yum search <關鍵詞> | grep <過濾條件>,適用于不確定名稱但了解功能,可進一步篩選結果。

知道了如何安裝/刪除/搜索軟件查找,我們就可以根據自己的實際需要進行操作了~

安裝源😜

????????安裝源,也稱為軟件源或倉庫,是操作系統用來獲取和安裝軟件包的地方。它包含了軟件包的元數據(如軟件包名稱、版本、依賴關系等)以及軟件包本身。當用戶使用軟件包管理器(如yumapt等)來安裝、更新或刪除軟件時,軟件包包管理器會從安裝源中獲取所需的信息和軟件包。

????????在CentOS中,安裝源通常通過.repo文件配置在/etc/yum.repos.d/目錄下;而在Ubuntu中,標準源配置在/etc/apt/sources.list文件中,擴展源則可以通過在/etc/apt/sources.list.d/目錄下添加配置文件來定義~

文本編輯器Vim🤔

??????? Vim 是 Linux 系統下廣泛使用的多模式的文本編輯器,它源自 Unix 系統的經典編輯器 Vi,但進行了功能擴展和改進,類似于記事本的操作~

多模式編輯模式

命令模式(默認進入時的模式):通過快捷鍵執行移動、復制、刪除等操作(如 dd 刪除整行,yy 復制)

插入模式(寫代碼):按 i 進入文本輸入狀態【插入模式】,Esc 返回命令模式

可視模式:按 v 選擇文本塊,支持批量操作

底行模式:輸入分號【:】進入底行模式,可以執行保存(:w)、退出(:q)、搜索替換(:%s/舊/新/g)等高級命令~使用Esc 返回命令模式~

簡單程序引入🙂

接下來我們使用vim來編寫一個小程序打印hello xiaodu:

1、創建新文件

vim code.c

輸入命令后按回車,Vim會創建并且打開一個空白文件

2、進入插入模式編寫代碼

按鍵盤 i 鍵進入插入模式

輸入代碼:

3、保存并退出Vim

按 Esc 鍵退出插入模式

輸入:進入底行模式

底行輸入:【 :w 表示寫入(保存)】【?:q 表示退出】【組合使用 :wq 即可保存退出】

?

???????

4、編譯程序

命令行輸入:

gcc code.c -o code//-o code:指定輸出文件名為code

5、運行程序

我們可以修改一下代碼:

重新編譯運行:

??????? 我們知道默認進入的是命令模式,打開對應的文件的時候,我們可以命令行輸入數字指定光標在第幾行進行快速定位~注意帶上【+】號~否則是其他的命令了~

通過這個小示例我們對vim的多模式編輯更加熟悉,接下來我們將更加詳細的學習Vim這樣一個強大的文本編輯器~

命令模式🤪

??????? 命令模式(是默認進入時的模式):通過快捷鍵執行移動、復制、刪除等操作(如 dd 刪除整行,yy 復制),鍵盤的輸入就會默認當作命令來看待~實際上是用命令進行文本編輯,提高編輯效率~

光標移動與定位

  • gg: 光標快速定位到文件最開始
  • shift+g = G: 光標快速定位到文件最結尾
  • n + shift+g = nG: 光標快速定位到文件的任意第n行
  • shift+6 = ^: 移動到當前行開始
  • shift+4 = $: 移動到當前行結尾
  • hjkl: 分別代表左、下、上、右方向移動(助記:jump向下跳,king王向上,鍵盤h在左、l在右)
  • n+w: 以“單詞”為單位向后移動n個單詞(可以跨行操作)
  • n+b: 以“單詞”為單位向前移動n個單詞(可以跨行操作)
  • n: 查找下一個匹配項

復制與粘貼

  • n+yy: 復制當前行,或復制當前行之后的n行(例如,3yy復制當前行及之后兩行,共三行)
  • n+p: 粘貼到下一行,可以進行重復粘貼n次

刪除與剪切

  • n+dd: 刪除當前行及之后n-1行(例如,3dd刪除當前行及之后兩行,共三行),不做粘貼操作(p)即為剪切
  • dd+p: 剪切當前行并粘貼到下一行
  • n+x: 刪除光標所在字符之后的內容(例,5x刪除當前字符及之后4個字符,共5個字符)
  • n + shift+x = X: 刪除光標所在字符之前的內容(例,2+X刪除當前字符之前的2個字符)

修改與替換

  • n+r: 修改光標所在字符開始的n個字符為其他字符
  • shift+r = R: 讓Vim進入替換模式,覆蓋式進行替換,以后輸入的內容直接進行替換~
  • shift+#: 選中一個單詞(高亮),按n到下一個高亮顯示的單詞

大小寫切換

  • shift+ · = ~: 快速的進行內容的大小寫切換

批量化注釋與去注釋

  • 批量化注釋
    • ctrl+v: 進入VISUAL BLOCK模式
    • hjkl: 在VISUAL BLOCK模式下移動光標,選中要注釋的行或列,前面也可以加數字選擇移動選擇幾位~
    • shift+i = I: 進入insert模式,輸入注釋符號(如//
    • esc: 退出insert模式,完成注釋
  • 批量化去注釋
    • ctrl+v: 進入VISUAL BLOCK模式
    • hjkl: 在VISUAL BLOCK模式下移動光標,選中要取消注釋的行或列,以及取消的字符區域~
    • d: 刪除注釋符號

撤銷操作

?? u命令用于撤銷上一次的操作,ctrl+r命令用于對u命令進行的撤銷操作進行重做,即恢復被撤銷的內容~

  • 未退出Vim時的撤銷操作
    • ctrl+r命令可以對u命令進行的撤銷操作進行重做,即恢復被撤銷的內容。
    • 即使保存了文件,仍然可以使用u命令進行撤銷操作。
  • 退出Vim后的撤銷操作
    • 一旦退出Vim編輯器,就無法進行撤銷操作了,這是因為Vim的撤銷歷史是保存在內存中的,退出后這些歷史信息會被清除~

底行模式😘

??????? 在命令模式下輸入【:】冒號,也就是Shift+【;】分號就可以進入底行模式,可以使用下面的命令~

1. 保存退出

  • w : 保存當前文件。
  • q : 退出Vim編輯器。
  • wq : 保存當前文件并退出Vim編輯器。
  • ! : 強制執行命令,通常用于覆蓋文件或忽略警告(例如 w! 強制保存只讀文件,q!強制退出)。

2. 顯示與隱藏行號

  • set nu : 在Vim編輯器中顯示行號,方便定位和跳轉。
  • set nonu : 隱藏Vim編輯器中的行號。

3. 執行外部命令

  • :!command : 在Vim編輯器中直接執行外部命令,例如 :!ls 可以列出當前目錄下的文件,執行完畢后按 Enter 返回Vim

4. 窗口分割與切換

  • vs newfile : 垂直分割當前窗口,并在新窗口中打開一個新文件(或已存在的文件)

  • Ctrl + ww : 在垂直分割的窗口之間快速切換光標,方便多文件進行跨越編輯~

“光標在哪里,我們就在編輯那個文件!”,編輯操作始終圍繞光標所在位置進行~

5. 文件打開與跳轉

  • vim filename +n : 打開指定文件 filename,并直接跳轉到第 n 行,方便快速定位到需要編輯的位置~

6.字符替換

  • %s/src/des/ : src為需要替換的字符串,des為新替換的字符串~

7.選定字符串高亮

  • /字符串 : 選定字符串會高亮顯示,按n到下一個高亮顯示的字符串

五種常用模式🤩

通過這些命令,我們可以發現還有替換模式和視圖模式這兩種常用模式~

  • 模式切換

    • 命令模式 → 輸入模式i(插入,光標不動)、a(光標向后面移動一個字符)、o(光標向下移動有一個新行進行插入)等

    • 命令模式 → 替換模式R(大寫,也就是Shift+r)

    • 命令模式 → 視圖模式Ctrl+V(塊選擇)或 v(字符選擇)

    • 命令模式 → 底行模式::(冒號,也就是Shift + ;)

    • 返回命令模式:任何模式下按 Esc

vim的配置🤨

??????? 我們可以看到我們的vim是一個比較原生的狀態,很多的功能沒有,所以就需要進行配置~

Vim配置的核心目的是通過修改用戶家目錄下(不會影響別人)的.vimrc文件,實現以下目標:

  1. 個性化定制:調整Vim編輯器的行為(如縮進方式、搜索設置)、界面(如行號顯示、顏色主題)和功能(如快捷鍵映射),以適應不同用戶的編碼習慣和需求。

  2. 功能擴展:通過.vimrc文件,您可以安裝和管理插件(如文件瀏覽器、代碼補全工具),從而顯著增強Vim的功能,使其成為一個更加強大和高效的開發環境。

配置文件位置

  • 在Linux系統中,Vim的配置文件.vimrc通常位于用戶的家目錄下,例如:/home/zs/.vimrc

配置內容示例

  • 通過編輯.vimrc文件,您可以設置諸多選項,例如:
    • set number:顯示行號,方便定位代碼位置
    • syntax on:啟用語法高亮,提升代碼可讀性
    • set autoindent:自動縮進,保持代碼格式整潔
    • 安裝插件(如NERDTree、vim-plug等),擴展文件管理或插件管理功能

????????總結來說,Vim的配置是一個通過修改.vimrc文件來個性化定制和增強Vim編輯器功能的過程,它使得Vim能夠更好地適應我們的編碼風格和工作流程~大家可以根據需要進行配置~

補充:【!char】指令🤗

!char

!操作符與char命令的結合使用!char可重復執行歷史最近以char開頭的命令,實現靈活高效的命令行交互~


???本篇博客內容結束,期待與各位優秀程序員交流,有什么問題請私信???

???如果這一篇博客對你有幫助~別忘了點贊分享哦~???

??????個人主頁??????


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

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

相關文章

基于遷移學習的培養基配方開發方法

本文為學習筆記&#xff0c;原文專利&#xff1a; 中國專利公布公告 然后輸入 202110622279.7 概覽 一、問題背景 傳統培養基開發痛點&#xff1a; 數據依賴&#xff1a;需大量細胞實驗&#xff08;1000配方&#xff09;訓練專用模型 遷移性差&#xff1a;A細胞模型無法直接…

Web3.0與元宇宙:重構數字文明的技術范式與社會變革

一、技術融合&#xff1a;Web3.0與元宇宙的底層架構互補1.1 區塊鏈與智能合約&#xff1a;構建信任基石去中心化信任機制&#xff1a;Web3.0的區塊鏈技術為元宇宙提供去中心化信任框架&#xff0c;虛擬資產&#xff08;如土地、道具&#xff09;通過NFT&#xff08;非同質化代幣…

Java: OracleHelper

/*** encoding: utf-8* 版權所有 2025 ©涂聚文有限公司 * 許可信息查看&#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎* 描述&#xff1a; https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html ojdbc11* Author : geovi…

OSPFv3-一二類LSA

文章目錄OSPFv3 LSA類型Router LSANetwork LSA&#x1f3e1;作者主頁&#xff1a;點擊&#xff01; &#x1f916;Datacom專欄&#xff1a;點擊&#xff01; ??創作時間&#xff1a;2025年07月12日20點01分 OSPFv3 LSA類型 Router LSA 不再包含地址信息&#xff0c;使能 OS…

HugeGraph 【圖數據庫】JAVA調用SDK

1.引入依賴<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>28.0-jre</version> </dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifac…

軟考中級【網絡工程師】第6版教材 第2章 數據通信基礎(中)

考點分析&#xff1a;重要程度&#xff1a;???&#xff0c;本章可能是全書最難的章節&#xff0c;偏理論&#xff0c;公式多除了傳輸介質&#xff0c;其他知識點只考選擇題&#xff0c;考試一般占3 ~ 5分高頻考點&#xff1a;PCM、奈奎斯特定理、曼徹斯特編碼&#xff1b;難…

單片機(STM32-中斷)

一、中斷基礎知識 1.概念 中斷&#xff08;Interrupt&#xff09;是一種特殊的事件處理機制。當CPU正在執行主程序時&#xff0c;如果出現了某些緊急或重要的事件&#xff08;如外設請求、定時器溢出等&#xff09;&#xff0c;可以暫時中止當前的程序&#xff0c;轉而去處理…

gitlab-ci.yml

.gitlab-ci.yml 文件的位置 該文件應放置在 GitLab 項目的代碼倉庫的根目錄 下&#xff0c;具體說明如下&#xff1a;存儲庫根目錄 .gitlab-ci.yml 是 GitLab 持續集成&#xff08;CI&#xff09;的配置文件&#xff0c;需直接放在項目的代碼倉庫的根目錄&#xff08;與 .git 目…

使用JS編寫一個購物車界面

使用JS編寫一個購物車界面 今天我們來剖析一個精心設計的家具商店購物車頁面&#xff0c;這個頁面不僅美觀大方&#xff0c;還具備豐富的交互功能。讓我們一步步拆解它的設計理念和技術實現&#xff01; 頁面展示 頁面整體結構 這個購物車頁面采用了經典的電商布局模式&…

零信任安全架構:如何在云環境中重構網絡邊界?

一、云原生時代&#xff1a;傳統防火墻為何轟然倒塌&#xff1f; 當業務碎片化散落在AWS、阿里云、私有IDC&#xff0c;當員工隨手在咖啡廳WiFi連接生產數據庫&#xff0c;“內網可信”的基石瞬間崩塌&#xff0c;傳統防火墻徹底淪為馬奇諾防線&#xff1a; 邊界消亡&#xff1…

css實現燒香效果

效果&#xff1a;代碼&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>動態香燭效果&…

硬件產品的技術資料管控是確保研發可追溯、生產可復制、質量可控制的核心環節。

硬件產品的技術資料管控是確保研發可追溯、生產可復制、質量可控制的核心環節。以下針對BOM單、PCB文件、程序代碼、原理圖四大核心要素&#xff0c;結合行業實踐提出管控方向劃分及優化策略&#xff1a;&#x1f4cb; 一、硬件BOM單的精細化管控方向BOM單是硬件生產的“配方表…

Uniswap V2/V3/V4簡短說明

Uniswap 是以太坊上最知名的去中心化交易所&#xff08;DEX&#xff09;&#xff0c;它通過不同的版本&#xff08;V2、V3、V4&#xff09;不斷改進&#xff0c;變得更高效、更靈活。以下是用通俗易懂的方式介紹它們之間的異同&#xff1a; Uniswap V2&#xff1a;基礎版&#…

C++面向對象創建打印算術表達式樹

C面向對象&#xff0c;實現算術表達式樹的創建和打印的案例&#xff0c;來源于《C沉思錄》第八章&#xff0c;涉及數據抽象、繼承、多態&#xff08;動態綁定&#xff09;、句柄&#xff0c;其中句柄的使用是核心&#xff0c;關于句柄的較為簡單的文章鏈接點擊這里&#xff0c;…

力扣每日一題--2025.7.16

&#x1f4da; 力扣每日一題–2025.7.16 &#x1f4da; 3201. 找出有效子序列的最大長度 I&#xff08;中等&#xff09; 今天我們要解決的是力扣上的第 3201 題——找出有效子序列的最大長度 I。這道題雖然標記為中等難度&#xff0c;但只要掌握了正確的思路&#xff0c;就能…

SFT:大型語言模型專業化定制的核心技術體系——原理、創新與應用全景

本文由「大千AI助手」原創發布&#xff0c;專注用真話講AI&#xff0c;回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我&#xff0c;一起撕掉過度包裝&#xff0c;學習真實的AI技術&#xff01; 以下基于權威期刊、會議論文及技術報告&#xff0c;對監督微調&#x…

若依前后端分離框架配置多數據庫表

若依前后端分離框架配置多數據庫表1、配置application.yml2、注釋掉application-druid.yml中的數據庫3、在DataSourceType 中添加新增的數據庫來源4、配置DruidConfig文件4、1新增注入方法&#xff0c;在DataSourceType類添加數據源枚舉4、2在DruidConfig類dataSource方法添加數…

29.安卓逆向2-frida hook技術-逆向os文件(二)IDA工具下載和使用(利用ai分析so代碼)

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;圖靈Python學院 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

[析]Deep reinforcement learning for drone navigation using sensor data

Deep reinforcement learning for drone navigation using sensor data 基于傳感器數據的無人機導航深度強化學習方法 評價&#xff1a;MDP無記憶性&#xff0c;使用LSTM補足缺點。PPO解決新舊策略差距大的問題。 對于環境中的障礙物&#xff0c;設置增量課程&#xff0c;障礙…

SpringBoot項目啟動報:java: 找不到符號 符號: 變量 log 的解決辦法

問題&#xff1a;使用IDEA創建SpringBoot項目&#xff0c;在項目中使用 Slf4j 注解引入log日志后&#xff0c;啟動項目&#xff0c;報如下錯誤&#xff1a;原因&#xff1a;網上找了很多博文&#xff0c;說是lombook依賴沒有引入&#xff0c;但是我的pom.xml中已經引入 lombook…