(2012-10-05 更新) 小蛙在使用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

查看資料夾使用大小

# 列出所有資料包含大小
du
> 123 ./xxxxx
> 234 ./vvvvv
> ...

# 列出該目錄下所有檔案大小加總,以 MB 表示
du -sm
> 1234

# 列出該目錄下所有檔案大小加總,以 GB 表示
du -sm
> 4.9G

刪除 n 天前檔案

參考資料:http://linux.vbird.org/linux_basic/0220filemanager.php#find

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

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

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

參考來源: 精讚部落

# 計算檔案
ls -l | grep "^-" | 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

查看檔案個數

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

# 顯示目錄數目
ls -laR |grep "^d" |awk 'END{print "Number of directories:"NR}'

打包、壓縮相關

使用 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

# 後面可以加上過濾條件,例如: | 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}')

儲存與回復 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

更詳細使用可參考 http://blog.masterstudio101.com/2013/05/12/cURL%20%E6%8C%87%E4%BB%A4%E6%95%99%E5%AD%B8%20(cURL%20command%20how-to)

使用 SCP 傳輸檔案

# 發送本機檔案 filename 到遠端 remote 伺服器路徑 /home/ooo/ 中
scp filename [email protected]:/home/ooo/

# 把遠端 /home/ooo/filename 檔案複製到 ./ 目前路徑
scp [email protected]:/home/ooo/filename ./

# 多個檔案或資料夾要加入 -r, 如果使用特殊 port 可加上 -P 1234

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *