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 執行
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