Linux系統(tǒng)操作2

管道和重定向

  1. 管道的使用 - |。

    例子:查找當(dāng)前目錄下文件個數(shù)。

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# find ./ | wc -l
    6152
    

    例子:列出當(dāng)前路徑下的文件和文件夾,給每一項加一個編號。

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls | cat -n
         1  dump.rdb
         2  mongodb-3.6.5
         3  Python-3.6.5
         4  redis-3.2.11
         5  redis.conf
    

    例子:查找record.log中包含AAA,但不包含BBB的記錄的總數(shù)

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat record.log | grep AAA | grep -v BBB | wc -l
    
  2. 輸出重定向和錯誤重定向 - > / >> / 2>。

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat readme.txt
    banana
    apple
    grape
    apple
    grape
    watermelon
    pear
    pitaya
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat readme.txt | sort | uniq > result.txt
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat result.txt
    apple
    banana
    grape
    pear
    pitaya
    watermelon
    
  3. 輸入重定向 - <

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# echo 'hello, world!' > hello.txt
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# wall < hello.txt
    [root@iZwz97tbgo9lkabnat2lo8Z ~]#
    Broadcast message from root@iZwz97tbgo9lkabnat2lo8Z (Wed Jun 20 19:43:05 2018):
    hello, world!
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# echo 'I will show you some code.' >> hello.txt
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# wall < hello.txt
    [root@iZwz97tbgo9lkabnat2lo8Z ~]#
    Broadcast message from root@iZwz97tbgo9lkabnat2lo8Z (Wed Jun 20 19:43:55 2018):
    hello, world!
    I will show you some code.
    

別名

  1. alias

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# alias ll='ls -l'
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# alias frm='rm -rf'
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# ll
    ...
    drwxr-xr-x  2 root       root   4096 Jun 20 12:52 abc
    ...
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# frm abc
    
  2. unalias

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# unalias frm
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# frm sohu.html
    -bash: frm: command not found
    

其他程序

  1. 時間和日期 - date / cal。

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# date
    Wed Jun 20 12:53:19 CST 2018
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# cal
          June 2018
    Su Mo Tu We Th Fr Sa
                    1  2
     3  4  5  6  7  8  9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# cal 5 2017
          May 2017
    Su Mo Tu We Th Fr Sa
        1  2  3  4  5  6
     7  8  9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30 31
    
  2. 錄制操作腳本 - script

  3. 給用戶發(fā)送消息 - mesg / write / wall / mail。

文件系統(tǒng)

文件和路徑

  1. 命名規(guī)則:文件名的最大長度與文件系統(tǒng)類型有關(guān),一般情況下,文件名不應(yīng)該超過255個字符,雖然絕大多數(shù)的字符都可以用于文件名,但是最好使用英文大小寫字母、數(shù)字、下劃線、點這樣的符號。文件名中雖然可以使用空格,但應(yīng)該盡可能避免使用空格,否則在輸入文件名時需要用將文件名放在雙引號中或者通過\對空格進行轉(zhuǎn)義。
  2. 擴展名:在Linux系統(tǒng)下文件的擴展名是可選的,但是使用擴展名有助于對文件內(nèi)容的理解。有些應(yīng)用程序要通過擴展名來識別文件,但是更多的應(yīng)用程序并不依賴文件的擴展名,就像file命令在識別文件時并不是依據(jù)擴展名來判定文件的類型。
  3. 隱藏文件:以點開頭的文件在Linux系統(tǒng)中是隱藏文件(不可見文件)。

目錄結(jié)構(gòu)

  1. /bin - 基本命令的二進制文件。
  2. /boot - 引導(dǎo)加載程序的靜態(tài)文件。
  3. /dev - 設(shè)備文件。
  4. /etc - 配置文件。
  5. /home - 普通用戶主目錄的父目錄。
  6. /lib - 共享庫文件。
  7. /lib64 - 共享64位庫文件。
  8. /lost+found - 存放未鏈接文件。
  9. /media - 自動識別設(shè)備的掛載目錄。
  10. /mnt - 臨時掛載文件系統(tǒng)的掛載點。
  11. /opt - 可選插件軟件包安裝位置。
  12. /proc - 內(nèi)核和進程信息。
  13. /root - 超級管理員用戶主目錄。
  14. /run - 存放系統(tǒng)運行時需要的東西。
  15. /sbin - 超級用戶的二進制文件。
  16. /sys - 設(shè)備的偽文件系統(tǒng)。
  17. /tmp - 臨時文件夾。
  18. /usr - 用戶應(yīng)用目錄。
  19. /var - 變量數(shù)據(jù)目錄。

訪問權(quán)限

  1. chmod - 改變文件模式比特。

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls -l
    ...
    -rw-r--r--  1 root       root 211878 Jun 19 16:06 sohu.html
    ...
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# chmod g+w,o+w sohu.html
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls -l
    ...
    -rw-rw-rw-  1 root       root 211878 Jun 19 16:06 sohu.html
    ...
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# chmod 644 sohu.html
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls -l
    ...
    -rw-r--r--  1 root       root 211878 Jun 19 16:06 sohu.html
    ...
    

    說明:通過上面的例子可以看出,用chmod改變文件模式比特有兩種方式:一種是字符設(shè)定法,另一種是數(shù)字設(shè)定法。除了chmod之外,可以通過umask來設(shè)定哪些權(quán)限將在新文件的默認(rèn)權(quán)限中被刪除。

    長格式查看目錄或文件時顯示結(jié)果及其對應(yīng)權(quán)限的數(shù)值如下表所示。

[圖片上傳失敗...(image-fe05a4-1542286931601)]

  1. chown - 改變文件所有者。

    
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls -l
    ...
    -rw-r--r--  1 root root     54 Jun 20 10:06 readme.txt
    ...
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# chown hellokitty readme.txt
    [root@iZwz97tbgo9lkabnat2lo8Z ~]# ls -l
    ...
    -rw-r--r--  1 hellokitty root     54 Jun 20 10:06 readme.txt
    ...
    

磁盤管理

  1. 列出文件系統(tǒng)的磁盤使用狀況 - df。

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        40G  5.0G   33G  14% /
    devtmpfs        486M     0  486M   0% /dev
    tmpfs           497M     0  497M   0% /dev/shm
    tmpfs           497M  356K  496M   1% /run
    tmpfs           497M     0  497M   0% /sys/fs/cgroup
    tmpfs           100M     0  100M   0% /run/user/0
    
  2. 磁盤分區(qū)表操作 - fdisk。

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# fdisk -l
    Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000a42f4
       Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *        2048    83884031    41940992   83  Linux
    Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
  3. 格式化文件系統(tǒng) - mkfs

  4. 文件系統(tǒng)檢查 - fsck。

  5. 掛載/卸載 - mount / umount。

編輯器 - vim

  1. 啟動vim??梢酝ㄟ^vivim命令來啟動vim,啟動時可以指定文件名來打開一個文件,如果沒有指定文件名,也可以在保存的時候指定文件名。

    [root@iZwz97tbgo9lkabnat2lo8Z ~]# vim guess.py
    
  2. 命令模式、編輯模式和末行模式:啟動vim進入的是命令模式(也稱為Normal模式),在命令模式下輸入英文字母i會進入編輯模式(Insert模式),屏幕下方出現(xiàn)-- INSERT --提示;在編輯模式下按下Esc會回到命令模式,此時如果輸入英文:會進入末行模式,在末行模式下輸入q!可以在不保存當(dāng)前工作的情況下強行退出vim;在命令模式下輸入v會進入可視模式(Visual模式),可以用光標(biāo)選擇一個區(qū)域再完成對應(yīng)的操作。

  3. 保存和退出vim:在命令模式下輸入: 進入末行模式,輸入wq可以實現(xiàn)保存退出;如果想放棄編輯的內(nèi)容輸入q!強行退出,這一點剛才已經(jīng)提到過了;在命令模式下也可以直接輸入ZZ實現(xiàn)保存退出。如果只想保存文件不退出,那么可以在末行模式下輸入w;可以在w后面輸入空格再指定要保存的文件名。

  4. 光標(biāo)操作。

    • 在命令模式下可以通過h、j、kl來控制光標(biāo)向左、下、上、右的方向移動,可以在字母前輸入數(shù)字來表示移動的距離,例如:10h表示向左移動10個字符。
    • 在命令模式下可以通過Ctrl+yCtrl+e來實現(xiàn)向上、向下滾動一行文本的操作,可以通過Ctrl+fCtrl+b來實現(xiàn)向前和向后翻頁的操作。
    • 在命令模式下可以通過輸入英文字母G將光標(biāo)移到文件的末尾,可以通過gg將光標(biāo)移到文件的開始,也可以通過在G前輸入數(shù)字來將光標(biāo)移動到指定的行。
  5. 文本操作。

    • 刪除:在命令模式下可以用dd來刪除整行;可以在dd前加數(shù)字來指定刪除的行數(shù);可以用d$來實現(xiàn)刪除從光標(biāo)處刪到行尾的操作,也可以通過d0來實現(xiàn)從光標(biāo)處刪到行首的操作;如果想刪除一個單詞,可以使用dw;如果要刪除全文,可以在輸入:%d(其中:用來從命令模式進入末行模式)。
    • 復(fù)制和粘貼:在命令模式下可以用yy來復(fù)制整行;可以在yy前加數(shù)字來指定復(fù)制的行數(shù);可以通過p將復(fù)制的內(nèi)容粘貼到光標(biāo)所在的地方。
    • 撤銷和恢復(fù):在命令模式下輸入u可以撤銷之前的操作;通過Ctrl+r可以恢復(fù)被撤銷的操作。
    • 對內(nèi)容進行排序:在命令模式下輸入%!sort。
  6. 查找和替換。

    • 查找操作需要輸入/進入末行模式并提供正則表達式來匹配與之對應(yīng)的內(nèi)容,例如:/doc.*\.,輸入n來向前搜索,也可以輸入N來向后搜索。
    • 替換操作需要輸入:進入末行模式并指定搜索的范圍、正則表達式以及替換后的內(nèi)容和匹配選項,例如::1,$s/doc.*/hello/gice,其中:
      • g - global:全局匹配。
      • i - ignore case:忽略大小寫匹配。
      • c - confirm:替換時需要確認(rèn)。
      • e - error:忽略錯誤。
  7. 參數(shù)設(shè)定:在輸入:進入末行模式后可以對vim進行設(shè)定。

    • 設(shè)置Tab鍵的空格數(shù):set ts=4

    • 設(shè)置顯示/不顯示行號:set nu / set nonu

    • 設(shè)置啟用/關(guān)閉高亮語法:syntax on / syntax off

    • 設(shè)置顯示標(biāo)尺(光標(biāo)所在的行和列): set ruler

    • 設(shè)置啟用/關(guān)閉搜索結(jié)果高亮:set hls / set nohls

      說明:如果希望上面的這些設(shè)定在每次啟動vim時都能生效,需要將這些設(shè)定寫到用戶主目錄下的.vimrc文件中。

  8. 高級技巧

    • 比較多個文件。

      [root@iZwz97tbgo9lkabnat2lo8Z ~]# vim -d foo.txt bar.txt
      

      [圖片上傳失敗...(image-373451-1542286704689)]

    • 打開多個文件。

      [root@iZwz97tbgo9lkabnat2lo8Z ~]# vim foo.txt bar.txt hello.txt
      

      啟動vim后只有一個窗口顯示的是foo.txt,可以在末行模式中輸入ls查看到打開的三個文件,也可以在末行模式中輸入b <num>來顯示另一個文件,例如可以用:b 2將bar.txt顯示出來,可以用:b 3將hello.txt顯示出來。

    • 拆分和切換窗口。

      可以在末行模式中輸入spvs來實現(xiàn)對窗口的水平或垂直拆分,這樣我們就可以同時打開多個編輯窗口,通過按兩次Ctrl+w就可以實現(xiàn)編輯窗口的切換,在一個窗口中執(zhí)行退出操作只會關(guān)閉對應(yīng)的窗口,其他的窗口繼續(xù)保留。

      [圖片上傳失敗...(image-6e61b0-1542286704689)]

    • 映射快捷鍵:在vim下可以將一些常用操作映射為快捷鍵來提升工作效率。

      • 例子1:在命令模式下輸入F4執(zhí)行從第一行開始刪除10000行代碼的操作。

        :map <F4> gg10000dd。

        例子2:在編輯模式下輸入__main直接補全為if __name__ == '__main__':。

        :inoremap __main if __name__ == '__main__':

      說明:上面例子2的inoremap中的i表示映射的鍵在編輯模式使用, nore表示不要遞歸,這一點非常重要,否則如果鍵對應(yīng)的內(nèi)容中又出現(xiàn)鍵本身,就會引發(fā)遞歸(相當(dāng)于進入了死循環(huán))。如果希望映射的快捷鍵每次啟動vim時都能生效,需要將映射寫到用戶主目錄下的.vimrc文件中。

    • 錄制宏。

      • 在命令模式下輸入qa開始錄制宏(其中a是寄存器的名字,也可以是其他英文字母或0-9的數(shù)字)。

      • 執(zhí)行你的操作(光標(biāo)操作、編輯操作等),這些操作都會被錄制下來。

      • 如果錄制的操作已經(jīng)完成了,按q結(jié)束錄制。

      • 通過@aa是剛才使用的寄存器的名字)播放宏,如果要多次執(zhí)行宏可以在前面加數(shù)字,例如100@a表示將宏播放100次。

      • 可以試一試下面的例子來體驗錄制宏的操作,該例子來源于Harttle Land網(wǎng)站,該網(wǎng)站上提供了很多關(guān)于vim的使用技巧,有興趣的可以去了解一下。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容