2026年3月9日 星期一

[Linux] Linux common utility

記錄一些常用的 Linux指令或工具


echo

將字串或變數輸出到終端機的指令

echo "Hello World!"

輸出字串

echo $HOME

輸出變數


cat

concatenate,主要功能為將檔案內容輸出到終端機或另一個檔案

cat a.txt

輸出 a.txt的檔案內容


cat a.txt b.txt

將 a.txt和 b.txt的檔案內容串接輸出到終端機


cat a.txt b.txt > ab.txt

將 a.txt和 b.txt的檔案內容串接寫到新檔案 ab.txt中


cat b.txt >> a.txt

將 b.txt的檔案內容串接寫到 a.txt後


pwd

print working directory,輸出當前終端機的目錄

pwd


ls

list,用來輸出目錄的內容或資訊


ls command options
-lLong format。顯示詳細資訊。
-aAll file。顯示隱藏檔案。
-hHuman-readable。將檔案容量大小顯示為人類可讀格式。
-tSort by time。以修改時間來將檔案排序,由新到舊。
-RRecursive。列出所有包含子目錄中的檔案。

ls -l
-rw-rw-r-- 1 goyour123 goyour123 182 Feb 28 00:08 a.txt
  • -rw-rw-r-- 檔案類型與權限,一共有10個字元。
    • 第一個字元代表檔案類型
      • [-] 檔案
      • [d] 目錄
      • [l] 連結檔(symbolic link)
      • [b] 塊設備(block device)
      • [c] 字符設備(charater device)
    • 剩下九個字元以三個為一組,分別代表檔案擁有者(Owner)、群組(Group)及其他使用者(Others)的權限
      • [r] 代表可讀(read)
      • [w] 代表可寫(write)
      • [x] 代表可執行(execute)
  • 1 代表檔案的硬連結(hard link)數量
  • goyour123 檔案的擁有者
  • goyour123 檔案的群組
  • 182 檔案的容量大小(bytes)
  • Feb 28 00:08 檔案最近修改日期
  • a.txt 檔案名稱

cd

change directory,切換目錄

cd
cd ~

切換到家目錄


cd /

切換到根目錄


cd ..

切換到上一層目錄


cd -

切換到上一次所在的目錄


cd /path/to/dir

使用絕對路徑切換目錄


cd dir

切換到當前目錄下的子目錄



mkdir

make directory,建立目錄

mkdir dir

在當前目錄下建立目錄


mkdir -p /path/to/dir

建立多個層級的目錄


mkdir -m 777 dir

建立目錄並設定權限


mkdir dir1 dir2 dir3

建立多個目錄



mv

move,用來重新命名或移動檔案和目錄


mv command options
-iinteractive。檔案覆蓋前跳出提示。
-fforce。強制覆蓋已存在的檔案。
-nno-clobber。不覆蓋已存在的檔案。
-uupdate。當來源檔案較新或是目的檔案不存在才移動。
-vverbose。顯示命令執行詳細過程。

mv a.txt /path/to/dir
mv a.txt b.txt c.txt /path/to/dir

移動檔案


mv a.txt b.txt

重新命名檔案



cp

copy,複製檔案和目錄


cp command options
-rrecursive。遞迴地複製檔案,用來複製目錄。
-iinteractive。檔案覆蓋前跳出提示。
-ppreserve。保留檔案的權限及時間戳。
-uupdate。當來源檔案較新或是目的檔案不存在才複製。
-apreserve all。遞迴地複製檔案,並且保留檔案權限及時間戳。
-vverbose。顯示命令執行詳細過程。

cp a.txt b.txt

複製檔案


cp a.txt /path/to/dir

複製檔案到目錄



man

manual,用來查看命令、系統呼叫、函式庫或設定檔的使用方法。


man 操作方法
/搜尋關鍵字
q離開

man ls

查詢 ls的使用方法



rm

remove,用來刪除檔案或目錄。


cp command options
-fforce。強制刪除。
-rrecursive。遞迴地刪除目錄及其中的檔案。
-iinteractive。刪除檔案前跳出提示。
-vverbose。顯示命令執行詳細過程。

rm a.txt

刪除檔案


rm -rf /path/to/dir

強制刪除目錄及其中檔案



touch

用來建立空檔案或是更新檔案的時間戳。


touch a.txt
touch a.txt b.txt c.txt

建立空檔案,如果檔案存在則更新時間戳為現在。


touch -t 202604201000 a.txt

指定更新時間,格式為 [[CC]YY]MMDDhhmm[.ss]。


touch -r reference.txt target.txt

參考其他檔案的時間來更新。


touch -a a.txt

只更新 atime(access time)。


touch -m a.txt

只更新 mtime(modify time)。



chmod

change mode。用來變更檔案或目錄的存取權限。

  • 使用者分類
    • u (user/owner)
    • g (group)
    • o (others)
    • a (all)
  • 權限分類
    • r, 4 (read)
    • w, 2 (write)
    • x, 1 (execute)

chmod 777 a.txt

給予所有人讀寫及執行權限。


chmod 755 a.txt

給予檔案擁有者所有權限,其他人讀取及執行權限。


chmod 644 a.txt

給予檔案擁有者讀寫權限,其他人只有讀取權限。


chmod +x a.txt

給予所有人執行權限。


chmod u+x a.txt

給予擁有者寫入權限。


chmod g-x,o-w a.txt

取消群組及其他人的寫入權限。


chmod a=r a.txt

所有人設定為只能讀取權限。