Linux BASH

提醒:
每個範例前方的$符號為終端機的提示字元,非指令的一部分,不需要輸入。

檔案與目錄管理

ls:查看檔案及目錄

列出基本資料夾資料:
$ ls

參數

列出詳細資料和隱藏資料:
 $ ls -la
  • -l:顯示詳細資料
  • -a:顯示隱藏資料
列出符合條件的檔案
$ ls *.txt

列出為 .txt 的檔案

$ ls ?????

列出檔名長度為5個字元的檔案

$ ls -R

列出所有目錄檔案,如果有子目錄,則會連子目錄內的檔案都列出來(遞迴搜尋)。

###pwd:取得目前所在路徑

$ pwd

cd:切換目錄

$ cd Documents

進入目前路徑下的Documents目錄

$ cd ~

回到目前帳號的家目錄

$ cd ..

跳到上一層目錄

$ cd /

跳到根目錄

cp:複製檔案

$ cp a.txt b.txt

將a.txt內容在同一個目錄下複製一份為b.txt(會同時存在a.txt和b.txt兩個檔案)

$ cp * ../

將目前目錄下的所有檔案都複製一份到上一層目錄

$ cp a.txt /tmp

將a.txt複製到/tmp目錄下。

mv:搬移檔案

$ mv a.txt b.txt

將a.txt搬移到b.txt,因為在同一目錄下,所以又可以當成幫檔案更改名稱

$ mv a.txt /tmp

將a.txt檔案搬移到/tmp目錄下。

rm:刪除檔案

$ rm a.txt

刪除a.txt檔案

$ rm *

刪除目前目錄下的所有檔案(使用時須小心,因為不可復原)。

mkdir:建立目錄

$ mkdir src

在目前目錄下建立一個名為src的目錄

$ mkdir -p src/cmd/main

在目前目錄下建立src目錄下的cmd目錄下的main目錄,如果src或cmd目錄不存在會一併被建立。

rmdir:刪除目錄

$ rmdir src

刪除src目錄,刪除時src目錄必須為空,否則會刪除失敗。

touch:新增空白檔案

$ touch main.py

新增一個main.py檔案,檔案內容為空。

cat:將文件內容顯示在終端機畫面上

$ cat README.txt

將README.txt檔案內容顯示到終端機上

head:指定列出檔案前幾行的內容

$ head -n 10 README.txt

列出README.txt前面10行內容

tail:顯示檔案最後幾行內容

$ tail -n 10 README.txt

列出README.txt最後10行內容

grep:搜尋檔案內容

$ cat README.txt | grep aaron

找出README.txt檔案內有出現aaron字串的那一行內容。

$ grep -rn "aaron" *
  • *:表示當前目錄所有檔案,也可以指定檔名
  • -r:包含子目錄(遞迴搜尋)
  • -n:顯示行號
  • -i:忽略大小寫

找出內容有aaron字串的所有檔案。

find:尋找檔案

格式

$ find /path/to/dir -name "filename"
$ find /etc -name "httpd.conf"

找出/etc目錄下叫httpd.conf的檔案

$ find . -name 'log*'

找出所有log開頭的檔名,需注意*萬用字元必須搭配左右兩邊的單引號才有效。

檔案編輯

vim:在終端機編輯檔案

$ vim README.txt

打開README.txt檔案並編輯。

打開後指令, i 進入編輯模式,ESC 離開編輯模式,:q 不儲存離開,:wq 儲存離開,:q! 強制離開。

系統管理

crontab:定時任務

# ┌───────────── 分鐘   (0 - 59)
# │ ┌─────────── 小時   (0 - 23)
# │ │ ┌───────── 日     (1 - 31)
# │ │ │ ┌─────── 月     (1 - 12)
# │ │ │ │ ┌───── 星期幾 (0 - 7,0 是週日,6 是週六,7 也是週日)
# │ │ │ │ │
# * * * * * /path/to/command

範例:

# 每天早上 8 點 30 分執行
30 08 * * * /home/gtwang/script.sh --your --parameter

# 每週日下午 6 點 30 分執行
30 18 * * 0 /home/gtwang/script.sh --your --parameter

# 每週日下午 6 點 30 分執行
30 18 * * Sun /home/gtwang/script.sh --your --parameter

# 每年 6 月 10 日早上 8 點 30 分執行
30 08 10 06 * /home/gtwang/script.sh --your --parameter

# 每月 1 日、15 日、29 日晚上 9 點 30 分各執行一次
30 21 1,15,29 * * /home/gtwang/script.sh --your --parameter

# 每隔 10 分鐘執行一次
*/10 * * * * /home/gtwang/script.sh --your --parameter

# 從早上 9 點到下午 6 點,凡遇到整點就執行
00 09-18 * * * /home/gtwang/script.sh --your --parameter