xargs 做批次處理?
平常更新 gem 我都是 gem up; gem clean
問題是 rails 常常是不能更新,所以也不能清除的。
此時用 gem up; gem clean 就會把舊版 rails 幹掉...
(結果 rails 2.3.2 升級失敗,因為 facebooker 不支援......)
所以又需要用到手動更新了。這裡假設我需要更新 hpricot 和 nokogiri,
則應該下 gem up hpricot nokogiri; gem clean hpricot nokogiri
因為懶所以去找比較簡單的方式,結果花更多時間,有時候想想真的滿怪的。
總之,最後找到的解法大概是:
echo -n hpricot nokogiri | \
xargs -d ' ' -I zzz gem up zzz \; gem clean zzz
不過這樣 xargs 就必須是 GNU xargs, 因為 -d 好像是 GNU 才有的。
mac 上就要 sudo port install findutils,
然後 xargs 改用 gxargs...
本來我是希望 echo 不要 -n 而 xargs 也不要 -d,
不過這樣一來 gem 吃到的 zzz 會變成 'hpricot nokogiri'
所以就不是兩個名字,而是一個有空白的名字了...
目標是希望不要用到 shell script, 而 sed 之類的也不會用 :s
不知道最跨平台的方式會是什麼...
0 retries:
Post a Comment
Note: Only a member of this blog may post a comment.