shell基本命令的使用,02 linux常用命令

 2023-12-09 阅读 25 评论 0

摘要:文章目錄Linux常用命令1.基本命令1.1 命令入門1.1.1 命令提示符詳解1.1.2 命令格式1.2 獲取命令的幫助1.2.1 查手冊&搜索引擎1.2.2 man命令1.2.2.1 man的安裝1.2.2.2 漢化man提示信息1.2.2.3 man的使用1.2.3 命令 --help1.3 基本命令echo、ls、pwd、cd1.3.1 基本命令echo

文章目錄

  • Linux常用命令
    • 1.基本命令
      • 1.1 命令入門
        • 1.1.1 命令提示符詳解
        • 1.1.2 命令格式
      • 1.2 獲取命令的幫助
        • 1.2.1 查手冊&搜索引擎
        • 1.2.2 man命令
          • 1.2.2.1 man的安裝
          • 1.2.2.2 漢化man提示信息
          • 1.2.2.3 man的使用
        • 1.2.3 命令 --help
      • 1.3 基本命令echo、ls、pwd、cd
        • 1.3.1 基本命令echo
        • 1.3.2 基本命令ls
        • 1.3.3 基本命令pwd
        • 1.3.4 基本命令cd
      • 1.4 基本命令mkdir、rm
        • 1.4.1 基本命令mkdir
        • 1.4.2 基本命令rm
      • 1.5 基本命令cp、mv、ln
        • 1.5.1 基本命令cp
        • 1.5.2 基本命令mv
        • 1.5.3 基本命令ln
      • 1.6 進程狀態查看命令ps
      • 1.7 test命令
    • 2. 文件系統命令
      • 2.1 虛擬目錄
      • 2.2 文件系統命令df、mount、umount
        • 2.2.1 df命令
        • 2.2.2 mount命令與umount命令
    • 3.系統操作命令
      • 3.1 du命令
      • 3.2 stat命令
      • 3.3 touch命令
    • 4.文本操作命令
      • 4.1 cat命令
      • 4.2 head命令
      • 4.3 tail命令
      • 4.4 管道|
      • 4.5 xargs
      • 4.6 數據重定向
      • 4.7 cut 命令
      • 4.8 sort命令
      • 4.9 sed命令
      • 4.10 awk
      • 4.11 通過awk實現報表統計
      • 4.12 wc命令
      • 4.13 vi/vim編輯器的使用
    • 5.文件壓縮與打包


  • gitee地址:linux基礎

linux基礎傳送門:

  • 01 linux操作系統概述與安裝
  • 02 linux常用命令
  • 03 linux用戶權限和軟件安裝與管理
  • 04 grep正則表達式與shellscipt腳本編程

Linux常用命令

1.基本命令

1.1 命令入門

1.1.1 命令提示符詳解

image-20211122202253587

shell基本命令的使用、? root表示用戶名;node1表示主機名;~表示當前目錄;#表示系統權限;$表示普通權限

1.1.2 命令格式

? 命令 選項 參數 (三者之間要有空格,區分大小寫) ,command [-options] [args] 如果[args]參數有多個,需要以空格間隔

image-20211122203635906

? 上圖中,ls -a /home表示查看home目錄下的文件;ls -a表示查看當前目錄下的文件;ls -a -l表示以列表的形式來顯示文件 的相關信息;ls -al或者ls -la是它的縮寫;ls -al install*表示查找以install開頭的文件

1.2 獲取命令的幫助

? 當linux操作系統作為服務端,我們希望它的性能更好,所以,很多服務器端的linux系統不會安裝圖形界面, 只有命令行界面,我們很多操作都在命令行下輸入。在學習linux命令時,我們可以通過查手冊&搜索引擎來學習,也可以通過man命令與在命令后輸入--help來學習。

1.2.1 查手冊&搜索引擎

? 手冊見《參考手冊&資料》,其中《鳥哥的linux私房菜:基礎學習篇 (第四版)》可以作為工具書來補充學習。

1.2.2 man命令

1.2.2.1 man的安裝

vim常用命令、? 當前虛擬機中不能直接使用 man,默認是沒有安裝的,不識別 man 命令
image-20211122205853085

? 所以需要安裝 man 和 man-pages 手冊,查看命令的幫助信息
image-20211122210050530

? 查看命令ls
image-20211122210322966

? 輸入:q,退出命令查看

1.2.2.2 漢化man提示信息

? 要想漢化 man 提示信息,系統中需要安裝 man-pages-zh-CN 軟件包。默認情況下, 系統自帶的 yum 源不包含 man-pages-zh-CN,所以需要將下載后的第三方源epel保存到默認的源目錄/etc/yum.repos.d/

  1. linux常用的20個命令。安裝 wget image-20211122212651787

  2. 將 epel 的源放到本地,然后清除 yum 本地緩存,重新生成緩存 image-20211122214909337

  3. 安裝 man-pages-zh-CN 軟件包image-20211122215122939

  4. 修改系統的語言環境為中文(臨時修改)

    [root@node1 ~]# echo $LANG en_US.UTF-8
    en_US.UTF-8
    [root@node1 ~]# LANG=zh_CN.UTF-8 
    [root@node1 ~]# echo $LANG 
    zh_CN.UTF-8
    

    長期修改:[root@node1 ~]# vim /etc/sysconfig/i18n
    image-20211122215711470

    linux常用基本命令?保存退出,重啟后就可以使用了
    image-20211122220256774

1.2.2.3 man的使用

? enter 向下一行

? 空格按頁向下翻

? b 向上翻頁

? p 直接翻到首頁

linux vim命令?? 查找按 /要查找的內容,查找 下一個/上一個:按n/N

? 退出按 q

1.2.3 命令 --help

? 通過命令 --help可以查看命令中參數的作用
image-20211124212143255

1.3 基本命令echo、ls、pwd、cd

1.3.1 基本命令echo

? echo用于顯示一行文本, image-20211125135325777

? echo -n 表示不要另起新行
image-20211125135519577

常用shell命令。? echo -e 表示解釋逃逸字符
image-20211125135659325

? echo也可用于顯示環境變量與自定義變量
image-20211125135906773

? 當在 shell 中執行命令的時候,默認到 PATH 指定的路徑中查找可執行文件。 如果在 PATH 中的多個目錄都包含該可執行文件,則執 行最先找到的。為什么ls、mv這些命令可以直接用呢?因為都在 PATH 指定的路徑的可執行文件中
image-20211125140334308

1.3.2 基本命令ls

? ls 命令用于列出目錄內容 ,單獨的ls命令用于查看當前目錄下的內容,隱藏文件并不會顯示
image-20211125140957120

? ls -l:添加-l 以長格式輸出,列出根目錄下內容的詳細列表
image-20211125141015550

linux簡單命令、? ls命令可以后面跟多個目錄,列出多個目錄的內容,目錄間以空格分隔
image-20211125141203150

? ls -a顯示所有的內容,包括隱藏文件;ls -al以列表的方式顯示所有的內容
image-20211125141527774

? ls -R:可以顯示多級目錄
image-20211125144141810

1.3.3 基本命令pwd

? pwd查看當前工作目錄路徑

1.3.4 基本命令cd

? cd命令可以用于切換目錄

linux常用命令詳解、? 如果 cd 后什么都不寫或者cd 后跟波浪線,表示直接回當前用戶家目錄
image-20211125142114890

? root 用戶可以直接通過絕對路徑進到普通用戶的家目錄;也可以直接跟波浪線用戶名表示直接進入到某個用戶的家目錄
image-20211125142455524

? cd 后也可以跟減號(-)用以表示回到最后一次切換之前的目錄,多次使用減號在最近兩個目錄之間切換
image-20211125142731979

? cd ..表示用于返回上一級目錄
image-20211125143022430

1.4 基本命令mkdir、rm

1.4.1 基本命令mkdir

? mkdir :用于創建目錄
image-20211125143618434

linux常用命令vi,? mkdir -p:用以創建多層目錄,因為系統發現某一級目錄不存在的時候創建父目錄
image-20211125143921013

? 可以使用大括號高效創建相似的目錄
image-20211125144742788

1.4.2 基本命令rm

? rm命令用于刪除文件;直接刪除,需要確認 yes
image-20211125145352714

? rm -f:添加-f 選項可以不用確認強制刪除
image-20211125145535012

? rm -r(刪除文件夾):如果 rm 的參數是目錄,則會提示需要迭代刪除而不能成功,添加-r 參數表示迭代刪除;
image-20211125145949052

? rm -rf可以使用-rf 選項,迭代強制刪除某個文件或目錄,此命令慎用
image-20211125150042879

1.5 基本命令cp、mv、ln

1.5.1 基本命令cp

cp 文件… 目標目錄 表示拷貝文件到目標目錄,可以同時拷貝多個文件,文件名之間用空格隔開
image-20211125171715138

? cp -r 目錄 目標目錄表示拷貝目錄到目標目錄,-r表示迭代的拷貝某個目錄
image-20211125172040605

1.5.2 基本命令mv

? mv 用于移動或重命名文件,它與cp、rm命令不同,可以移動文件/目錄,不需要-r
image-20211125172428092

? Linux 中沒有專門改名的命令,mv命令兼職改名,可以更改文件與文件夾的名字
image-20211125190747434

1.5.3 基本命令ln

ln用于創建硬鏈接或軟鏈接

? ln創建硬鏈接,創建的是一個文件,大小與源文件相同
image-20211125191630207

? ln -s用于創建軟鏈接,當編輯ln2時,實際上打開的是profile
image-20211125191255257

? 使用 ll -i 選項讓 ll 打印文件的 inode 信息,發現硬鏈接創建的文件與源文件是同一個文件。如果刪除源文件,則軟鏈接就找不到 文件,而硬鏈接可以找到
image-20211125192947849

? 當將文件重新復制一份,發現軟鏈接可以找到新文件,硬鏈接與新文件不一致
image-20211125194053896

1.6 進程狀態查看命令ps

? ps命令查看系統內進程信息

? ps -ef查看磁盤使用情況
image-20211125194550965

? ps aux 觀察系統所有的程序數據 (常用),其中,

? 1. a :和輸入終端(terminal) 關聯的所有 process,通常與 x 一起使用, 列出完整信息。

? 2. x :后臺進程,通常與 a 這個參數一起使用,可列出較完整信息

? 3. u :有效使用者 (effective user) 相關的 process
image-20211125200939409

? 過濾查看與pts/1有關的進程
image-20211125201058751

? 以下為各選項的含義

? ? USER:該 process屬于那個使用者

? ? PID :該 process 的程序標識符。

? ? %CPU:該 process 使用掉的 CPU資源百分比

? ? %MEM:該process 所占用的物理內存百分比

? ? VSZ :該 process 使用掉的虛擬內存量 (Kbytes)

? ? RSS :該 process占用的物理的內存量 (Kbytes)

? ? TTY :該 process 是在那個終端機上面運作,若與終端機無關則顯示 ?另外,tty1-tty6是本機上面的登入者程序,若為 pts/0 等等 ,則表示為由網絡連接進主機的程序。

? ? STAT:該進程目前的狀態,狀態顯示與 ps -l 的 S旗標相同 (R/S/D/T/Z)

? ? START:該 process被觸發啟動的時間

? ? TIME :該 process實際使用 CPU 運作的時間。

1.7 test命令

? 計算 3 > 2 的結果,打印返回值,計算 3 < 2 的結果,打印返回值。 echo $? 打印上一行命令的執行結果,成立返回 0(

? true),不成立返回 1(false)。其中,-gt是大于,-ge是大于等于,-lt是小于,-le是小于等于,-eq是等于
image-20211125203034576

? 上面的命令也可以用如下方式來表示:
image-20211125204502339

? []和內容之間一定要有空格,否則報錯。

2. 文件系統命令

2.1 虛擬目錄

虛擬目錄中各個目錄的用途

目錄用途
/虛擬目錄的根目錄。通常不會在這里存儲文件
/bin二進制目錄,存放許多用戶級的 GNU 工具
/boot啟動目錄,存放啟動文件
/dev設備目錄,Linux 在這里創建設備節點
/etc系統配置文件目錄
/home主目錄,Linux 在這里創建用戶目錄
/lib庫目錄,存放系統和應用程序的庫文件
/media媒體目錄,可移動媒體設備的常用掛載點
/mnt掛載目錄,另一個可移動媒體設備的常用掛載點
/opt可選目錄,常用于存放第三方軟件包和數據文件
/proc進程目錄,存放現有硬件及當前繼承的相關信息
/rootroot 用戶的主目錄
/sbin系統二進制目錄,存放許多 GNU 管理員級工具
/srv服務目錄,存放本地服務的相關文件
/sys系統目錄,存放系統硬件信息的相關文件
/tmp臨時目錄,可以在該目錄中創建和刪除臨時工作文件
/usr大量用戶級的 GNU 工具和數據文件都存儲在這里
/var可變目錄,用以存放經常變化的文件,比如日志文件

2.2 文件系統命令df、mount、umount

2.2.1 df命令

? df查看系統掛載的磁盤情況
image-20211125214450718

? df -h以適合的單位查看系統掛載的磁盤情況
image-20211125214540623

2.2.2 mount命令與umount命令

? 將光驅掛載到/mnt 目錄與卸載掉掛載的分區/mnt
image-20211125220004599

3.系統操作命令

3.1 du命令

? du命令可以為目錄遞歸地匯總每個 FILE 的磁盤使用情況

? ᅳ a :列出所有的文件與目錄容量

? ᅳ h :以人們較易讀的容量格式(G/M)顯示

? ᅳ s :列出總量,而不列出每個各別的目錄占用容量

? ᅳ k :以 KBytes 列出容量顯示

? ᅳ m :以MBytes列出容量顯示

? du -s:添加-s 參數可以生成指定目錄的匯總信息,也就是共占用多大的磁盤空間
image-20211125220736128
? du -sh:添加-h 參數可以顯示為人類可以讀懂的格式
image-20211125220848891
? 將路徑寫成./*統計當前目錄下每項內容占用的磁盤空間信息
image-20211125220937087

3.2 stat命令

? stat命令:顯示文件的元數據
image-20211125221600302

3.3 touch命令

? touch 已存在的文件,抹平各個時間 ;touch 不存在的文件,則創建文件
image-20211125221859058

4.文本操作命令

4.1 cat命令

? cat:直接查看一個文件的內容,適合查看行數相對較少的文件(100行左右);nl與tac指令與cat類似
image-20211126140901045

? nl命令:添加行號打印
image-20211126140918229
image-20211126140951779
? tac命令:反向輸出,tac 功能與 cat 類似,但是是由文件最后一行反向連續輸出到屏幕上

image-20211126141128669

4.2 head命令

? head命令表示顯示前幾行,默認顯示前10行,可使用head -n來控制顯示前n行

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-c5bQBIH8-1638685141211)(…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20211126142207725.png)]

? head -n -120表示后面120行都不打印
image-20211126142619420

4.3 tail命令

? 命令格式:tail [ -n number] 文件

? 選項與參數: -n:后面接數字,代表顯示幾行的意思 ;-f:表示持續偵測后面文件內容的改變,直到按下 Ctrl+c 才會結束 tail 的偵 測。

? tail命令:默認情況下顯示最后 10 行
image-20211126142934605

? tail -n 20 文件默認顯示后面的20行
image-20211126143123455

? tail -n +50 文件顯示從第50行開始直至文件結尾部分的內容
image-20211126143503889

? tail -f 文件表示持續偵測后面文件內容的改變,直到按下 Ctrl+c 才會結束 tail 的偵測。

4.4 管道|

? |:管道左側的輸出作為右側的輸入,常與grep一起使用用于過濾

? ps aux|grep bash:過濾查看與bash有關的進程
image-20211126165754195

? head -n 20 profile | tail -n 10:查看文件的中間10行
image-20211126170645752

4.5 xargs

? xargs:將前面輸出作為后面命令的參數,將步驟 1 的內容做為步驟 2 的命令的選項參數拼接起來,執行得到的結果
image-20211126171424822

4.6 數據重定向

? 后期,在寫shell腳本與操作時,我們會將數據重定向到別的位置

? 標準輸入(stdin):編號為 0

? 標準輸出(stdout):編號為 1

? 標準錯誤輸出(stderr):編號為 2

? 1>:以覆蓋的方法,將正確的數據輸出到文件;

? 1>>:以追加的方法,將正確的數據輸出到文件;

? 2>:以覆蓋的方法,將錯誤輸出的數據輸出到文件;

? 2>>:以追加的方法,將錯誤輸出的數據輸出到文件;
image-20211126174309045 image-20211126174329503

? tee 命令,將輸入分成兩個輸出 ,既向控制臺輸出,也向文件寫入
image-20211126174348364

4.7 cut 命令

? cut命令:顯示切割的行數據 ,源文件并不會改變

			- `-s`:不顯示沒有分隔符的行- `-d`:指定分隔符對源文件的行進行分割 
  • -f :選定顯示哪些列 ,其中m-n表示 m 列到 n 列 ;-n表示 第一列到 n 列 ;m-表示 第 m 列到最后一列;n表示 第 n 列 ;x,y,z表示 獲取第 x,y,z 列
    image-20211126194819362
    image-20211126195126346
    image-20211126195507076

? -- output-delimiter表示指定輸出的時候的各字符分隔符
image-20211126200010876

4.8 sort命令

? sort:排序文件的行

  • -n:按數值排序

  • -r:倒序 reverse

  • -t:自定義分隔符

  • -k:選擇排序列

  • - f:忽略大小寫

? 以如下sort.txt文件為例進行排序

a b 1
dfdsa fdsa 15
fds fds 6
fdsa fdsa 8
fda s 9
aa dd 10
h h 11

? sort默認按字符串字典序排序(升序),并不會改變源文件的內容
image-20211126201052296

? sort -t ' ' -k 2 文件:表示指定字段分隔符,按照第 2 個字段的字典序排序
image-20211126201444692

? sort -t ' ' -k 3 -n 文件:表示指定字段分隔符,按照第 3 個字段的值數值序排序 ,如果不添加-n會將數字當成字符串排序
image-20211126201855182

? -r:添加-r倒序排序
image-20211126202137815

4.9 sed命令

? sed又稱為行編輯器,可以將文件里的內容逐行進行讀取逐行進行編輯。使用場景是有5000臺服務集群,每個集群上都有配置文件,想要快速修改配置文件,此時,就需要sed文件,不需要人為的打開文件,而是通過腳本定制化的修改它

命令格式:sed [選項] 'AddressCommand' file

  • -i:直接修改源文件

  • -r:表示使用擴展正則表達式

  • -d:刪除符合條件的行

  • -a\string:在指定的行后追加新行,內容為 string

  • i\string:在指定行前添加新行,內容是 string

  • s/string1/string2/:查找并替換,默認只替換每行第一次模式匹配到的字符串

  • g:行內全局替換

  • i:忽略大小寫

  • \(\) \1\2

? 以新建的sed.txt文件為例,

Authentication improvements when using an HTTP proxy server.
Support for POSIX-style filesystem extended attributes.
YARN's REST APIs now support write/modify operations.

image-20211126211331073

  • a\string:在指定的行后追加新行,內容為 string,a前面的1表示在第一行后追加string,并且未改變源文件
    image-20211126211853456

  • i\string:在指定行前添加新行,內容是 string
    image-20211126214148587

  • -i:直接修改源文件 ,其中 \n可用于換行
    image-20211126212234567

  • d:刪除符合條件的行(默認刪除所有行) ,源文件未改變,可以與-i一起使用
    image-20211126214533190

  • 查找指定行/str/-n表示只顯示符合條件的
    image-20211126215603930

  • s/string1/string2/:查找并替換,默認只替換每行第一次模式匹配到的字符串
    image-20211126215937192

  • i:忽略大小寫

? sed "s/filesystem/FS/i" sed.txt

  • g:行內全局替換

? sed "s/filesystem/FS/g" sed.txt

  • \(\) \1\2:下面的命令格式為:s/\(\)[]\(\)/\1\2/,\1\2之間為要替換的數字

? 以將啟動文件中的默認運行級別改為 5
image-20211126221504731
image-20211126221531637

  • -r:表示使用擴展正則表達式,這是就可以簡化上面表達式

? sed -r "s/(id:)[0-6](:initdefault:)/\15\2/" inittab

  • -n:表示抑制自動打印,如果不添加-n會將文件自動打印出來

? 查找/etc/profile 中包含 PATH 的行,將這些行寫到profile_path.txt文件中
1637994681418

4.10 awk

? awk 是一個強大的文本分析工具,相對于 grep 查找,sed 編輯,awk 在對數據分析并生成報告時更為強大,awk 把文件逐行讀入,以空格和制表符作為默認分隔符將每行切片,切開的部分再進行各種分析處理。

命令格式為:awk -F [':'] '{pattern + action}' filename

  • 支持自定義分隔符

  • 支持正則表達式匹配

  • 支持自定義變量,數組 a[1] a[tom] map(key)

  • 支持內置變量

    ? FS :設置輸入列分隔符,等價于命令行 -F 選項

    ? NF :瀏覽記錄的列的個數

    ? NR :已讀的行記錄數

    ? OFS:輸出列分隔符

    ? ORS :輸出行記錄分隔符

    ? RS :控制記錄分隔符

  • 支持函數 :print、split、substr、sub、gsub

  • 支持流程控制語句,類 C 語言 :if、while、do/while、for、break、continue

下面舉幾個例子學習上述命令

? 1. 搜索/etc/passwd 有 root 關鍵字的所有行
1637995646339

? 2. 統計/etc/passwd 文件中,每行的行號,每行的列數,對應的完整行內容
1638001295051

? 3. 只是顯示/etc/passwd 的賬戶,即第一列
1638001387855

? 4. 顯示/etc/passwd 的賬戶和賬戶對應的 shell,即第一列與第七列;而賬戶與 shell 之間以制表符分割
1638001594528

? 5. 在所有行開始前添加列名 name,shell,在最后一行添加"shell,end"

4.11 通過awk實現報表統計

? 案例報表統計:合計每人 1 月總消費,0:manager,1:worker

Tom 0 2020-10-11 car 3000 
John 1 2020-01-13 bike 1000 
vivi 1 2020-01-18 car 2800 
Tom 0 2020-01-20 car 2500 
John 1 2020-01-28 bike 3500

? 新建emp.txt文件,將上述內容寫入文件中,

1.查看文件的分隔符,awk默認制表符與分隔符
2.日期是第三列,由于統計到的是一月份,所以需要拆分,以"-"進行拆分,并存放到date變量中
3.for循環進行輸出,寫法與C語言的寫法一致

awk '
{ split($3, date, "-") if (date[2] == "01"){map_name_sala[$1] += $5 if($2=="0"){ map_name_role[$1]="Manager" }else{ map_name_role[$1]="Worker" } }
}
END{for(name in map_name_sala){print name"\t"map_name_role[name]"\t" map_name_sala[name]} 
}' emp.txt

1638013802283

4.12 wc命令

? 命令格式:wc [選項列表]... [文件名列表],用于輸出文件中的行數、單詞書、字節數

描述 :對每個文件輸出行、單詞、和字節統計數,如果指定了多于一個文件則還有一個行數的總計。沒有指定文 件或指定的文件是 -,則讀取標準輸入。

  • -c, --bytes, --chars 輸出字節統計數。
  • -l, --lines 輸出換行符統計數。
  • -L, --max-line-length 輸出最長的行的長度。
  • -w, --words 輸出單詞統計數。
  • –help 顯示幫助并退出
  • –version 輸出版本信息并退出

4.13 vi/vim編輯器的使用

? vi、vim的使用基本一致,推薦使用vim;vim會對于不同的字使用不同的顏色。vim有三種模式:

? 1638014319156

i:進入編輯模式 
I:在當前行首(非空字符)進入編輯模式
a:在選定字符后插入字符 
A:在當前行末進入編輯模式
o:在當前行下添加新行 
O:在當前行上添加新行
ESC:退出編輯模式
shift+: 末行模式  ESC 退出末行模式 
shift+ZZ:在命令模式保存并退出編輯器 
:wq 保存并退出編輯器 
:w 保存編輯器內容 
:q! 不保存退出編輯器

? vim的使用技巧:

移動光標:h 左 j 下 k 上 l 右 
w:移動到下一個單詞的詞首 
e:跳至當前或下一個單詞的詞尾 
b:跳至當前或下一個單詞的詞首 
0:絕對行首 
^:行首的第一個非空白字符 
$:絕對行尾 
G:文檔末尾 
3G:第三行 
gg:文檔開頭 
ctrl-f:向下翻頁 forward 
ctrl-b:向上翻頁 backward 刪除替換單個字符 
x:刪除光標位置字符 
3x:刪除光標開始3個字符 
r:替換光標位置字符
dw:刪除單詞 
dd:刪除整行
D:刪除光標所在位置到行尾 
yw:復制單詞 
yy:復制1行 
nyy:復制n行,n是數字 
p:粘貼 paste 
u:撤銷 undo 
ctrl+r:重做 操作結束后使用u退回到上次操作,則ctrl+r重做。重復上一步操作set:設置 ,在末行模式下
:set nu  顯示行號 
:set nonu  取消行號的顯示 
:set readonly 設置只讀 
:/string  or :?string 查找stringn:向下查找N:向上查找 
:! 執行命令,可以不用退出保存就可以執行命令,再按ENTER返回vim模式查找并替換 
:s/str1/str2/gi g:一行內全部替換 i:忽略大小寫 n:行號 
可以在s前面添加行數如::12,17s/PATH/path/gi,也可以使用當前光標行與偏移操作如::.,+3s/PATH/path/gi.:當前光標行 +n:偏移n行 
$:末尾行,$-3最后三行 
%:全文 
:%d :刪除全文 
:.,$-1d :從當前行刪除到倒數第二行 
:.,+3d :從當前行再往下數三行刪除 
:.,13d :從當前行到第13行刪除

5.文件壓縮與打包

? 壓縮:指通過某些算法,將文件尺寸進行相應的縮小,同時不損失文件的內容。

? 打包:指將多個文件(或目錄)合并成一個文件,方便傳遞或部署。

壓縮文件或打包文件常見的擴展名: *.tar.gz, *.tar.bz2;linux 系統一般文件的擴展名用途不大,但是壓縮或打包文件的擴展名是必須的,因為 linux 支持的壓縮命令較多,不同的壓縮技術使用的壓縮算法區別較大,根據擴展名能夠使用對應的解壓算法。

常見文件擴展名:

  • *.tar.gz tar 程序打包的文件,并且經過 gzip 的壓縮
  • *.tar.bz2 tar 程序打包的文件,并且經過 bzip2 的壓縮

gzip壓縮算法與bzip2壓縮算法相比,壓縮速度更快,但是沒有bzip2壓縮算法壓縮的小

TAR 命令,選項與參數:

  • -c :建立打包文件,

  • -t :查看打包文件的內容含有哪些文件

  • -x :解打包或解壓縮的功能,可以搭配-C(大寫)在特定到特定目錄解開

  • -j :通過 bzip2 的支持進行壓縮/解壓縮:此時文件最好為 *.tar.bz2

  • -z :通過 gzip 的支持進行壓縮/解壓縮:此時文件最好為 *.tar.gz

  • -v :在壓縮/解壓縮的過程中,將正在處理的文件名顯示出來

  • -f filename:-f 后面跟處理后文件的全名稱(路徑+文件名+后綴名)

  • -C 目錄:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項

  • -p :保留備份數據的原本權限與屬性,常用于備份(-c)重要的配置文件

    注意 -c, -t, -x 不可同時出現在一串指令列中 ,-j,-z不可能同時出現在同一串指令中

TAR常用的指令組合:

  • 打包與壓縮:

    tar –zcv –f [/路徑/]filename.tar.gz 被壓縮的文件或目錄 
    tar –jcv –f [/路徑/] filename.tar.bz2 被壓縮的文件或目錄
    

    1638020369830

  • 查詢

    tar –ztv –f [/路徑/] filename.tar.gz 
    tar –jtv –f [/路徑/] filename.tar.bz2
    
  • 備份

    tar –zpcv –f [/路徑/]filename.tar.gz 被備份文件或目錄 
    tar –jpcv –f [/路徑/]filename.tar.bz2 被備份文件或目錄
    
  • 解壓到當前目錄

    tar –jxv –f [/路徑/] filename.tar.bz2 
    tar –zxv –f [/路徑/] filename.tar.gz
    
  • 解壓到指定目錄

    tar -jxv -f [/路徑/] filename.tar.bz2 –C 指定目錄 
    tar -zxv -f [/路徑/] filename.tar.gz -C 指定目錄
    
  • 將/etc 壓縮到/tmp/下 etc01.tar.gz

    [root@node1 ~]# tar -zcvf /tmp/etc01.tar.gz /etc
    
  • 將/tmp/下 etc01.tar.gz 解壓到/tmp/目錄下

    [root@tedu ~]# cd /tmp/ #首先進入對應目錄 
    [root@tedu tmp]# tar -zxvf etc01.tar.gz
    
  • 將/tmp/下 etc01.tar.gz 解壓到/usr/目錄下

    [root@tedu tmp]# tar -zxvf etc01.tar.gz -C /usr 
    

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/193560.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息