顯示具有 linux 標籤的文章。 顯示所有文章
顯示具有 linux 標籤的文章。 顯示所有文章

2016年9月8日 星期四

【Linux】Linux command - pipe, cat, tail


pipe 指令

 | <-- 這個符號就是管道(pipe)
pipe 是分隔兩個管線命令的界定
簡單來說
pipe = 把左邊得出的結果丟到右邊去

來個簡單的例子
當我們使用 ls -la
會把目錄下的全部檔案名稱列印在 console 上

當我們只想搜尋某個檔案時
就要使用到 pipe 了
ls -la | grep "Code"

想了解 grep, 請看 【Linux】Linux command - find, grep

會做完 ls -la 後,再找出含有 "Code" 字元的檔案

來張圖就更容易明白了!


這一句意思就是:
ls -la 裡含有 Code 字元的都給朕列印出來!


cat 指令

假如我們不是只想把檔案名字列印出來,而是想把檔案內容列印出來時
就會使用到 cat 指令

cat = 把file所有內容列印到console上

假如我們的 test.php 內容是..
<?
echo "I am test.php";
echo "hihi";
echo "hihi 1";
echo "hihi 2";
echo "hihi 3";
?>

使用 cat test.php 指令時
會把整個 test.php 的內容列入在 console 上

cat 配合 pipe, grep 使用的話
 cat test.php | grep "hihi"

結果是:
echo "hihi 1";
echo "hihi 2";
echo "hihi 3";


tail 指令

以上面 test.php 來做例子
如果我們只想列印最後一行的結果在 console 上

tail = 把file最尾的指定行數列印到console上

使用 tail -n 1 test.php | grep "hihi"
意思是把 test.php 最後一行有 hihi 字元的列印出來

結果是:
echo "hihi 3";



【Linux】Linux command - find, grep


find 指令

我們想查找路徑裡有什麼檔案,檔案名稱是什麼時
就會用到 find 指令

基本用法:
find "資料夾" -name "*.副檔案名"

例子:
find "/home/nightsnow" -name "*.php"

上面這個例子的意思是
把在 /home/nightsnow 路徑裡有的 php 檔案的名字都顯示出來


grep 指令

grep 指令是搜尋檔案內容


find + grep 指令

通常當我們需要搜尋內容出現在哪個檔案時
很常會用到 find + grep 指令

基本用法:
find "資料夾" -name "*.副檔案名" -exec grep "目標" {} \;

例子:
find "/home/nightsnow" -name "*.php" exec grep "welcome" {} \;

上面的例子就是要找出在 /home/nightsnow 路徑內 含有 welcome 字元的 php 檔案


另外在 grep 中有幾個命令參數是比較常用的
-m = 只顯示多少 rows (有時候可能有很多檔案會含有你所搜尋的字元,這樣會顯示超多的檔案,用了 -m 就可以 limit line 了喔)
-n = 顯示檔案內符合指定樣式的 line number
-H = 顯示檔案名稱

例子:
find "/home/nightsnow" -name "*.php" exec grep -m 10 -n -H "welcome" {} \;




2016年3月8日 星期二

【Linux】Linux command - crontab

crontab 是一個很常用, 很容易理解而且很實用的指令, 大部份 crontab 都是用在伺服器上, 例如想定時給資料庫弄個備份, 就會使用到 crontab 了!
簡單來說, crontab 就是工作排程, 讓你定好在什麼時間做什麼事情~
當設定好 crontab 後, 他就會永遠在你設定的時間上執行指令嚕~

安全性:
首先要設定哪些使用者帳號可以使用 crontab 指令
/etc/cron.allow 設定在這檔案裡的使用者帳號才能使用 crontab
/etc/cron.deny 設定在這檔案的使用者帳號不能使用 crontab 
(一列只可以填寫一個使用者帳號啊) 
 格式:
代表意義 分鐘 小時 日期 月份 指令
數字範圍 0-59 0-23 1-31 1-12 0-7 就是指令咧
 過程:
使用 crontab -e 指令後, 會打開 nano 或 vim 的
在裡面一列代表一個工作, 所以記得每次都開新一列喔~
舉個例子來說會比較容易明白~ 假設現在有個用家叫 Bob, 他想每天的下午 3 點和 9 點都寄一封 email 給 Mary, 很簡單的, Bob 輸入 crontab -e 指令後, 在裡面開新一列, 輸入 0 3,9 * * * mail Mary -s "This is a subject"
不同的符號有不同的意思喔

  • " , " = and, 與的意思
  • " - " = range, 一個範圍的意思, 例如每天的 8 點至 12 點 20 分進行一項工作
20 8-12 * * * command

  • " * " = all, 全部的意思
  • " */n " = n 是數字, 代表每隔 n 單位做一次, 例如每 5 分鐘做一項工作
*/5 * * * * command
 
當用家設定完 crontab 後, 工作就會放到 /var/spool/cron 裡面, 以帳號做尾, 也就是以上面 Bob 的例子來說, 工作會紀錄到 /var/spool/cron/bob 裡面