為了熟悉 Linux 系統的指令操作,記錄了一些常用的指令

目錄

快捷鍵

  • shift + pageup
    • 顯示畫面可以往上移動,等同於滑鼠上滾輪
  • shift + pagedown
    • 顯示畫面可以往下移動,等同於滑鼠下滾輪
  • \ + enter
    • 使指令接續到下一行
  • ctrl + d
    • 登出現在的使用者或直接離開,等同於 exit
  • ctrl + z
    • 暫停程序,並將程序放置背景

常用指令

簡單工具

  • date
    • 顯示當下日期與時間
  • cal
    • 顯示日曆
  • bc
    • 簡單好用的計算機
    • 離開計算機請下 quit 指令

改變目錄或檔案的屬性、權限

  • chown
    • 改變檔案擁有者
    • chown [-R] 帳號名稱 檔案或目錄
    • chown [-R] 帳號名稱:群組名稱 檔案或目錄
    • -R  遞迴改變目錄裡的所有檔案(包含目錄)
  • chmod
    • 改變檔案的權限
    • chmod [-R] 數字或文字表示 檔案或目錄
    • 每個檔案一定都有 user、group、other 的所屬權限
    • 一般情況下都可以設定 read (可讀)、write (可寫)、execute (可執行) 的權限
    • 數字表示可以是3位數或4位數
    • 一般權限:  r=4, w=2, x=1
    • 特殊權限:  SUID=4, SGID=2, Sticky bit=1
    • Ex:  chmod 741 myfile  =>  user: r+w+x, group: r, other: x
    • Ex:  chmod 4741 myfile  =>  多加特殊權限SUID
    • 文字表示
    • u (user)、g (group)、o (other)、a (all)
    • +、-、=
    • r、w、x、s、t
    • , 隔開
    • Ex:  chmod u+rwx,g-x,o=r myfile
  • chgrp
    • 改變檔案的所屬群組
    • chgrp [-R] 群組名稱 檔案或目錄
  • umask
    • 查看或修改檔案預設權限
    • umask [-S]  =>  此為查看
    • -S   以文字表示顯示當時預設的權限
    • umask [數字表示]  =>  此為修改
    • 數字表示顯示的方式,為 被拿掉的權限
    • Ex:  020  =>  表示 group 預設拿掉 write 的權限

檔案與目錄的管理

  • mkdir
    • 建立新目錄
    • mkdir [-m] [-p] 目錄
    • -m  加入權限,後面接代號
    • -p  遞迴建立目錄
  • rmdir
    • 刪除空目錄
    • rmdir [-p] 目錄
    • -p  遞迴刪除目錄,目錄下必須為空才能刪
  • cp
    • 複製檔案或目錄
    • cp [-a] [-r] [-i] 來源檔 目標檔
    • -a  使資料屬性完全一樣
    • -r  遞迴複製整個目錄
    • -i  如果目標檔案已經存在,會先提出詢問,不會直接強制覆蓋檔案
  • rm
    • 刪除檔案或目錄
    • rm [-r] [-f] [-i] 檔案或目錄
    • -r  遞迴刪除整個目錄
    • -f  強制刪除,忽略不存在的項目
    • -i  會先提出詢問,不會直接刪除檔案
  • mv
    • 移動檔案與目錄
    • mv [-f] [-u] [-i] 來源檔 目標檔
    • -f  強制覆蓋已存在的檔案
    • -u  有舊檔案才覆蓋
    • -i  如果目標檔案已經存在,會先提出詢問,不會直接強制覆蓋檔案
    • -n  不會覆蓋任何檔案
    • -u  目標檔案已經存在時,會比較來源檔案及目標檔案的時間,如果來源檔案較新才會覆蓋
  • mv
    • 更改名稱
    • mv 舊名稱 新名稱
  • touch
    • 建立空檔案
    • touch 檔案
  • touch
    • 更改檔案日期
    • touch [-a] [-m] [-t] [YYMMDDhhmm] 檔案
    • -a  僅修改 atime
    • -m  僅修改 mtime
    • -t  atime與mtime都會修改
    • EX:  touch  -t  202107301600  name  =>  將檔案時間更改為 2021/07/30 16:00
  • pwd
    • 顯示目前的目錄
    • pwd
  • cd
    • 變換目錄
    • cd [相對路徑/絕對路徑]
  • ls
    • 檢視檔案與目錄
    • 常用 ls -alll

檔案內容查閱

  • cat
    • 從第一行開始顯示內容
    • cat [-n] [-A] 檔案
    • -n  列印出行號,連同空白行也會有行號
    • -A  可列出一些特殊字符
  • tac
    • 從最後一行開始顯示內容
    • tac 檔案
  • head / tail
    • 只看頭幾行或尾幾行
    • head -n 5 檔案
    • tail -n 10 檔案
  • less
    • 一頁一頁的方式顯示內容
    • less 檔案
    • q 離開

檔案搜尋

  • which
    • 指令檔名的搜尋 (預設只會顯示找到的第一個)
    • which [-a] 指令名稱
    • -a  列出找到的所有檔案路徑名
  • find
    • 搜尋檔案名稱、使用者、群組名稱…等
    • find [PATH] [option] [action]
    • 查詢速度很慢
    • EX:  find . -name 檔案或目錄名稱  =>  在目前目錄底下搜尋檔案
    • EX:  find /home -iname test.txt  =>  在 /home 目錄底下,不分英文大小寫,找尋檔案名稱為 test.txt 的檔案
  • grep
    • 在指定的檔案內進行文字搜索
    • grep 搜尋字串 檔案1 檔案2...
    • 可一次搜索多個檔案

建立檔案連結

  • ln
    • 建立各種連結檔案
    • EX:

      • 建立硬連結 (使用相同 inode 的連結檔案)

        ln test.txt hardlink.txt

        建立一個 hardlink.txt 硬連結檔,指向 test.txt
        可以查看一下 inode:

        ls -i test.txt test_hardlink.txt

        硬連結會跟原來的檔案有相同的 inode

      • 建立軟連結 (靠著絕對路徑或相對路徑來指向目標檔案的連結檔)

        ln -s test.txt softlink.txt

        建立一個 softlink.txt 軟連結檔,指向 test.txt
        可以查看一下 inode:

        ls -i test.txt softlink.txt

        軟連結的 inode 會跟原始檔案不同

      • 強制覆蓋舊檔 (當目標連結檔已經存在)
        可以加上 -f 參數

        ln -f -s test.txt softlink.txt
      • 自動備份舊檔

        ln -b -s test.txt softlink.txt

        ln 會將原本的檔案名稱後方加上一個 ~,作為備份檔的檔名

        ls -lart softlink.txt*

        若要更改備份檔名的結尾名稱,可以使用 -S 指定新名稱

        ln -b -S ".backup" -s test.txt softlink.txt

        這樣就會使用原本的檔案名稱加上 .backup 作為備份檔名稱

其他

結語

Linux 的指令真的非常多,有需要其他功能再去網路上找,一定找得到,未來有使用到其他指令再補充

Reference

To know that we know what we know, and to know that we do not know what we do not know, that is true knowledge.

Nicolaus Copernicus

Author: Andy Chung
Article link: https://chiachin2686.github.io/2021/07/linux-common-commands/
License: CC BY-NC 4.0