2015年1月7日 星期三
example : disk usage 超過90% , 刪除Android folder
ref: http://stackoverflow.com/questions/19703621/get-free-disk-space-with-df-to-just-display-free-space-in-kb
2014年10月13日 星期一
刪除括號 (和括號內的文字)
$ echo '0 [123] 456' | sed 's/\[.*\]//' 0 456
就是.. 把 [.*] switch 成 empty.
因為 [,] 要 escapre,所以變成 \[.*\]
把他放到 s/pattern/replace/action 裡的 pattern.
2014年5月5日 星期一
ssh no password
就是連線A server 時,不需要輸入 password.
方法是把你的 public key 先送給 A server,告訴他用這個 public key 來驗證你將來 ssh client 給的key.
驗證 OK 就代表是真正的你在要求連線。就不用輸入password
首先,先產生自己的key, 會有一對,private, public:
都直接回 return 的話,會產生兩個 file 在 .ssh 中:
然後把 pub key 送到 A server 去:
最後,就是到 A server 去,把這個 public key 加到 authorized_keys:
* 要注意,cat key 出來看,可以看到最後是 username/servername
這個跟跟連線時的 username/servername 要對應。
-- 在 hosts 是自己亂寫的時候,要特別注意。
debian 的話,自己的機器在 ssh-keygen 完,產生 id_rsa pair 後,還要下
否則 ssh A server 時,會出現:
ref:
方法是把你的 public key 先送給 A server,告訴他用這個 public key 來驗證你將來 ssh client 給的key.
驗證 OK 就代表是真正的你在要求連線。就不用輸入password
首先,先產生自己的key, 會有一對,private, public:
$ssh-keygen -t rsa
都直接回 return 的話,會產生兩個 file 在 .ssh 中:
- id_rsa : private
- id_rsa.pub : public
然後把 pub key 送到 A server 去:
$scp .ssh/id_rsa.pub a_server:~
最後,就是到 A server 去,把這個 public key 加到 authorized_keys:
$cat id_rsa.pub >> .ssh/autorized_keys
* 要注意,cat key 出來看,可以看到最後是 username/servername
這個跟跟連線時的 username/servername 要對應。
-- 在 hosts 是自己亂寫的時候,要特別注意。
debian 的話,自己的機器在 ssh-keygen 完,產生 id_rsa pair 後,還要下
$ ssh-add Identity added: /home/charles-chang/.ssh/id_rsa (/home/charles-chang/.ssh/id_rsa)
否則 ssh A server 時,會出現:
Agent admitted failure to sign using the key.
ref:
- http://blog.longwin.com.tw/2005/12/ssh_keygen_no_passwd/
- http://blog.longwin.com.tw/2011/04/ssh-failure-sign-key-2011/
2013年12月24日 星期二
cron 的一些.. run as XXX 還有環境
cron 是定時執行的 daemon。
命令是在;
在crontab 中可以指定以哪一個 user 的身份來 run command
但是並不包含該 user 環境變數。
所以 run 起來會和真的以該user run 該 script 的結果不同。
為了解決這個問題,
可以在 command script 的開頭加入:
命令是在;
/etc/crontab
在crontab 中可以指定以哪一個 user 的身份來 run command
但是並不包含該 user 環境變數。
所以 run 起來會和真的以該user run 該 script 的結果不同。
為了解決這個問題,
可以在 command script 的開頭加入:
. .profile
test result . 判斷執行成功或失敗
在 shell script 中,需要知道這個 command 執行成功或失敗。
用
來代表
例如:
0 代表成功。
另外,有要用 pipe log ,又要判斷的情況。
例如:
在bash, 可以用 ${PIPESTATUS[0]} 來代表
用
$?
來代表
例如:
cd mydir
if [ "$?" -ne "0" ]; then
echo failed
else
echo success
fi
0 代表成功。
另外,有要用 pipe log ,又要判斷的情況。
例如:
make -j4 2>&1 | tee makelog
這時候用 $? 就會是 tee 這個 command 執行的結果,不是 make 的在bash, 可以用 ${PIPESTATUS[0]} 來代表
make -j4 2>&1 | tee makelog
if [ "${PIPESTATUS[0]}" -ne "0" ]; then
echo failed
else
echo success
fi
2013年1月3日 星期四
sed -- 取出 pattern 中的某個部份
例如:從 XML 檔中取出某 tag 的值。
用 sed 來操作,就是...
以上面的例子,xml tag 的 pattern 和 value就是:
前後被 tag 包起來,中間的部份要留下來 \(.*\)
把這個放到 sed 控制字串中:
最後用 \1 代表 pattern 中,第一個 \(.*\) 的內容。
這樣所有的 tag 都會被取出。
如果只是要某個 tag,例如 : id。
就可以把 id 寫入 pattern 中:
<name>Charles</name>
<id>123</id>
<color>red</color>
...
用 sed 來操作,就是...
- 找到 符合 pattern 的地方
- 印出 pattern 的某個部份
以上面的例子,xml tag 的 pattern 和 value就是:
<.*> \(.*\) <\/.*>
前後被 tag 包起來,中間的部份要留下來 \(.*\)
把這個放到 sed 控制字串中:
sed 's/ <.*>\(.*\)<\/.*> / \1 /' file
一樣用 s 指令。最後用 \1 代表 pattern 中,第一個 \(.*\) 的內容。
這樣所有的 tag 都會被取出。
如果只是要某個 tag,例如 : id。
就可以把 id 寫入 pattern 中:
sed 's/ <id>\(.*\)<\/id> / \1 /' file- http://www.unix.com/shell-programming-scripting/116920-sed-extract-xml-value.html
- http://alleightllc.wordpress.com/2007/12/13/extracting-htmlxml-tag-text-data-using-sed/
- http://www.grymoire.com/Unix/Sed.html
2012年10月2日 星期二
string array
類似 array 的作法,在 shell script 中是用 space 作分別。
像:
結果output 就是:
所以要一個一個加string array 內容是..
結果會是:
像:
STRINGLIST="a b c_d e,f"
for ele in $STRINGLIST
do
echo $ele
done
結果output 就是:
a
b
c_d
e,f
所以要一個一個加string array 內容是..
SARY="a"
SARY=$SARY" b"
SARY=$SARY" c"
echo $SARY
結果會是:
a b c
訂閱:
文章 (Atom)