[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 01:32 / Filesize : 243 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合@LINUX Part4



1 名前:login:Penguin mailto:sage [2008/05/17(土) 13:44:57 ID:9hFWtCOD]
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。

perlやらPythonやらの話が混ざっても良いんでない?

Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/
Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/
Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/

>>2-5あたりに色々と。

792 名前:login:Penguin [2009/02/01(日) 12:37:57 ID:2rXHcils]
それってプログラミングの入門じゃね?
シェルスクリプト関係ないような・・・

793 名前:login:Penguin mailto:sage [2009/02/01(日) 12:55:10 ID:ndMbhsZa]
作りたいものはシェルスクリプトです
作りたいものを例えると
/etc/init.d以下とか/etc/bashrcとかみたいなやつです

794 名前:login:Penguin mailto:sage [2009/02/01(日) 13:33:51 ID:Zewmp/xy]
>>793
2chの読み書きスクリプトとか作ってみたら?
けっこう勉強になった。


シェルスクリプトって極論すると、Cとかで書いた他のプログラムを
組み合わせて動かすための言語だと思う。

ようは、シェルスクリプト単体で何かできるってもんじゃない。
「変数の説明やループ制御文の説明」の次はもう何もないんじゃないかな?
基礎の次は、他のプログラムをいかに組み合わせて動かすかって話になると思う。

例えば/etc/init.d以下のスクリプトは、極論すると別のデーモンプログラムを
適当な引数与えて動かすためだけのスクリプトだよ。

2chの読み書きスクリプトは、curlとawk、sed、grep、iconv組み合わせれば書けた。

795 名前:login:Penguin mailto:sage [2009/02/01(日) 13:43:08 ID:p2dQN33F]
組み合わせるときに使うもの

文字列: pipe, リダイレクト, `展開`, 変数展開, パス展開, case
exit status: $?, if/while, wait/$!

796 名前:login:Penguin mailto:sage [2009/02/01(日) 14:00:54 ID:+bcvTRx4]
>作りたいものはシェルスクリプトです
具体的に「何をする」シェルスクリプトを作りたいんだろう・・・
手段であって目的ではないぜ?普通は。

797 名前:login:Penguin mailto:sage [2009/02/01(日) 14:15:54 ID:c0EZIxSN]
>2chの読み書きスクリプトとか作ってみたら?
>けっこう勉強になった。
面白そう。うpして。

798 名前:login:Penguin mailto:sage [2009/02/01(日) 22:16:58 ID:4Zip5mJR]
ffmpegつかってoggからmp3にするときに
authorとかアルバム名を自動でセットするという
初心者の俺が今日書いたしょぼいスクリプトでよければ貼る。

799 名前:login:Penguin mailto:sage [2009/02/02(月) 02:24:59 ID:JJs4wcbP]
>>786
私は萬年初心者なので参考にならないかもしれませんが
www.tldp.org/LDP/abs/html/
www.mogami-wire.co.jp/unix/

800 名前:login:Penguin mailto:sage [2009/02/02(月) 02:30:06 ID:fWzEZ9ea]
>>798




801 名前:login:Penguin mailto:sage [2009/02/02(月) 02:30:41 ID:fWzEZ9ea]
>>798
面白そう。うpして。

802 名前:login:Penguin mailto:sage [2009/02/02(月) 09:40:02 ID:IZY/iLbS]
>>798
見てぇ

803 名前:798 mailto:sage [2009/02/02(月) 21:22:49 ID:wSXGMZ0q]
なんか期待されてるほどのものじゃないんだけど。
ほとんど初めて書いたのでこのスレの中の人的には物足りなかったり、
ツッコミどころ満載かもしれない。
#!/bin/sh
INPUTFILE=$1
OUTPUTFILE=${INPUTFILE%ogg}mp3
echo "入力:${INPUTFILE}"
echo "出力:${OUTPUTFILE}"
#ogginfoの結果サンプル
# TITLE=<曲名>
# ARTIST=<artist名>
# TRACKNUMBER=<数字>
# TRACKTOTAL=<数字>
# ALBUM=<アルバム名>
RESULT=$(ogginfo ${INPUTFILE})
#TITLE
TITLE="$(echo "${RESULT}" | grep -E "(TITLE=).*?$")"
TITLE=\"${TITLE# TITLE=}\"
echo "TITLE::${TITLE}"
#作者
ARTIST="$(echo "${RESULT}" | grep -E "(ARTIST=).*?$")"
ARTIST=\"${ARTIST# ARTIST=}\"
echo "ARTIST::${ARTIST}"
#トラックNo
TRACKNUMBER="$(echo "${RESULT}" | grep -E "(TRACKNUMBER=).*?$")"
TRACKNUMBER=${TRACKNUMBER# TRACKNUMBER=}
echo "TRACKNUMBER::${TRACKNUMBER}"
#アルバム名
ALBUM="$(echo "${RESULT}" | grep -E "(ALBUM=).*?$")"
ALBUM=\"${ALBUM# ALBUM=}\"
echo "ALBUM::${ALBUM}"
ffmpeg -i "${INPUTFILE}" -ab 128k -author "${ARTIST}" -track "${TRACKNUMBER}" -title "${TITLE}" -album "${ALBUM}" "${OUTPUTFILE}"

804 名前:798 mailto:sage [2009/02/02(月) 21:30:24 ID:wSXGMZ0q]
あ、随所の\"いらないや。
全部ダブルクオートされてるw

805 名前:login:Penguin mailto:sage [2009/02/02(月) 22:31:59 ID:ZbWH6i1n]
ちまちま expr を起動するより速そうな感じ。

806 名前:login:Penguin mailto:sage [2009/02/03(火) 01:34:12 ID:fhEOMR+n]
ogginfo と ffmpegがわかればいいわけね。

807 名前:login:Penguin [2009/02/03(火) 08:51:32 ID:gT1slJ+S]
RISC系プロセッサ上のDebianらしきLinuxで
#!/bin/bash
...
setsid /bin/bash -c "tail -f ./journal | grep KEY >> ./log" &
sid=$!
...
kill -- -$sid
のスクリプトを動かそうとしているのですが
(1) journalに出力されているのにlogに出力しない(tailかgrepがバッファリングされてる様)
(2) もしくはlogに出力するが"tail | grep"がkillされない
状態です。何が悪いんでしょう?
このやり方でなくても同様の事が出来ればいいのですが… (tail -fをシェル上で時々動かして
ログに記録する)

808 名前:login:Penguin mailto:sage [2009/02/03(火) 22:10:40 ID:2Wa9IDSe]
単に
tail -f ./journal | grep KEY >> ./log &
sid=$!
ではマズいんですか?

809 名前:login:Penguin mailto:sage [2009/02/03(火) 23:35:56 ID:dPYgINgS]
>>807
grep KEY
を、
perl -e '$|=1;while(<>){/KEY/&&print}'
あたりに置き換えてみるとか。いや、もういっそ全部perlで(ぉ

810 名前:login:Penguin mailto:sage [2009/02/04(水) 00:20:18 ID:b8YOwJQ5]
>>808
grepの方のpidが入ってしまうのです、他のUnixでもそんなもんだったかと…

>>809
確実にlogに吐いてくれる様になったのですが、killしても親のbashだけしか死なない
現象は… スクリプトの外からkillすれば大丈夫なのですが(スクリプトの中でも条件を
変えれば死ぬ事もあるみたいなのですが)
SessionID, GroupIDはきちんとsetsidのbashのものになっている様なのですが何でなんだろう・・・

>いや、もういっそ全部perlで(ぉ
Perlでtail -fのエミュレートは出来るのでしょうか?(Perl知らないので)



811 名前:login:Penguin mailto:sage [2009/02/04(水) 13:24:46 ID:kpOfhCqC]
>>807
> (tailかgrepがバッファリングされてる様)

tail -fはline bufferd、
gnu grepには--line-bufferedってオプションがある。

>>810
tailだけsetsidするんじゃ駄目なの?

> grepの方のpidが入ってしまうのです

SIGPIPEでtailは終了するから、grepだけ終了すればいいんじゃないの?

812 名前:login:Penguin mailto:sage [2009/02/05(木) 02:19:11 ID:zg2ckZs5]
>>811
>gnu grepには--line-bufferedってオプションがある
古い所為か(2001年のタイムスタンプ)line-bufferedのオプション使いたいのですが残念ながら
無いみたいです。上で教えて頂いたperlの文でも入力バッファの問題は回避できる様です

>tailだけsetsidするんじゃ駄目なの?
grepの方も同じsid, gidにしたいので…

>SIGPIPEでtailは終了するから、grepだけ終了すればいいんじゃないの?
tailは次に./journalに出力するまで終了しないので多分writeのエラーをみてるのだと思います

スクリプトのkillでプロセスグループごと終了できないというのは自分が馬鹿なのをこれを
書いてて今気付きました。
(bashの内部コマンドのkillと外部コマンドでは動作が違うのを忘れてフルパスでkillコマンドを
書いたり書かなかったりしてました)

結局 grepの入力バッファの問題だけみたいでした(だからプロセスグループごとのkillに失敗した
時tailだけ手で終了させればlogに出力はした)

813 名前:login:Penguin mailto:sage [2009/02/07(土) 23:40:20 ID:/JuKteVM]
神様コマンドで
デスクトップ画像変える方法教えてくれ

by     ubuntu


814 名前:login:Penguin mailto:sage [2009/02/08(日) 00:52:19 ID:cCyeuq1v]
>>813
gnome使ってるのなら
ttp://smdn.invisiblefulmoon.net/linux/tips/gnome/change_wallpaper/
でどうだろうか?

815 名前:login:Penguin mailto:sage [2009/02/08(日) 06:42:05 ID:u4QFXfom]
>>814
ないすでーす

816 名前:login:Penguin mailto:sage [2009/02/11(水) 13:22:04 ID:IEgUtHHw]
cshの勉強をするのにお勧めの書籍ってある?

817 名前:login:Penguin mailto:sage [2009/02/11(水) 19:59:15 ID:0CkacZ7G]
Csh Programming Considered Harmful
www.faqs.org/faqs/unix-faq/shell/csh-whynot/


818 名前:login:Penguin mailto:sage [2009/02/12(木) 00:03:13 ID:Bwsj0K7C]
>www.faqs.org/faqs/unix-faq/shell/csh-whynot/
セキュリティの問題でもあるのかと思ったら単に好みの程度の問題みたいね
いいじゃないインタプレタのシェルなんだから、本格的にプログラムが組みたければ
Cとか使えばいいんだし
自分はむしろsh系はインタプレタ言語のくせに未だに [ $a -lt $b ]; みたいな直感的に
分かりにくいし書式に癖があるとこが苦手だな

819 名前:login:Penguin mailto:sage [2009/02/12(木) 00:17:02 ID:OQTuzP5E]
GNUの政治的な言いがかりだよ。Tcl 叩きなんか酷いもん

820 名前:login:Penguin mailto:sage [2009/02/12(木) 09:49:04 ID:ke7Lxuau]
「インタプレタ」って表記ははじめて見た。



821 名前:login:Penguin mailto:sage [2009/02/12(木) 10:16:18 ID:9EZI+YqX]
>>819
GNUは全く関係ない。
GNU出来る前から、cshはプログラム書くもんじゃないという話は定番。

822 名前:login:Penguin mailto:sage [2009/02/12(木) 10:57:48 ID:tCfZqJn3]
bashで十分。
他にもあるかもしれないが、bashを極めた方が
得るものは多いのでわと。

if [ cond ];then
 hoge1
else
 hoge2
fi

って 見て fi のセンスに脱帽の俺(意味不明)

823 名前:login:Penguin mailto:sage [2009/02/12(木) 11:23:19 ID:9EZI+YqX]
そのfiはAlgol由来

>>818
> [ $a -lt $b ];

はカッコも左右で閉じているし、中間記法で十分「直感的」だと思うが?
もしかしたら、() や < を使わないのは、「習慣的」でないと言いたいのかな?
[ より ( なんてのは「直感」とはまるで関係がない。

824 名前:login:Penguin mailto:sage [2009/02/12(木) 11:33:51 ID:oRvS6Hfm]
>>823
>そのfiはAlgol由来

自分もそう覚えてたんだけど、改めて調べてみたら自信が無くなった。 この
コードサンプルによると構文は if then begin end なんだけどね。 

en.wikipedia.org/wiki/ALGOL#Code_sample_.28ALGOL_60.29

まあ、Algolって方言多いからどこかであったのかも。


825 名前:login:Penguin mailto:sage [2009/02/12(木) 11:38:51 ID:oRvS6Hfm]
自己解決。 Algol 68の構文か。 60と68でこんなに劇的に構文が違うなんてびっくり。
en.wikipedia.org/wiki/ALGOL_68#Code_sample


826 名前:login:Penguin mailto:sage [2009/02/12(木) 11:45:02 ID:9EZI+YqX]
Algol68って書こうとしたけど、
ちょっと自信がなくなって68抜いたら余計まずかったか orz

827 名前:login:Penguin mailto:sage [2009/02/12(木) 12:48:52 ID:LH9kJjZb]
>>817 の日本語訳も貼っておく。
これってかなり有名だと思うんだけど、最近の人は知らないのかな?

www.kiso.tsukuba.ac.jp/~makimura/text/node239.html

828 名前:login:Penguin mailto:sage [2009/02/12(木) 13:53:40 ID:1plRLkzR]
某銀行、バリバリcsh使ってバッチ処理しているぜ
「foo.cshを流します」ってメールがしょっちゅう飛んでくる
(bar.shの場合もあり)

俺は無関係なので何しているのかは知らない

829 名前:login:Penguin [2009/02/12(木) 17:41:38 ID:MQL/I4RH]
ふぃ〜

830 名前:login:Penguin mailto:sage [2009/02/12(木) 17:47:45 ID:sR2aoOwZ]
今どきcsh強制はかんべんしてくださいませんか
そろそろ移行しましょうよ




831 名前:login:Penguin mailto:sage [2009/02/12(木) 21:02:17 ID:FSng8IrW]
POS業界だけどメインのスクリプトは/bin/cshだよ

832 名前:login:Penguin mailto:sage [2009/02/12(木) 21:53:51 ID:LH9kJjZb]
POSってNTじゃなかったっけ?

833 名前:login:Penguin mailto:sage [2009/02/12(木) 22:20:06 ID:FSng8IrW]
POSといってもwindows・solaris・Linuxと色々あるよ

834 名前:login:Penguin mailto:sage [2009/02/12(木) 22:37:30 ID:9EZI+YqX]
TRONのことも忘れないで上げてください。
昔はConcurrent CP/Mのやつも…

835 名前:login:Penguin mailto:sage [2009/02/12(木) 23:23:22 ID:czJX5aHE]
SunOSで育った自分は随分長くcsh/tcshに固執してたが、bashが主体のLinuxでそれを続けるのは
しんどくなってshに転向した。 慣れるとやっぱりshスクリプトの方が可搬性が高くて便利ではあるね。

836 名前:login:Penguin mailto:sage [2009/02/12(木) 23:47:12 ID:VuxIBsDt]
>>820
どんな日本語発音化が一般的なのかな、インタープリターは嫌だな

>>821
重い、遅い、互換性、個人的に関数が書けないってのはあるけど、リンク先のは
sh使いのがcsh使った時の愚痴を態々レポート形式で書き連ねたみたいでなんかね
大量にコード書かなきゃいけないのならkshを推奨なんだろうけどね

>>822
' 'や';'が必要だったり必要じゃなかったり"[ $argc -lt 2 ] && exit"
で何で括弧が必要なのかとかね
括弧がコマンドのエイリアスだと知らないと直感的どころじゃないと思うけど
後、数学記号じゃなくて"-lt"とかいきなり大括弧を使うのも憶え難いな

837 名前:login:Penguin mailto:sage [2009/02/13(金) 00:00:32 ID:TCRLlSaH]
>>835
自分もSunの影響はありましたね、ほかのUnixは(シェル環境が)使い辛いんだか
なんだかだったんでね

838 名前:login:Penguin mailto:sage [2009/02/13(金) 00:20:30 ID:rRTiQTAd]
>>836
とりあえず、直感で文法を理解するのは止めろ。獣じゃないんだから。

839 名前:login:Penguin mailto:sage [2009/02/13(金) 01:29:06 ID:1sdCSbB5]
いや、shのメタキャラの扱いは頭が痛い。ゆえにPerlに流れた人も多数と思われ

840 名前:login:Penguin mailto:sage [2009/02/13(金) 04:18:13 ID:ce9+GZrq]
すべてPerlの枠内でやるぜぇ!フゥハハハー



841 名前:login:Penguin mailto:sage [2009/02/13(金) 12:44:48 ID:V9eIe9Hv]
Perlをやると頭がウニるのでrubyでさらっとやりましょう。

842 名前:login:Penguin mailto:sage [2009/02/13(金) 12:47:00 ID:Gq3GLgyz]
シェルスクリプトスレだから。

843 名前:login:Penguin mailto:sage [2009/02/13(金) 13:54:32 ID:yjmdVJca]
了解

844 名前:login:Penguin mailto:sage [2009/02/13(金) 14:02:04 ID:rRTiQTAd]
perl, python, ruby(アルファベット順)は、
コマンドラインの文字エスケープが面倒くさいぞ。
コマンドラインを直接扱えるshは、shならではの便利さがある。

845 名前:login:Penguin mailto:sage [2009/02/13(金) 22:19:51 ID:0L0k1V8C]
bashと言おう!

846 名前:login:Penguin mailto:sage [2009/02/13(金) 22:29:03 ID:Gq3GLgyz]
バッシュ・ザ・スタンピード

847 名前:login:Penguin mailto:sage [2009/02/14(土) 01:27:18 ID:4XWVPvB1]
おくらほますたんぴーと

848 名前:login:Penguin mailto:sage [2009/02/19(木) 00:43:45 ID:E2B6YhV6]
Command-line Fu
www.commandlinefu.com/

こことても良いサイトね
便利よ

849 名前:login:Penguin mailto:sage [2009/02/19(木) 10:01:05 ID:I3ZMt/XU]
前見たときには微妙なのばっかだったが・・・

850 名前:login:Penguin mailto:sage [2009/02/19(木) 23:07:11 ID:QHZryBLH]
>>848
なんだこれは



851 名前:login:Penguin mailto:sage [2009/02/19(木) 23:34:35 ID:emv2wr4j]
日記を書いてるテキストファイルがあるんだけど
コマンドで
その日記の日付を置換したい場合どうすればいいか教えてください
geditでは日付それぞれ違うので一括して変更できなかったので
**/**/**
を・・・・・・・に変換したいです
よろしく男根GAYします

852 名前:login:Penguin mailto:sage [2009/02/19(木) 23:37:20 ID:cCKDE498]
>>851
sed使え。

853 名前:login:Penguin mailto:sage [2009/02/19(木) 23:49:02 ID:emv2wr4j]
>>852
ありがトン

854 名前:login:Penguin mailto:sage [2009/02/20(金) 00:42:21 ID:myUOwbMU]
bashとshでどう違います?

shだと
export hoge=FUgfdsa とかできない
配列が使えない
くらいは知ってるんですが

855 名前:login:Penguin mailto:sage [2009/02/20(金) 00:49:54 ID:XTIEtF8Q]
古いシェルのことを考えたら切りがないよ
www.bookshelf.jp/texi/autoconf-ja/autoconf-ja_10.html
/bin/shを名乗るならPOSIX sh準拠でいてほしいね

856 名前:login:Penguin mailto:sage [2009/02/20(金) 00:56:59 ID:+4QiWBsa]
>>854
いろいろ違うがshの種類によってもさらに違うので一概には言えない。
おかげで、GNU autotools は恐しく涙ぐましい努力をしている。
詳しくは「移植性 シェルスクリプト」あたりでぐぐれ。

857 名前:login:Penguin mailto:sage [2009/02/20(金) 01:42:32 ID:slfVamAC]
>>854
以下のスクリプトを test-cdpath.sh として保存する。
---------
#!/bin/sh
# #!/bin/bash

echo "mkdir -p hoge/foo"
mkdir -p hoge/foo
pwd
cd hoge
pwd
cd foo
pwd

exit
----------
$ export CDPATH="/usr/src"
$ ./test-cdpath.sh


858 名前:login:Penguin mailto:sage [2009/02/20(金) 11:19:48 ID:UmU5RxVP]
>>854
自分で比較してみれば
heirloom.sourceforge.net/sh.html

859 名前:login:Penguin mailto:sage [2009/02/22(日) 23:16:28 ID:+4BXOJtP]
自分は普段kshを使ってプログラムを作っています。
ただ自己学習の一環として他のshもやってみようと思い、
cshの本をとりあえず買ってきました。
内容はアルゴリズム特集のようなもので入門書ではないです。そこそこむずかしめ。

ただウィキペディアで見るとcshは現在ほとんど使われて無いとか。
本当でしょうか?無駄金使ってしまいましたかね?
幸い業務で使うわけではないので勉強すれば役に少しは立ちそうですが・・。

860 名前:login:Penguin mailto:sage [2009/02/22(日) 23:23:52 ID:yH/Zc28c]
>>859
うちの会社はcshのが多いわけだが。hp-uxとかsolarisとか。aixはどうだっけ?



861 名前:login:Penguin mailto:sage [2009/02/22(日) 23:27:29 ID:i9kTRR2X]
>>859
> ただウィキペディアで見るとcshは現在ほとんど使われて無いとか。
> 本当でしょうか?無駄金使ってしまいましたかね?

本当です!(><)
「cshスクリプト使うのはよくないよ〜(considered harmful)」って文書があるくらい。

862 名前:login:Penguin mailto:sage [2009/02/22(日) 23:30:07 ID:+4BXOJtP]
>>860>>861
ありがとうございます。
使ってるところもあるけどあまり推奨されては居ないみたいなんですね。
とりあえずアルゴリズム集っぽい本なので表面的に理解して
ざっと勉強してみるくらいはしてみようかと思います。



863 名前:login:Penguin mailto:sage [2009/02/23(月) 00:01:25 ID:02TkTA5B]
cshとbashの違いってちょっと方言が違う〜くらいでないの?
forがforeachとか

あんまりしらないけど

864 名前:login:Penguin mailto:sage [2009/02/23(月) 00:42:30 ID:/AxKX1aI]
cshとtcshはどう地がうんすか?

865 名前:login:Penguin mailto:sage [2009/02/23(月) 01:44:47 ID:Abtbk8hJ]
cshに知恵がついたのがtcsh。

もはや両方とも過去の遺物。ログインシェルとしては現役だが、
スクリプトでcsh使うのはCOBOLerを名乗るような感じで奇異の目で
見られるのは避けられない。

866 名前:login:Penguin mailto:sage [2009/02/23(月) 01:46:15 ID:RMEIkcBQ]
つーかcshはUNIXの話だろ。
linuxはbash

867 名前:login:Penguin mailto:sage [2009/02/23(月) 02:08:49 ID:Pbes3ogj]
>>864
最近はcshは単にtcshへのシンボリックリンクというシステムが
多いんじゃないかな? Solarisは最近はどうなのかな?

868 名前:login:Penguin mailto:sage [2009/02/23(月) 08:25:23 ID:c65f34nn]
>>866
>linuxはbash
なんだよ、それ。

869 名前:login:Penguin mailto:sage [2009/02/23(月) 11:12:11 ID:KfjF9GSX]
bash
OpenSolaris,mac,linux

ksh
Solaris

870 名前:login:Penguin mailto:sage [2009/02/23(月) 11:29:59 ID:KfjF9GSX]
たまに、SolarisとかHP-UX使ってる輩が、linux系のシェルスクリプトの質問で
そのスクリプト動かないんですが、なんて質問してるバカがいる

で、OSきくと、SolarisとかHP-UXだったりする
あなたのはshellはなんですか?なんて逆質問されたりする




871 名前:login:Penguin mailto:sage [2009/02/23(月) 11:42:17 ID:0iVkUMQ3]
sh: HP-UX
csh: IRIX
bash: OpenSolaris, Mac OS X
ksh: AIX, Solaris

872 名前:login:Penguin mailto:sage [2009/02/23(月) 16:32:54 ID:/AxKX1aI]
いやsolarisはcshですよ

873 名前:login:Penguin [2009/02/23(月) 17:41:46 ID:YasG1lnX]
久々のメジャーアップデート、定番シェル「bash」が4.0に
ttp://journal.mycom.co.jp/news/2009/02/23/031/index.html

GNUプロジェクトは20日 (米国時間)、コマンドラインシェル「bash 4.0」を
リリースした。多くのUNIX系OSに対応したソースコードは、ライセンスにGNU
GPLv3を適用、GNUプロジェクトのFTPサイトや各地のミラーサイト経由で配布
される。

2004年7月以来4年7ヶ月ぶりのメジャーアップデートとなる今回のリリースでは、
zshライクな機能を追加。ディレクトリ名を入力するだけでカレントディレクトリ
を変更できる「autocd」、サブディレクトリを再帰的にファイル検索する「globstar」、
入力補完時にディレクトリ名のスペルミスを修正する「dirspell」などのオプションが
新設された。

新しいリダイレクト演算子として「&>>」を追加、標準出力 (>>) と標準エラー出力 (2>&1)
を結合したデータをファイルにアウトプットすることが可能になった。case構文中のコマンド
区切り文字として「;&」および「;;&」を追加、いわゆるフォールスルーが実現されている。

bashのラインエディット機能を担うライブラリ「GNU readline」もアップデート、メジャー
バージョンのv6.0としてリリースされた。変数「history-size」の定義により履歴の最大数が
設定できるようになるなど、いくつかの変更が加えられている。bash 4.0のビルドには、ソース
コードに同梱されるreadline 6.0が必要。

874 名前:login:Penguin mailto:sage [2009/02/23(月) 17:46:37 ID:8fvTtZVR]
>>873
globstarが素敵

875 名前:login:Penguin mailto:sage [2009/02/23(月) 18:19:31 ID:0iVkUMQ3]
ちったあ処理速度は速くなったのかね

876 名前:login:Penguin mailto:sage [2009/02/23(月) 23:46:13 ID:3cx/aS+U]
>>874
find -name のショートカットか。

877 名前:login:Penguin mailto:sage [2009/02/24(火) 00:49:40 ID:A7QF/SS5]
locateでいいんでないの?

878 名前:login:Penguin mailto:sage [2009/02/24(火) 08:32:50 ID:p4EZ+me2]
locateは、必ずその前にupdatedbかけないと、正しい結果は得られない

879 名前:login:Penguin mailto:sage [2009/02/24(火) 10:05:02 ID:o4EbZdLy]
locate使ったこと無いな
/etc/cron.daily/slocate.cron は真っ先に消してしまうし。

880 名前:login:Penguin mailto:sage [2009/02/24(火) 14:05:08 ID:A7QF/SS5]
updatedbのめんどくささがあってもlocateの速さは魅力



881 名前:login:Penguin mailto:sage [2009/02/24(火) 14:44:59 ID:ijmAhEc5]
そんなあなたにinotify対応locate

882 名前:login:Penguin mailto:sage [2009/02/24(火) 18:05:43 ID:mkgOQJW+]
ホームディレクトリ以下にある~/.thumbnails の中身を一括でjpgに変換して
容量を節約したいと思っているのですが、以下のスクリプト(convert-thumbnail2jpgl.sh)で
convert-thumbnail2jpg.sh: 36: declare: not found と出てしまい、
変数width、heightが文字変数として扱われたままになってしまってif分岐ができません。
もしよろしければどなたか、不具合の原因をご指摘していただけると助かりますm(_ _)m

#!/bin/sh
find ./ -name "*.png" -print > /tmp/thumb-file-list #PNG画像ファイルをリストアップ
for file in `cat /tmp/cache-file` #リストアップされたファイルから順に処理
do
res=`expr $file : "\(.*\).png"`
convert -background white -flatten $file $file
imagescale=`identify $file | egrep -o '[[:digit:]]*x[[:digit:]]*\ '| tr -d "\ "`
#ImageMagickを使って"幅x高さ"の書式で画像の大きさを取り出す
declare -i width
width=`echo -n $imagescale |sed 's/x.*//'` #"幅x高さ"から幅の部分のみを取り出す
declare -i height
height=`echo -n $imagescale |sed 's/.*x//'` #"幅x高さ"から高さの部分のみを取り出す
if [ $width -lt 96 -o $height -lt 96];then
#縦横いずれかが96ピクセル以下の画像はnautilus上でそのまま表示される
mogrify -format jpg -quality 80 $file #PNGをJPGに変換
mv $res.jpg $res.png #拡張子をPNGに偽装し、本来あったPNGに上書き保存
else
mogrify -resize 75% -format jpg -quality 80 $file
mv $res.jpg $res.png
fi
done
cat /tmp/thumb-file-list >> thumb-cache-file
#(未着手)次回の変換時に偽装されたJPGを再エンコードしないように変換した分を記録

883 名前:login:Penguin mailto:sage [2009/02/24(火) 18:51:30 ID:0/zaoYuK]
>>882
> find ./ -name "*.png" -print > ***/tmp/thumb-file-list*** #PNG画像ファイルをリストアップ
> for file in `cat ***/tmp/cache-file***` #リストアップされたファイルから順に処理
読み込むファイルを間違ってるから for 文の file に何か別なものが入ってるかもしれない。

一行目を #!/bin/sh -x にするか
$ sh -x convert-thumbnail2jpg.sh
とかやって頑張れ。

> if [ $width -lt 96 -o $height -lt 96];then
] の前にスペースを入れないとエラーになるはず。

$ sh -x

$ A=1 ; if [ "$A" = "1"]; then echo OK ; fi
+ A=1
+ '[' 1 = '1]'
sh: [: missing `]'

884 名前:882 mailto:sage [2009/02/24(火) 19:03:27 ID:mkgOQJW+]
>> for file in `cat ***/tmp/cache-file***` #リストアップされたファイルから順に処理
>読み込むファイルを間違ってるから for 文の file に何か別なものが入ってるかもしれない。
恥ずかしい間違いをしてしまってすみません…
一時ファイルに自分用に適当なファイル名を付けてしまっていたので、
ここに投稿する際に勝手に変更してました(元スクリプトは両方共/tmp/cache-file)

-xで内容が詳しく見られるようですね。もう少し頑張ってみます…

885 名前:882 mailto:sage [2009/02/24(火) 19:13:26 ID:mkgOQJW+]
1行目を
#!/bin/bash
にして、実行する際も$bash convert-thumbnail2jpg.sh と打つことで解決しました。
shではdeclareが使えず、bashでは使えるようです

お騒がせして申し訳ありませんでしたm(_ _)m

886 名前:883 mailto:sage [2009/02/24(火) 20:34:08 ID:0/zaoYuK]
>>884
> (元スクリプトは両方共/tmp/cache-file)
スクリプトの中で何回か使うものなら
cachefile="/tmp/cache-file"
とかやって定義してしまったほうがいいと思う。

887 名前:882 mailto:sage [2009/02/25(水) 01:46:08 ID:TZfMttNn]
>>886
おかげさまで無事完成しました
ありがとうございましたm(_ _)m

888 名前:login:Penguin [2009/02/26(木) 17:54:06 ID:fuSH76wo]
関連スレ
シェルスクリプトでGUI
pc11.2ch.net/test/read.cgi/tech/1235483221/

889 名前:login:Penguin mailto:sage [2009/02/27(金) 02:01:52 ID:+MZ66A9I]
bash4.0 導入した人誰かいまつか ?
RHEL5.3 make で error orz...


890 名前:login:Penguin mailto:sage [2009/02/28(土) 00:15:37 ID:2KTcWABE]
とりあえず使えてるぞ
ubuntu8.10

GNU bash, version 4.0.0(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <gnu.org/licenses/gpl.html>



891 名前:login:Penguin mailto:sage [2009/02/28(土) 00:25:54 ID:i9TaSY11]
>>890
/bin/bash を置き換えたんですか?

892 名前:login:Penguin mailto:sage [2009/02/28(土) 00:31:49 ID:2KTcWABE]
/usr/local/に置いただけ

俺には3.2と4.0の違いはあまり関係ないということがわかった






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef