Ubuntu – 基本指令備忘(持續更新)

小蛙在使用 Linux 的時候一路走來始終如一,始終如一的是跌跌撞撞,一些很基本的指令紀錄一下,遇到什麼就記什麼,下次要查找也會比較方便。雖然有 -h, –help,或是 man 可以查找,不過總還是覺得麻煩 …

時間相關

查看目前時間

顯示現在日期 + 時間
date
顯示四位數西元年
date +"%Y"
2018
顯示西元年後兩位
date +"%y"
18 

可以到這邊查看更多參數。

校正時間

ntpdate time.stdtime.gov.tw

設定時區

dpkg-reconfigure tzdata

檔案系統

建立捷徑

ln -s 要建立軟連結的位置或檔案 軟連結名稱
ln -s /var/www/ www
# 於現在位置中建立一個名為 www 的捷徑,捷徑對應到的目的地為 /var/www

查找檔案內容

# 查找此目錄下所有檔案及子目錄,是否包含內容
grep -ir "要查找的內容" *

上面的方法可能會遇到某些非文字檔造成的錯誤,可改成下面這種

find ./ -name "*.jsp" -exec grep -H "要查找的字" {} \;

# 說明
# ./ : 搜尋的目錄
# -name "*.jsp" : 要搜尋的檔案類型
# -exec grep -H "要查找的字" {} \;  : 「要查找的字」換成要搜尋的字串,其他的照打就好

進入設定crontab

crontab -e

查找檔案

locate php.ini

# 如果很久沒更新或是找不到可以先更新
updatedb

與 find 搭配的使用術

複製檔名為 note_ 開頭的所有檔案到 /data 下
find . -name "note_*" -type f | xargs -i cp {} /data

計算所有檔名為 access_* 開頭的檔案大小
find . -name "access_*" -type f | xargs du -ch

刪除檔名開頭為 cata_* 的所有檔案
find . -name "cata_*" -type f | xargs rm -rf

查看資料夾使用大小

# 列出所有資料包含大小
du
> 123 ./xxxxx
> 234 ./vvvvv
> ...
 
# 列出該目錄下所有檔案大小加總,以 MB 表示
du -sm
> 1234
 
# 列出該目錄下所有檔案大小加總,以 GB 表示
du -sm
> 4.9G

刪除 n 天前檔案

# 找出目錄中,距離現在 1 天以前的檔案
find -mtime +1

# 找出目錄中,距離現在 3 天以前的檔案,並且刪除他(們)
find -mitime +3 -exec rm {} \;

計算路徑中檔案數或目錄數

參考來源: 精讚部落

# 計算檔案
ls -l | grep "^-" | wc -l
find . -type f | wc -l


# 計算目錄
ls -l | grep "^d" | wc -l

# 計算 iptables 的規則數(不精確)
iptables -S | wc -l

在檔案最下方加入一行文字

echo "123" >> file

加入一行文字在檔案最上方 – prepend

參考來源: Stack Overflow

echo "text" | cat - yourfile > /tmp/out && mv /tmp/out yourfile

查看檔案個數

# 顯示檔案數目 1
ls -laR | grep "^-" | awk 'END{print "Number of files:"NR}'

# 顯示檔案數目 1
find DIR_NAME -type f | wc -l
 
# 顯示目錄數目
ls -laR |grep "^d" |awk 'END{print "Number of directories:"NR}'

依日期新到舊排序、並只列出前 5 筆

# l: 詳細資料、h: 以 MB 顯示、t: 日期新到舊、head -5: 列出前 5 筆
ls -lht | head -5 

依檔案大小排序

# 大到小排序
ls -Sl

# 小到大排序 (反轉大到小)
ls -Slr

打包、壓縮相關

使用 tar

# 純打包不壓縮
# tar cvf 壓縮擋名稱 要壓縮的檔案或目錄
tar cvf test.tar ./*
 
# 解開包
# tar xvf 打包檔名稱
tar xvf test.tar
 
# 使用 gzip 壓縮
# tar zcvf 壓縮檔名稱 要壓縮的檔案或目錄
tar zcvf test.tar.gz ./*
 
# 解壓縮 gzip
# tar xvf 壓縮檔名稱
tar xvf test.tar.gz
 
# 使用 bz2 壓縮
# tar -jpcv -f 壓縮檔名稱 要壓縮的檔案或目錄
tar -jpcv -f /root/tt.tar.bz2 /root
 
# 使用 bz2 壓縮(略過某些目錄或檔案)
# tar -jpcv -f 壓縮檔名稱 要壓縮的檔案或目錄 --exclude=要略過的檔案
tar -jpcv -f /root/tt.tar.bz2 /root/Dropbox
  
# 使用 bz2 解壓縮
# tar -jxv -f 壓縮檔名稱 -C 解壓縮到
tar -jxv -f tt.tar.bz2 -C /root
 
# 查看打包檔案
tar -jtv -f /root/etc.tar.bz2

使用 unzip

# 要先安裝 unzip
sudo apt-get install unzip
 
# 壓縮
zip Filename.zip a.txt b.txt c.txt
 
# 解壓縮
unzip Filename.zip -d directory

系統相關

查看已安裝套件

# 列出所有已安裝套件
dpkg --get-selections

dpkg -l | grep php

apt list –installed | grep php
 
# 後面可以加上過濾條件,例如: | grep mariadb* 

安裝 bash 自動補齊工具

必裝!

apt-get install bash-completion
source /etc/profile
# 裝完之後打字時,按 tab 就會自動補上字或是列出候選字

將使用者預設 shell 改成 bash (使用者自行登入設定)

$ chsh
Password:
Changing the login shell for hans
Enter the new value, or press ENTER for the default
        Login Shell [/bin/sh]: /bin/bash
# 重新登入即可

將使用者預設 shell 改成 bash (系統使用者設定)

vim /etc/passwd
# 找到要修改的帳號,把 /bin/sh 改成 /bin/bash
wazai:x:0000:0000::/home/wazai:/bin/bash

修改使用者建立目錄時的預設權限

# 查看目前設定
umask 
> 0002
 
# 變更設定成 0022
umask 0022

濾出 ps -aux 中的特定欄位

grep "" 查找字串
awk '{print $2}' 印出第二個欄位 pid,前面加上 kill -9 $()就可以刪除該 process (第二行)

參考來源: Stack Overflow

ps aux | grep "[j]ava -Xms32m -Xmx1024m" | awk '{print $2}'
kill -9 $(ps aux | grep "[j]ava -Xms32m -Xmx1024m" | awk '{print $2}')

使用 process name 刪除程式

列出所有名稱為 apache2 的程式,切出第四個欄位 (pid) 丟給 kill -9 執行

AM JKLWRRQoaYL0y1e9Potuv8W1FXjV3EKajIcmbvy2 xU1xmeUQcFHmzzyMgvzDWwgD0bPGf4PJEEjOvg f 7REHbQkBMQTjK8rXTmh OOaPmwsTmLHq5xKXtQCVcHchVguzM jg9YIWUs HvlvmmYN va=w689 h143 no?authuser=1 Ubuntu - 基本指令備忘(持續更新)
ps -Al | grep apache2 | awk '{print $4}' | xargs kill -9

儲存與回復 iptables 規則

將 iptables 儲存到檔案 (/etc/iptables.rules 可更換目錄及檔案)
iptables-save > /etc/iptables.rules
vim /etc/rc.local
編輯開機檔案,讓 ubuntu 一啟動就還原 iptables
iptables-restore < /etc/iptables.rules
exit 0

網路相關

使用指令透過 SSH 上傳檔案

scp abc.txt [email protected]:/home/abc/

curl 使用

curl -m 3 -s -o /dev/null http://www.google.com.tw/
# -m 執行時間, -s 不顯示連線資訊, -o 輸出到檔案 (輸出到 /dev/null 意思是不顯示網頁內容)
   
curl -o index.html http://www.google.com.tw/
# 把結果輸出到檔案 index.html 中
   
curl -L http://www.abc.com/
# 如果遇到 301 轉址,必須要加參數 -L,否則只會得到 301 的網頁就停止了
 
curl -x proxy.xxx.ooo -i http://www.google.com.tw/
# 使用 proxy
# -i 取得 response header
# -v 取得所有過程
# -D filename 把 cookie 另存新檔
# -b filename 透過指定的 cookie 連線
# -A "xxxxx" 加入 user-agent 資訊
# -e "xxxxx" 設定 referrer

使用 SCP 傳輸檔案

# 發送本機檔案 filename 到遠端 remote 伺服器路徑 /home/ooo/ 中
scp filename xxxx@remote:/home/ooo/
 
# 把遠端 /home/ooo/filename 檔案複製到 ./ 目前路徑
scp xxxx@remote:/home/ooo/filename ./
 
# 多個檔案或資料夾要加入 -r, 如果使用特殊 port 可加上 -P 1234

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料