Maojui

系統指令 | Linux

2015-06-12

介紹一些常用的系統指令

cd

cd 是 “change directory” 的縮寫,意思就是改變目前所在的目錄。

簡單來說,我們可以把電腦的文件系統想像成一棵樹,而 cd 指令就像是讓我們在樹的各個節點間移動的工具。

cd <絕對路徑>: 以根目錄 (/) 開頭

1
2
3
# 假設當前目錄在 /home
cd /tmp # 就會移動到 /tmp
cd /var/www/html # 就會移動到 /var/www/html

cd <相對路徑>:

1
2
3
# 假設當前目錄在 /home
cd tmp # 移動到 /home/tmp
cd ./abc # 移動到 /home/abc

特殊位置

cd . : 這個指令則是讓我們留在目前的目錄。
cd .. : 這個指令可以讓我們移動到上一層目錄。
cd - : 這個指令會讓我們回到上一個目錄。換句話說,如果你剛才從目錄 A 移動到目錄 B,那麼 cd - 會帶你回到目錄 A。
cd ~ : 這個指令會直接將我們帶回家目錄。在絕大多數的系統裡,家目錄通常是登入使用者的主目錄。

ls

ls 是 “list” 的縮寫,意思是列出資訊。這個指令的主要功能就是列出目前目錄下的所有檔案和子目錄。

你只需要在終端機中輸入 ls,然後按下 Enter,

就會列出你目前目錄下的所有內容。如果你想查看其他目錄的內容,

可以在 ls 後面輸入該目錄的路徑

1
ls /home/user/Desktop
  • -l : (long) 以較詳細的長格式輸出,除了檔名,還會顯示檔案的權限、擁有者、群組、大小、最後修改時間等詳細資訊。
  • -a : (all) 顯示所有的檔案,包括隱藏檔。在 Unix 和 Linux 系統中,檔名前面有 . 的就是隱藏檔。
  • -h : (human-readable) 在長格式輸出時,將檔案大小以人類好讀的方式顯示,如 KB、MB 等。
  • -R : (Recursive) 遞迴列出所有子目錄的內容。
  • -t : (time) 檔案將會以時間進行排序
  • -r : (reverse) 將原本的順序反向輸出

rm

rm 是 “remove” 的縮寫,刪除的意思。這個指令的功能就是移除檔案或目錄。

當你需要刪除某個檔案時,你可以使用 rm 指令。

例如,如果你想刪除名為 “file.txt” 的檔案,你可以輸入:

1
rm file.txt

預設情況下 rm 並不能移除資料夾,如果你嘗試使用 rm 刪除一個資料夾,會得到一個錯誤訊息,要使用 rm -d 才能刪除空的資料夾。

如果你想要刪除一個資料夾,並且資料夾裡的所有檔案也一併刪除,你需要使用 -r 或 -R 參數,這表示遞迴刪除

1
rm -r /home/user/
  • -d : (recursive) : 刪除空資料夾
  • -r : (recursive) : 這表示遞迴刪除
  • -f : (force) : 強制刪除檔案,不會有任何確認提示。請小心使用這個參數,因為一旦檔案被刪除,就無法恢復。
  • -i : (interactive) : 刪除每個檔案前都詢問使用者是否確定。如果你想要避免意外刪除檔案,這個參數會很有用。

mkdir (Make Directory)

mkdir 用於在檔案系統中 創建新資料夾

一般情況下如果資料夾已經存在,系統就會噴出錯誤訊息,

如果不知道目的地存不存在,可以使用 mkdir -p,他會幫你確保資料夾存在,如果不存在它就會幫你建立一資料夾,

你也可以同時建立一堆喔,下方的指令輸入下去,它就會直接幫你建立完整路徑,

1
2
# 三個資料夾一次滿足
mkdir -p /qwer/asdf/zxcv # 先建立 qwer,在 qwer 底下在建立 asdf,最後在 qwer/asdf 裡面再建立 zxcv

-p : 可以確保資料夾存在,如果不存在它就會幫你建立一資料夾

rmdir (Remove Directory)

rmdir 用於刪除空的目錄。它很沒用,要用它還不如用 rm ,rm -d 可以完全取代它。

pwd (Print Working Directory)

它用於顯示目前所在的工作目錄的絕對路徑。當你在命令列中操作時

pwd 可以告訴你你目前所在的目錄位置,只需在命令列中輸入 “pwd”,然後按下 Enter 鍵即可。

1
2
> pwd
# /home/user/documents

使用 pwd 指令有以下幾個優點:

  1. 確定目前所在的目錄位置:有時候你可能會迷失在不同的目錄之間,pwd 可以幫助你快速定位目前所在的位置,以確保你在正確的目錄中進行操作。
  2. 構建相對路徑:pwd 提供了你目前所在的絕對路徑。
  3. 執行其他命令:當你需要在特定目錄中執行其他命令時,pwd 可以幫助你確保你正在使用正確的目錄路徑。

pwd 只是一個顯示目前目錄的指令,它不會更改你的目錄位置或執行其他操作。如果你想要改變目錄,你可以使用 cd (Change Directory) 指令。

mv

mv 是 “move” 的縮寫,這個指令的主要功能是移動或重新命名檔案或目錄。

當你需要將檔案從一個位置移動到另一個位置,或者你想改變檔案或目錄的名稱時,mv 就是你需要的工具。

如果你想將 “file1.txt” 這個檔案移動到 “dir1” 這個目錄下,你可以使用:

1
mv file1.txt dir1/
  • -i : 在覆蓋檔案前提出詢問
  • -n : 在目標位置已有同名檔案存在時,不進行覆蓋
  • -f : 強制覆蓋目標位置的同名檔案,不會提出任何詢問

你也可以把它當作改名的工具,如果你想將 “oldname.txt” 重新命名為 “newname.txt”:

1
mv oldname.txt newname.txt

echo

echo 指令本身非常簡單,只要打入 echo 然後接你想要輸出的字串,字串就會被輸出到終端機上。

比如 echo “Hello, world!” 就會在終端機上打印出 “Hello, world!”。

  • -e : 使用 ANSI Escape Code \n 代表換行、\t 來代表 tab 會幫你對齊。

例如下方指令,

1
echo -e "Hello,\nworld!"

輸出結果則是會先打印 “Hello,”,然後換行,再打印 “world!”

1
2
Hello,
world!

另外
那麼,關於顏色的設定,你可以使用 ANSI Escape Code 來變更 echo 輸出的顏色。在這裡我們就只簡單介紹一下,如果你想要輸出紅色的文字,可以用 \033[31m,然後用 \033[0m 來重設顏色。比如 echo -e “\033[31mHello, world!\033[0m” 就會輸出紅色的 “Hello, world!”。

這就是 echo 指令以及其 “-e” 參數和顏色設定的基本介紹。希望大家在使用 echo 指令時,可以根據你的需求靈活地使用這些功能。

> (redirect)

Linux 系統中的指令結果通常會直接在終端機上顯示,但有時我們可能希望將這些輸出保存下來,或者重定向到其他地方,這時就可以使用重定向。

> 是一種基本的重定向操作符。當我們在一個指令後面加上 >,再接上一個檔案名稱,該指令的輸出將不再顯示在終端機,而是寫入到我們指定的檔案中。

如果我們輸入:

1
echo Hello, world! > file.txt

"Hello, world!" 這句話將會被寫入到 file.txt 這個檔案裡。

如果該檔案已經存在,它的內容會被新的輸出覆蓋。

>> (append)

是另一種重定向操作符,稱為 “append”。

它的作用與 > 相似,但當目標檔案已存在時,它不會覆蓋原有的內容,而是將新的輸出添加到檔案的末尾。

比如,我們可以輸入 :

1
echo Hello again! >> file.txt

Hello again! 這句話將會被添加到 file.txt 的檔案尾巴。

使用這些重定向操作符,我們可以靈活地控制我們的指令輸出,讓它們不再只是顯示在終端機,而是保存到檔案中,或者作為其他指令的輸入。

uniq

uniq 的主要功能就是能夠幫你刪除重複行,用法就是 uniq + [檔案名稱]

這樣他就會把檔案中重複的行數都刪除,只保留一行

  • -c : 統計出每一行出現的次數,並把結果印出來
  • -u : 顯示哪些行只出現一次
  • -d : 這個指令會輸出所有有重複的行

useradd - 新增使用者

若要在系統上新增一個使用者帳號,只要執行 useradd 並指定使用者帳號的名稱即可:

1
2
sudo useradd -m maojui  # 新增使用者,並建立家目錄
sudo passwd maojui # 變更使用者密碼
  • -M : 不建立家目錄
  • -m : 建立家目錄
  • -d <path> : 指定家目錄的路徑 (預設為 /home/username)
  • -u <id> : 指定 uid
  • -c <使用者姓名> : 標註真實姓名
  • -g <group_name> : 指定群組 (預設為同使用者名稱)
  • -s /sbin/nologin : 指定 shell (nologin 為登入後馬上登出)
  • -k <骨架 path> : 預設為 /etc/skel

帳號使用期限: 可用 sudo chage -l <username> 查詢

  • -e <2019-03-17> 帳號使用期限
  • -f <天數>