[Linux] Linux Command

Andy Chou
7 min readFeb 25, 2020

--

前言:

金魚腦的我常常忘記 linux指令,因此整理一下常用的linxu指令讓忘記的時候可以找來看看。

  • 搜尋特定類型的檔案: find
  • Linux 查看檔案最末端: tail
  • Linux 匹配文字: grep
  • 模擬 FTP 的檔案傳輸方式: sftp
  • Linux 打包備份目錄、壓縮與解壓縮指令: tar
  • Linux 遠端檔案同步與備份: rsync
  • 很潮的編輯器: vim

搜尋特定類型的檔案: find

1.找檔案最常遇到的情況是根據檔案名稱搜尋, 例如要在 /var/www/test 中找 filename.txt 檔案。

$ find /var/www/test/ -name filename.txt;

$ find . -name filename.txt; (當前目錄下搜尋)

2.另一個常見的搜尋例子是, 找要出指定副檔名的檔案, 例如要找出所有 “.log” 結尾的檔案。

$ find /var/www/test/ -name "*.log";

3.find 指令其中一個十分有用的參數是 -type, 加入了-type 參數後, 可以指令要找的檔案類型, 一般常見的檔案類型會以下字符指定:

f -> 檔案
d -> 目錄
l -> 連結檔
c -> character devices
b -> block devices

ex: 找出所有 /var/www/html/ 的連結檔, 用以下指令。

$ find /var/www/html/ -type l;

4.find 另一個常用的功能是 -size 參數, 這樣便可以找出指定大小的檔案, 例如要找出所有大過 100MB 的檔案, 便可以用以下語法。

$ find /var/www/html/ -size +100MB;

Linux 查看檔案最末端: tail

常用參數

1.列出laravel.log最後面10列內容

$ tail laravel.log;

2.列出副檔案為.log的所有檔案最後面5列內容

$ tail -n 5 *.log;

3.列出副檔案為.log的所有檔案最前面5列內容

$ tail -n +5 *.log;

4.列出laravel.log最面200Bytes內容

$ tail -c 200 laravel.log;

5.以系統管理者身份,監控持續成長的紀錄檔/var/log/message

$ tail -f /var/log/message;

Linux 匹配文字: grep

常用參數
  1. 搜尋關鍵字

$ grep keyword filename.txt;

$ ls /etc/ | grep network;

2.不分大小寫(-i)

$ grep -i Keyword filename.txt;

3.標示行號參考資料(-n)

$ grep -n Ubuntu /etc/os-release;

4.遞迴搜尋檔案(-r)

$ grep -r Ubuntu /etc/;

5.正規表示法(精準篩選出 test 這個單字)

$ ls | grep "\<test\>"

參考資料:

https://blog.gtwang.org/linux/linux-grep-command-tutorial-examples/

模擬 FTP 的檔案傳輸方式: sftp

如果你只是想要從遠端伺服器下載或上傳檔案就必須要使用 sftp 或 scp。

$ sftp username@host

  • lpwd → 看sftp對應的local端位置
  • lls → 列出目前local端所在目錄下的檔名
  • lcd → 變換目錄到local端的 PATH 當中
  • pwd → 看sftp對應的位置
  • ls → 列出目前遠端所在目錄下的檔名
  • get -r * → 下載所有資料夾及檔案

參考資料:

Linux 打包備份目錄、壓縮與解壓縮指令: tar

常用參數

1.指令參數 -c-t-x 不能同時出現在指令中。

2.指令參數 -z-j-J 都是壓縮功能,不能同時出現在指令中。

3.指令格式:

$ tar -常用參數 -f 檔案名稱 -C 要打包的目錄

4.壓縮範例:打包順便壓縮 vagrant 這個目錄。

$ tar -zcv -f vagrant.tar.gz -C vargrant

含有 z 壓縮、c 打包、v 看過程檔名以及 f 指定檔案名稱共四個參數。

5.解壓縮範例:從其它主機上的 nginx 設定備份檔解壓縮至 /etc/nginx

$ tar -xv -f sites-enabled.tar.gz -C /etc/nginx

Linux 遠端檔案同步與備份: rsync

rsync 在第一次複製檔案時,會複製完整的檔案內容,而之後再次複製檔案時,就會以 delta transfer 演算法檢查新舊檔案之間的差異,只傳送有變動的部份,可加快備份速度。

常用參數

1.指令格式:

$ rsync -常用參數 來源檔案 目的檔案

2.本地端備份範例

$ rsync -avh /home/myfile.gz /home/pi/tmp

/home/myfile.gz 複製到 /home/pi/tmp/ 目錄

3.遠端備份範例

$ rsync -avzh /home/myfile.gz pi@192.168.1.10:/mybackup/

將本地端的 myfile.gz 備份至 pi@192.168.1.12/mybackup/ 目錄中。以下指令就會將本地端的 myfile.gz 備份至 pi@192.168.1.12/mybackup/ 目錄中,而rsync 預設會以 ssh 的方式登入遠端的機器,所以在執行這行備份指令之後,必須要接著輸入pi@192.168.1.12 的密碼。

4.自訂 SSH 連接埠的遠端備份範例

$ rsync -avzh -e "ssh -p 20" /home/myfile.gz pi@192.168.1.10:/mybackup/

5.同步刪除檔案

rsync 預設只會將來源端現存的檔案同步更新至目的端(同步所有新增或修改的檔案)。

如果想要讓 rsync 也同步將不存在於來源端的檔案刪除的話,可以加上 --delete 參數。

$ rsync -avh --delete myfolder/ mybackup/

6.備份特定檔案

$ rsync -avh --exclude '*.txt' --exclude '*.py' myfolder/ mybackup/

rsync 在備份檔案時,排除所有 *.txt*.py的檔案

很潮的編輯器: vim

我們可以將vim區分為下圖這三個模式:

一般指令模式:

  • 大寫V是游標經過一行就選擇一行
  • 小寫v是游標經過的位置就選擇起來
  • 小寫y是複製選擇起來的文字區塊
  • 小寫d是刪除選擇起來的文字區塊
  • 小寫p是貼上剛才複製好的文字
  • 小寫u是復原上一步驟

指令列命令模式:

  • 在一般模式下輸入”/”是搜尋字串,並在斜線後方鍵入要搜尋的字串,並按下Enter。當找到一個符合的字串後,若要繼續往下搜尋,可以鍵入小寫n。

--

--