主頁 >  其他 > [linux] 看了就會寫程式并且變成黑框高手的linux的基礎工具篇 ^.^

[linux] 看了就會寫程式并且變成黑框高手的linux的基礎工具篇 ^.^

2021-06-10 10:09:43 其他

目錄

  • 1. yum包管理器
    • 1.1 yum包管理器是干什么的?
    • 1.2 yum的基本使用命令
  • 2. Linux開發工具相關
    • 2.1 vim編輯器
      • 2.1.1 vim是什么?
      • 2.1.2 vim的簡單介紹
      • 2.1.3 vim的功能按鍵
      • 2.1.4 底行模式中常用的指令
    • 2.2 gcc/g++編譯器
      • 2.2.1 作用
      • 2.2.2 命令格式及引數解釋
      • 2.2.3 編譯程序及引數使用
    • 2.3 gdb除錯工具
      • 2.3.1 gdb除錯前的準備
      • 2.3.2 gdb除錯的小命令
      • 2.3.3 gdb除錯命令的演示
    • 2.4 make/makefile自動化構建工具
      • 2.4.1 自動化構建是什么
      • 2.4.2 makefile檔案怎么寫
      • 2.4.3 makefile作業原理
      • 2.4.4 內置變數和自定義變數
    • 2.4 git代碼管理工具
      • 2.4.1 linux下的git工具使用
  • 總結

注:以下所有命令執行,都是基于linux系統centos7.5版本下


在這里插入圖片描述

1. yum包管理器

1.1 yum包管理器是干什么的?

在linux系統中安裝軟體,通常是下載軟體原始碼,并進行編譯得到可執行程式,這種做法過于復雜,所以就有了形同windows的軟體商店,通過商店直接下載軟體包,進行直接安裝,

1.2 yum的基本使用命令

  1. 羅列liunx下的所有可以下載的軟體包,命令: yum list
    在這里插入圖片描述

  2. 上圖可以看出直接羅列出來軟體實在太多了,難以分辨,所以使用grep篩選出我們想看到的軟體包,命令: yum list | grep [軟體包名]
    在這里插入圖片描述

  3. 安裝軟體,命令: yum install (-y) [軟體包名]

linux中安裝檔案需要向系統目錄中寫入檔案,所以需要使用sudo命令或者切換到root用戶下,
安裝軟體時必須逐個安裝,不能同時安裝多個,

這里以安裝 lrzsz 為例,該軟體是用于windows和遠端linux機器通過xshell傳輸檔案的,
在這里插入圖片描述
此頁面顯示已經安裝了該軟體,進行的更新操作,

  1. 卸載軟體 yum remove (-y) [軟體包名稱]
    這里以卸載lrzsz為例,
    在這里插入圖片描述

2. Linux開發工具相關

在liunx系統中,我們最常用的功能無疑就是對軟體的開發了,如何進行程式的書寫,程式的編譯,除錯,代碼的管理,將會在下文中詳細介紹以上功能,

2.1 vim編輯器

2.1.1 vim是什么?

vim簡單來說,就是一款編輯器,可以撰寫程式的編輯器,其中可以書寫c/c++等,具有代碼高亮顯示等等一些特性,

2.1.2 vim的簡單介紹

1.vim我們常用的一共有三種模式,分別為命令模式,插入模式,底行模式,

  • 命令模式:在此模式下,可以控制螢屏游標的移動,字符、字或行的洗掉,移動復制某區段,或進入插入模式、底行模式下,
  • 插入模式:可以進行文字的輸入,按 esc 回到命令列模式,該模式使用最為頻繁,在底行模式下按下鍵盤 i 鍵進入插入模式,
  • 底行模式:此模式中,可以進行檔案的保存或退出,也可以進行檔案替換、查找字串,列出行號等操作,在命令模式中,shift + : 進入該模式,

在這里插入圖片描述

2.1.3 vim的功能按鍵

貼一張鍵位圖:
在這里插入圖片描述
加下來,挑一些常用功能介紹一番,這些功能都是在正常模式下的操作,并且區分大小寫,在vim中最常用的7個功能移動游標、洗掉、復制、粘貼、替換、撤銷、更改

1.移動游標

?方法一:鍵盤上下左右鍵

?方法二:

操作現象
h游標左移
l游標右移
k游標上移
j游標下移
gg游標快速移動至第一行
G游標快速回到最后一行
[num]G游標跳轉至num行

2.洗掉字符

操作現象
x向后洗掉游標所在位置的元素
[num]x向后洗掉num個字符
X向前游標所在洗掉字符
[num]X向前洗掉num個字符
dd對游標所在行進行剪切
[num]dd剪切num行

3.復制字符

操作現象
yy復制游標所在行
[num]yy復制游標以下num行

4.粘貼

操作現象
p在游標的下一行進行粘貼
P在游標的上一行進行粘貼

5.替換

操作現象
r替換當前游標所在的字符
R進入到replace模式,進行替換,esc結束替換

6.撤銷

操作現象
u撤銷上次的操作
ctrl + r反撤銷

7.更改

操作現象
cw洗掉當前單次,并進入插入模式

2.1.4 底行模式中常用的指令

1.搜索字符

操作現象
/[待查找字符]向下搜索
?[待查找字符]向上搜索

上述操作如果第一次不是想要查找的值可以按 n 繼續查找

在這里插入圖片描述
2.查找指定字符并全文替換
:%s/[待替換字符]/[替換后字符]/g 引數含義 %s全文替換 g替換當前行所有目標字串

替換前:
在這里插入圖片描述
替換后:
在這里插入圖片描述
3.顯示取消行號

操作現象
set nu顯示行號
set nonu取消顯示行號

4.批量注釋與批量取消注釋

操作現象
ctrl+v -> 選中注釋行(j/k) -> I ->插入注釋符 -> esc批量注釋
ctrl+v-> 選中注釋行(j/k/l/h) -> x批量取消注釋

2.2 gcc/g++編譯器

2.2.1 作用

gcc 用來編譯c語言,g++用來編輯c++,如果提示無法使用該命令,則需要利用上述的yum管理器進行安裝

2.2.2 命令格式及引數解釋

命令格式:gcc/g++ [引數] 編譯的檔案名 [引數] [目標檔案]

引數作用
-E對檔案進行預處理,生成 .i 檔案
-S對檔案進行匯編,生成 .s 檔案
-c編譯目標代碼,生成 .o 檔案
-o檔案輸出到XX檔案
-g編譯最后的引數,可以除錯程式
-static對檔案進行靜態編譯
-shared動態編譯,不填寫此引數默認為動態編譯

2.2.3 編譯程序及引數使用

在liunx編譯中需要經歷4個程序,預處理、編譯、匯編、鏈接,

1.預處理

在預處理階段,主要完成頭檔案展開、宏替換、條件編譯、去注釋等,處理移 # 開頭的所有代碼,
命令格式 gcc -E filename.c -o filename.i

在這里插入圖片描述
在這里插入圖片描述

2.編譯

生成匯編代碼,在這個階段會進行代碼規范性的檢測,語法語意的檢查,并且編譯為匯編代碼
命令格式: gcc -S filename(.i) -o sort.s

在這里插入圖片描述
在這里插入圖片描述
3.匯編

將編譯生成的匯編代碼,轉化為機器碼檔案,生成 .o檔案
命令格式: gcc -c filename.s -o filename.o

在這里插入圖片描述
4.鏈接

對編譯的機器碼檔案,進行鏈接生成可執行檔案
可以省略上述步驟,直接生成可執行檔案
命令格式: gcc [filename] -o [filename]

在這里插入圖片描述
在這里插入圖片描述
注意

在鏈接程序中,分為靜態鏈接和動態鏈接
??靜態鏈接:靜態鏈接的可執行檔案大于動態鏈接生成的可執行檔案,因為在這個程序中在所有依賴檔案全部加入到可執行檔案中,運行時不依賴任何檔案,
??動態鏈接:默認方式為動態鏈接,不將庫檔案加入到程式中,而是在程式運行時動態鏈接所需要的庫檔案,

靜態鏈接與動態鏈接大小對比:
在這里插入圖片描述

2.3 gdb除錯工具

2.3.1 gdb除錯前的準備

程式的版本共有兩種,分別為debug版本和release版本,debug版本是提供給程式員除錯的程式版本,而release版本是發布程式的版本,而linux默認編譯出來的release版本,所以想要除錯程式必須要在編譯后加上-g引數,
gcc filename.c -o filename -g

2.3.2 gdb除錯的小命令

gdb 可執行檔案進入除錯模式才能有以下的操作,

引數作用
l顯示當前除錯程式的代碼,一次顯示10行
r運行程式,沒有斷點則會一次執行完程式
b 行號在指定行號位置加入斷點
i b查看所有斷點資訊
disable 斷點序號禁用斷點
enable 斷點序號啟用斷點
n逐程序執行
s逐陳述句執行
c從當前位置連續執行代碼,直至遇到斷點或程式結束
p 變數名列印指定變數資訊,也可以列印自定義型別變數
bt查看呼叫堆疊,從底向上看堆疊資訊
where與bt命令相同
q退出除錯

2.3.3 gdb除錯命令的演示

  1. l 顯示程式代碼
    在這里插入圖片描述

  2. r 運行代碼
    在這里插入圖片描述

  3. b [行號] 對指定行號設定斷點
    在這里插入圖片描述

  4. i b 查看所有斷點資訊
    在這里插入圖片描述

  5. disable 斷點序號
    在這里插入圖片描述

  6. enable 斷點序號
    在這里插入圖片描述

  7. n 逐程序執行
    一次性執行完QuicSortNonR()函式
    在這里插入圖片描述

  8. s 逐陳述句執行
    進入到PrintResult()函式體中執行斜體樣式
    在這里插入圖片描述

  9. p 變數名
    在這里插入圖片描述

  10. bt 查看堆疊資訊
    在這里插入圖片描述

2.4 make/makefile自動化構建工具

2.4.1 自動化構建是什么

如果工程中檔案量非常大,則上面的gcc命令則需要手動一步步去執行,太慢了,所以有了makefile檔案,
makefile檔案書寫一次,只需要使用make命令,整個工程就會自動編譯,
makefile檔案寫編譯規則,make負責解釋這些規則,

2.4.2 makefile檔案怎么寫

1.書寫規則
??makefile檔案由三部分構成,分別是 目標檔案、依賴物件、編譯命令共同組成,
??偽目標:將物件設定為偽目標,則不管檔案有沒有更新的情況下都不會生成目標物件,常用于工程清理,比如說下發圖片中第22行就是偽目標物件
在這里插入圖片描述

上述makefile檔案中的依賴關系為:
sort_test 依賴 sort.ostack.o
sort.ostack.o 依賴 sort.sstack.s
以此類推

2.4.3 makefile作業原理

1.make會在當前目錄下尋找名字為makefileMakefile的檔案進行編譯
2.make命令只會為生成第一個目標檔案而服務,上述例子中只會為生成sort_test檔案而服務
3.如果目標檔案的依賴物件不存在會在下方命令中尋找可以生成該依賴物件的命令進行執行,會先生成所需要的依賴物件再去生成目標物件
4.如果檔案沒有更新則執行make命令不會去重新編譯,如果檔案有更新,再去執行make命令才會對改變的目標重新生成目標物件,

  1. 執行make命令
    在這里插入圖片描述

  2. 檔案未更新執行 make命令
    在這里插入圖片描述

  3. 檔案更新執行make命令
    在這里插入圖片描述

  4. 清理工程
    在這里插入圖片描述

2.4.4 內置變數和自定義變數

1.內置變數
??在這里只列最常用的兩個變數

引數作用
$^代表所有依賴物件
$@代表所有目標物件

2.自定義變數

自定義方法: 變數名 = 字串
使用方法:$(變數名) 一般用來定義名字出現次數較多的變數

??還記得上面makefile檔案中的代碼嗎,我們將上述代碼改寫以下利用內置變數與自定義變數進行改寫,

在這里插入圖片描述
在這里插入圖片描述


2.4 git代碼管理工具

??在這個工具的使用中,我會以我的個人倉庫作為示例進行演示,

1.登錄自己的遠端倉庫
??登錄自己的遠端倉庫,并且新建一個倉庫,我這里有倉庫了就不新建了,

2.復制遠端倉庫鏈接
??找到遠端倉庫的鏈接復制下來,一會有大用,
在這里插入圖片描述

2.4.1 linux下的git工具使用

沒有工具的要先下載工具

1.克隆專案到本地

如果想對遠端倉庫進行代碼的提交,則必須先要克隆倉庫到本地
git clone [url]
克隆時,也保證當前檔案夾不是倉庫

在這里插入圖片描述
2.將代碼交由git管理

將代碼放入倉庫中,如果直接在倉庫新建代碼,但是它不歸倉庫所管理,所以要通過add命令交由倉庫管理,
git add [檔案名]

在這里插入圖片描述
3.提交改動到本地

上一步做完之后,新建的檔案已經由倉庫管理了,本地倉庫沒有接收這個改動,所以將改動提交至本地,
git commit -m "日志資訊"
提交代碼時,一定要提前配置好用戶名和郵箱地址,下面就是反例,

在這里插入圖片描述
4.將改動過的代碼提交到遠端倉庫

git push origin master

在這里插入圖片描述
在這里插入圖片描述

總結

以上的所有內容就是關于liunx工具的使用了,文章中難免會出現一些小問題,如果有發現,歡迎批評指正,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286516.html

標籤:其他

上一篇:35 行代碼實作一個簡單的 shell

下一篇:中科微CI24R1超低成本2.4G無線收發芯片替代XN297支持BLE4.2

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more