前言
這一篇文章主要紀錄 Linux 上常用的指令,方便之後查詢~
包含:
Linux 常用指令
壓縮 & 解壓縮
.tar
只有打包,沒有壓縮。
打包
1 | $ tar cvf <fileName.tar> <files> |
解包
1 | $ tar xvf <fileName.tar> |
.gz
壓縮
1 | $ gzip <fileName> |
解壓縮
1 | $ gunzip <fileName.gz> |
.tar.gz / .tgz / .tar.tgz
壓縮
1 | $ tar zcvf <fileName> <files> # --exclude=file: 略過特定檔案 |
解壓縮
1 | $ tar zxvf <fileName> |
zip
如果檔案名稱有中文, 要使用 zip 壓縮
壓縮
1 | $ zip -r <fileName.zip> <files> |
解壓縮
1 | $ unzip <fileName.zip> |
檔案傳輸
scp
傳送 local file 到遠端
1 | $ scp <local file> <username>@<remote IP>:<path> |
從遠端傳檔案到 local
1 | $ scp <username>@<remote IP>:<file path> <local directory> |
如果想要不輸入密碼就可以使用 ssh, scp, rsync 到遠端主機,可參考: [Linux] 設定 SSH 免密碼登入
rsync
傳送 local file 到遠端
1 | $ rsync -avh <local file> <username>@<remote host>:<file path> --progress |
-a
: 封裝備份模式,相當於 -rlptgoD,遞迴備份所有子目錄下的目錄與檔案,保留連結檔、檔案的擁有者、群組、權限以及時間戳記-v
: verbose mode,輸出較詳細的訊息-h
: 將數字轉為易讀的格式-z
: 啟用壓縮模式--progress
: 顯示傳輸進度--partial
: 連線中斷時,保留不完整的檔案--append
: 續傳不完整的檔案
檔案處理 (分割、合併、字串處理)
sed
將第 1 ~ 1000 行輸出
1 | $ sed -n 1,1000p inputFile > outputFile |
去除空行
1 | $ sed '/^$/d' inputFile > outputFile |
去除 pattern 開頭的行
1 | sed '/^pattern/d' inputFile > outputFile |
去除行首空格
1 | $ sed 's/^[ \t]*//g' inputFile > outputFile |
去除行尾空格
1 | $ sed 's/[ \t]*$//g' inputFile > outputFile |
合併符合 pattern 的行及其下一行
1 | $ sed '/PATTERN/{N;s/\n/\t/}' inputFile > outputFile |
split
將檔案分割成多個 n bytes的檔案
1 | $ split -b <nBytes> <inputFile> |
將檔案分割成多個 n 行的檔案
1 | $ split -l <nLine> <inputFile> |
grep
-Bx: 輸出符合條件的前x行
-Ax: 輸出符合條件的後x行
1 | $ grep -Ax -Bx "pattern" inputFile |
awk
將字串由長到短排序
1 | $ awk '{print length($0) " " $0; }' <inputFile> | sort -r -n | cut -d ' ' -f 2- > <outputFile> |
刪除目錄下的空檔案
1 | $ find directory/ -size 0 -print0 | xargs -0 rm |
vim 常用指令
自動排版
1 | gg=G |
設定檔案結尾不自動換行
1 | :set binary |
檢查&去除\r
1 | :set ff=unix |
取代字串
1 | :%s/pattern/replace/g |
檔案編碼
查看檔案編碼
1 | $ file <fileName> |
檔案編碼轉換
1 | $ iconv -f <input encoding> -t <output encoding> <inputFile> > <outputFile> |
簡轉繁
1 | $ cconv -f utf8 -t utf8-tw <inputFile> -o <outputFile> |
檔案權限設定
更改檔案owner
1 | $ chown -R <user>:<group> <directory> # -R: recursive, 改變目錄底下所有檔案的owner |
更改檔案權限
- Linux 檔案的基本權限有 9 個,分別是 owner, group, other 各自的 read/write/execute 的權限,例如:
-rwxrwxrwx
, 三個為一組,依序為: owner, group, other 的權限,每組的三個字元分別代表: r (read), w (write), x (execute). 其對應的數字分別是: r = 4, w = 2, x = 1. - 檔案權限的數字代表 3 種身分(owner, group, other) 的權限各自加總,例如: owner 可以 read, write and execute, group 可以 read and execute, other 可以 read, 檔案權限的數字就是
754
.
1 | $ chmod <permission> <fileName> |
Process
查看 Process
1 | $ ps aux | grep <precess name> |
終止 Process
1 | $ kill [options] <pid> |
options:
-1
: signalHUP
, 控制中的程序中斷-2
: signalINT
, 等同於Ctrl+C
-3
: signalQUIT
, 等同於Ctrl+\
-15
: signalTERM
, 程序終止指令-9
: 強制終止程序-19
: signalSTOP
, 程序的停止指令,等同於Ctrl+Z
System
查詢系統版本
1 | $ lsb_release -a |
查看記憶體
1 | $ free |