Blog Post

Linux 指令 Week 5

W 5-1, sudo usermod -aG sudo u12345678
一般帳號是沒有 sudo 權限可以執行, 但可將帳號加到 sudo 群組即可擁有該權限, 如果被修改的帳號已經登入, 需要重新登入才會生效喔!

 # sudo usermod -aG sudo u12345678
 .......

W 5-2, sudo visudo
Linux 系統內描述有關 sudo 相關權限的檔案在 /etc/sudoers, 雖然說可以直接修改該檔案, 但建議使用 sudo visudo 這個指令進行修改, 這樣系統可以針對你的修改內容進行防呆(檢查語法).

 # sudo visudo
 .......

W 5-3, sudo -lU account_name
查看該帳號可以用 sudo 執行的指令清單, 使用時記得將 accopunt_name 換成你想要查詢的帳號名稱

 # sudo -lU account_name
 .......

W 5-4, which command_name
這個指令可以用來查看某個指令的檔案位置, 舉例來說: which cp

 # which command_name
 .......

W 5-5, whereis command_name
這個指令可以用來查看某個指令的檔案與相關檔案的位置, 舉例來說: whereis cp

# whereis cp
 .......

W 5-6, locate readme.txt
查找某個檔案的位置, 由於這個指令在查找檔案時是以系統內的快取(/var/lib/mlocate/mlocate.db) 來查找的, 所以速讀極快, 但是當你要查的檔案太新的時候, 可能會來不及更新快取檔案, 因而造成找不到! 這個時候需要使用 sudo updatedb 來對 mlocate.db 進行更新即可.

 # locate  readme.txt
 .......

W 5-7, find
這個指令搜尋時是以整個硬碟裡的資料為主, 所以整體來說會比較耗時, 所以一般來說會比較少用. 另外這個指令的用法有很多, 以下列出幾個比較常用的作為範例;

找在某個目錄下所有 .txt 的檔案
# find /home -name *.txt 

找在某個目錄下所有的子目錄
# find /home -type d

找在某個目錄下所有的檔案
# find /home/ubuntu -type f

找出目前所在目錄下大於 10M 的檔案
# find . -size +10M

找出 /home/ 目錄下大於 10M 的檔案
# find /home/ -size +10M

找出目前所在目錄下大於 100M 的檔案並用 ls -l 列印出來
# find . -type f -size +100M -exec ls -l {} \;

W 5-8, tar
這個指令是用來打包與壓縮檔案或目錄的, 可以搭配多個參數來進行所需要的動作, 以下透過範例的方式詳述使用方法;

參數
-c 建立打包擋案
-f 指定檔名
-t 查看打包檔的內容
-x 解開打包檔的內容
-C 指定解開時的目錄

將目錄下所有 log 開頭的檔案打包再一起並存入 /tmp/backup.tar 
# tar -cf /tmp/backup.tar log*

將 backup.tar 解壓縮到 /tmp/extract 的目錄下
# tar -xf /tmp/backup.tar -C /tmp/extract

 .......

W 5-9, tar with gzip, bzip2, xz
tar 可透過另外的參數來強化打包壓縮率, 範例與說明如下;

使用 gzip 壓縮
使用方法: 在 tar 打包指令中加上 -z
# tar -czf /tmp/backup.tar.gz log*

使用 bzip2 (速度比 gzip 慢) 壓縮
使用方法: 在 tar 打包指令中加上 -j
# tar -cjf /tmp/backup.tar.gz log*

使用 xz 壓縮
使用方法: 在 tar 打包指令中加上 -J
# tar -cJf /tmp/backup.tar.xz log*
 .......

補充說明

  • gzip, bzip2, xz 也可以單獨使用來壓縮檔案, 但僅限單一檔案,
    而且原始檔案會被取代 [ DEMO ]
    • 壓縮 -v
    • 解壓縮 -d
  • gzip -v log.txt
  • gzip -d log.gz

W 5-10, zip
這個指令在 windows 中非常熟悉, 但是在 linux 系統下有可能沒有支援, 這個時候就需要透過以下指令進行安裝
sudo apt-get install zip
使用方法與範例如下;

範例:將 data 目錄下所有檔案壓儲到 file.zip, 這邊不用加上 .zip (自動)
# zip file data/*

將 data 目錄下所有檔案及副目錄壓儲到 file.zip
# zip -r file data/*

解壓縮
# unzip file.zip 可以加上 ( -d /home/tmp ) 來制定解壓縮後擺放的位置

列出壓縮檔所有內容
# unzip -l file.zip
 .......