Linux學習筆記 基本操作3

2022-08-02 17:21:08 字數 3876 閱讀 8047

1. vim編輯器的使用

2. gcc編譯器

3. 靜態庫的製作 -- lib

4. 動態庫的製作    -- dll

vi -- vim

vim是從vi發展過來的一款文字編輯器

vi a.txt

前提: 安裝了vim軟體

工作模式:

1. 命令模式 -- 開啟檔案之後, 預設進入命令模式

2. 編輯模式 -- 需要輸入一些命令, 切換到編輯模式

3. 末行模式 -- 在末行模式下可以輸入一些命令

命令模式下的操作:

1>. 游標的移動

h  j  k  l

前 下 上 後

行首: 0

行尾: $

檔案開始位置: gg

檔案末尾: g

行跳** 300g

2>. 刪除操作

刪除游標後邊的字元: x

刪除游標前邊的字元: x

刪除游標單詞後面的: dw  (游標移動到單詞的開始位置, 否只能刪除一部分)

刪除游標到行首的字串: d0

刪除游標到行尾的字串: d(d$)

刪除游標當前行: dd

刪除多行: ndd (n -- 自然數)

3>. 撤銷操作

撤銷: u

反撤銷: ctrl + r

4>. 複製貼上

複製: yy

複製多行: nyy

貼上: p (游標所在行的下一行)

貼上: p (游標所在行)

剪下 == 刪除

5>. 可視模式

切換到可是模式: v

選擇內容: hjkl

操作: 複製: y   刪除: d

6>. 查詢操作

1). /hello(向下查詢,到尾部返回頭部)

2). ?hello(向上查詢,到頭部返回尾部)

3). # -- 把游標移動到查詢的單詞身上 , 按#

遍歷時候的快捷鍵: n/n

7>. r: 替換當前字元

縮排:向右: >>

向左: <<

8>. 檢視man文件 可以指定章節

3 shift + k

文字模式下的操作:

切換到文字模式:

a -- 在游標所在位置的後邊插入

a -- 在當前行的尾部插入

i -- 在游標所在位置的前邊插入

i -- 在游標所在行的行首插入

o -- 在游標所在行的下邊開闢乙個新的行

o -- 在游標所在行的上邊開闢乙個新的行

s -- 刪除游標後邊的字元

s -- 刪除游標所在的行

末行模式下的操作:

:行跳轉  :123 -> 跳轉到第123行

替換一行  :s/abc/123 -> 將當前行中的第乙個abc替換為123

:s/abc/123/g -> 將當前行中的abc全部替換為123

替換全部  :%s/abc/123 -> 將所有行中的第乙個abc替換為123

:%s/abc/123/g -> 將所有行中的abc全部替換為123

:10,30s/abc/123/g -> 將10-30行中的abc全部替換為123

執行shell命令  末行模式裡輸入!,後面跟命令

查詢  :s/tom

儲存退出:

q: 退出

q!: 退出不儲存

w: 儲存

wq: 儲存退出

x: == wq

在命令模式下儲存退出: zz

末行模式分屏操作:

1>. 水平分屏    :sp

2>. 垂直分屏    :vsp

3>. 命令:sp(vsp) + 檔名 水平或垂直拆分視窗顯示兩個不同的檔案

ctrl+ww 切換兩個螢幕

命令 :wq 儲存並退出游標所在的螢幕

命令 :wqall 儲存並退出所有螢幕

1>. gcc工作流程: gcc hello.c -o hello

預處理器cpp:標頭檔案展開,巨集替換,注釋去掉

gcc -e hello.c -o hello.i

編譯器gcc:c檔案變成彙編檔案

gcc -s hello.i -o hello.s

彙編器as:彙編檔案變成二進位制目標檔案

gcc -c hello.s -o hello.o

鏈結器ld:將函式庫組合到目標檔案

gcc hello.o -o hello

2>. gcc的一些引數使用

1). -i 指定頭檔案目錄

2). -c 只編譯子程式

3). -o 產生指定名字的目標檔案

4). -d 編譯時定義巨集

5). -g 包含除錯資訊(gdb除錯的時候必須加此引數)

6). -wall 提示更多警告資訊

7). -o 編譯優化0到3 級別

1>. 命名規則

1). lib + 庫的名字 + .a

2). libmytest.a

2>. 製作步驟:

1). 生成對應的.o檔案 -- .c --> .o   -c

2). 將生成的.o檔案打包  ar rcs + 靜態庫的名字(libmytest.a) + 生成的所有的.o

3>. 發布和使用靜態庫:

1). 發布靜態庫

生成的靜態庫需要跟對應的標頭檔案同時發布

2). 標頭檔案

gcc + 原始檔 + -l 靜態庫路徑 + -l靜態庫名 + -i頭檔案目錄 + -o 可執行檔名

3). 打包到程式的最小單位是.o

nm libmytest.a  可以檢視靜態庫包含的內容 (可執行檔案也可以檢視)

4>. 優缺點:

優點:定址方便,速度快

庫被打包到可執行程式中,直接發布可執行程式即可使用

缺點:靜態庫的**在編譯過程中已經被載入可執行程式,因此體積較大。

如果靜態庫改變了,那麼你的程式必須重新編譯。

1>. 命名規則:

1). lib + 名字 + .so

2>. 製作步驟:

1). 生成與位置無關的** (生成與位置無關的.o)引數 -fpic 表示生成與位置無關** 執行完畢後生成一系列的 .o 檔案

gcc -fpic -c a.c b.c c.c

2). 將.o打包成共享庫(動態庫)

gcc -shared -o libmytest.so a.o b.o c.o -i頭檔案目錄

3>. 發布和使用共享庫:

4>. 解決程式執行時動態庫無法被載入的問題:

發現沒有給動態鏈結器(ld-linux.so.2)指定好動態庫 libmytest.so 的路徑

1). 複製到系統的庫目錄/lib/中 -- 不允許使用

2). 臨時測試

環境變數: ld_library_path=將動態庫的路徑設定給該變數

將設定的值, 匯入到系統環境變數中: export ld_library_path

當終端關閉, 設定會失效

3).    不常用的方法(永久設定):

在家目錄的 .bashrc檔案 中新增一句話: export ld_library_path=動態庫目錄的絕對路徑

.bashrc修改完成, 需要重啟終端

4).    

1. 需要找動態聯結器的配置檔案 --  sudo vi /etc/ld.so.conf

2. 動態庫的路徑寫到配置檔案中 -- 絕對路徑

3. 更新 -- sudo ldconfig -v(輸出一些資訊)

5>. 優缺點:

優點:節省記憶體(共享)

易於更新(動態鏈結)停止執行程式 使用新庫覆蓋舊庫(保證新舊庫名稱一致,介面一致) 「介面」 重新啟動程式。

缺點:延時繫結,速度略慢

發布時需要將動態庫發布給使用者

Linux學習筆記《基本命令3

檔案壓縮與解壓 下面來學習四個常用的壓縮命令。gzip 特點 1.只能壓縮檔案,不能壓縮目錄 2.不保留原始檔 root localhost test gzip aaa 將aaa檔案進行壓縮 root localhost test gunzip aaa.gz 將aaa.gz檔案進行解壓 root l...

linux之檔案基本操作學習筆記

通過本教程你將熟悉linux檔案的基本操作以及其具體使用。本文目錄結構摘抄自 鳥哥的linux私房菜 基礎學習篇 第三版 路徑分類 特徵說明 絕對路徑 需要寫完整的路徑,需要從根路徑開始,路徑名一般較長,精確 相對路徑 或者不帶任何符號 不需要寫完整的路徑,根據當前的路徑去定位路徑,代表上一級,而不...

Linux學習筆記之基本命令(3)

1.如何通過命令列重啟linux作業系統?答 reboot 2.如何在命令列中快速刪除游標前 後的內容?答 前 ctrl u 後 ctrl k 3.如何刪除 tmp下所有a開頭的檔案?答 rm f tmp a 4.系統重要檔案需要備份,如何把 etc passwd備份到 tmp目錄下?答 cp et...