0%

[Linux] Linux 常用指令

前言

這一篇文章主要紀錄 Linux 上常用的指令,方便之後查詢~

包含:

Linux 常用指令

壓縮 & 解壓縮

.tar

只有打包,沒有壓縮。

打包

1
$ tar cvf <fileName.tar> <files>

解包

1
$ tar xvf <fileName.tar>

.gz

壓縮

1
$ gzip <fileName>

解壓縮

1
2
3
4
$ gunzip <fileName.gz>

# or:
$ gzip -d <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
2
:set binary
:set noeol

檢查&去除\r

1
2
:set ff=unix
:wq

取代字串

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: signal HUP, 控制中的程序中斷
  • -2: signal INT, 等同於 Ctrl+C
  • -3: signal QUIT, 等同於 Ctrl+\
  • -15: signal TERM, 程序終止指令
  • -9: 強制終止程序
  • -19: signal STOP, 程序的停止指令,等同於 Ctrl+Z

System

查詢系統版本

1
$ lsb_release -a

查看記憶體

1
2
3
4
5
$ free

$ free -m

$ cat /proc/meminfo

參考資料