1 名前:デフォルトの名無しさん [2005/04/04(月) 03:43:03 ] シェルスクリプトに関する質問・回答や議論等を行う相談室スレッド。
182 名前:177 mailto:sage [2005/11/22(火) 01:48:17 ] >>181 ありがとう がんばってみます
183 名前:デフォルトの名無しさん mailto:sage [2005/11/22(火) 02:18:59 ] なんかUNIX板で似たような質問を見てきた気がするけど、気のせいかな?
184 名前:デフォルトの名無しさん mailto:sage [2005/11/22(火) 04:40:34 ] >>183 がんばる=他のスレでも質問する だったみたいだな。w
185 名前:デフォルトの名無しさん [2005/11/26(土) 11:08:04 ] shellスクリプトの開発環境ってありますか? べた打ち、ベタ読みは不便で・・・ 命令文や変数に色がつく程度でも良いのですが・・・
186 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 11:33:47 ] >>185 お使いのエディタに、キーワードを登録してください。 登録済みキーワードに色がつかないエディタをお使いなら、適宜乗り換えてください。
187 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 17:29:36 ] 試しにxyzzy bash-mode でぐぐったら引っかかった。 いいかも、これ。
188 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 20:10:23 ] 何で色が付かないと不便なんだろう 漏れは逆に色が付いてると禿しく見にくい
189 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 21:31:21 ] 色使いが悪いだけじゃないのか
190 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 22:30:11 ] エディタ操作って「慣れ」とか「親しんだ環境」が最重要事項だから
191 名前:デフォルトの名無しさん [2005/11/26(土) 23:20:32 ] >>186 えーとえーと、 viエディタでガリガリ書いて、コンパイルして ってのに疲れたんです。 teratarm君はお目目に優しくないし・・・ エディタが擬似的に実行したりしてくれないかなあ・・・ >>187 情報ありがとうございます。 でもエディタそのものの使用で挫折しました。
192 名前:デフォルトの名無しさん mailto:sage [2005/11/26(土) 23:23:07 ] >>191 コンパイル?
193 名前:デフォルトの名無しさん [2005/11/27(日) 00:05:10 ] >>192 まちげーた・・・ sh ほにゃらら で、毎回実行して ってのが正解です。 別にshって打つのは辛くないです。パス通す方が雌鳥なだけです。 まあその程度の人間だってことです。俺は。
194 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 00:14:21 ] パス通す?
195 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 00:44:41 ] 実行権限与えるのがめんどくさい、じゃねーのか? パスが通ってなかったら、sh 打ったって実行できん。 chmod 777 hoge するのが面倒なら、それこそシェルスクリプト組んどけ。
196 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 00:50:44 ] #!/hoge すら書いてなさそうな香具師だな
197 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 01:28:22 ] まあ何だか知らないが、今までvi使ってたんならvimはどうよ。あれ 色つくだろ。
198 名前:デフォルトの名無しさん [2005/11/27(日) 01:32:53 ] なるほどー。 でも何でか、sh でカレントから新しくシェルを起動できるんだけどな? ファイル名単体で打ったらダメだけど・・・環境変数に書いた覚えないし。 と思ったら、スクリプトの一行目が #!/bin/sh だったことを思い出した。 なるほど。そうか、パスは通してるのか。ふむふむ。 「実行権限を与えてパスを通す」。なるほどなるほど。 いやー、どれだけ自分の知識が曖昧か再認識しましたよ。
199 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 02:00:46 ] >>197 どうやらvimにシェルは無いっぽいです。 というわけで、terapadの色の設定を ガリガリ書き換えることにしました。 皆様お世話になりました。 また何かあったらよろしくお願いします。
200 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 02:14:08 ] 200
201 名前:デフォルトの名無しさん mailto:sage [2005/11/27(日) 10:30:51 ] >>195 >パスが通ってなかったら、sh 打ったって実行できん。 へ?
202 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 00:05:03 ] 俺も>>195 は意味不明だが、スルーした方がよい気がする
203 名前:デフォルトの名無しさん [2005/12/04(日) 19:53:23 ] ファイル名を一括置換するシェルスクリプト #! /bin/sh for nm in temp*; do mv $nm HOGE${nm#tr}; done temp → HOGEにするのはわかるのですが、 hhh_a_xxxxxxxxx.txt → hhhaxxxxxxxxx.txt のように _ を削除(一括置換)するスクリプトを教えてください。 ※xxxxxxxxxは可変
204 名前:デフォルトの名無しさん mailto:sage [2005/12/04(日) 21:14:19 ] >>203 方法は色々あるけど tr -d あたりがお勧め。
205 名前:デフォルトの名無しさん mailto:sage [2005/12/04(日) 22:40:36 ] >>204 tr のコマンドの意味はわかったんだけど、どうやってコマンド組み合わせればいいの? tr は標準出力のものを対象にしてると書いてあったけど、コマンドの組み合わせ方が、わかんないです。
206 名前:デフォルトの名無しさん mailto:sage [2005/12/04(日) 23:17:46 ] >>204 #!/bin/sh for f in hoge* do mv $f `echo $f | tr -d 削除文字` done できたよ。ありがとう。
207 名前:デフォルトの名無しさん [2005/12/09(金) 19:09:12 ] 質問なんですけど、 NTのコマンドプロンプトで テキストファイルが二つあって 中身を片方にアペンドしたいのですが どう記述したらいいでしょうか? マニュアルも何もなくて一人で困ってます
208 名前:デフォルトの名無しさん mailto:sage [2005/12/09(金) 19:10:20 ] type a.txt >> b.txt
209 名前:デフォルトの名無しさん mailto:sage [2005/12/09(金) 20:00:54 ] ありがとうございました ホント助かります
210 名前:デフォルトの名無しさん mailto:sage [2005/12/10(土) 02:05:23 ] helpコマンドがある
211 名前:デフォルトの名無しさん [2005/12/12(月) 13:58:44 ] 数100人のユーザがいるLinuxで 全ユーザのパスワードを一括で設定できる シェルスクリプトを教えろよ。
212 名前:デフォルトの名無しさん mailto:sage [2005/12/12(月) 14:04:46 ] sed 's/:[^:]:/:hoge:/'
213 名前:デフォルトの名無しさん mailto:sage [2005/12/12(月) 22:19:23 ] evalって問答無用に変数を展開しちゃうんですよね?
214 名前:デフォルトの名無しさん mailto:sage [2005/12/12(月) 22:39:28 ] どういう局面のことを言ってるのかわからんけど、 変数を展開するのはevalじゃないと思われ。 多分だけど、eval以前に変数が展開されてるんちゃうか。再確認してみ。 evalは展開された結果を評価してるだけのはず。
215 名前:デフォルトの名無しさん [2005/12/19(月) 15:43:31 ] user> ./a.out < a000001.txt > result.txt で結果をtxt化しているのですが、a000001.txtをa100000.txtまで処理させて 一個一個の結果を足して一つのtotal_result.txtしていきたいのです。 どのようにしたら良いのでしょうか? 具体的にはa000001.txtは以下のように出力されたとします。 1 0 3 2 4 3 3 7 7 4 8 3 5 8 1 6 2 8 7 0 4 8 2 3 a000002.txtも以下のように出力されたとします。 1 0 3 2 2 6 3 4 7 4 6 3 5 2 2 6 6 9 7 1 1 8 1 2
216 名前:デフォルトの名無しさん [2005/12/19(月) 15:44:16 ] これが10万まで続くのですが、結果の2列目と3列目を足していきたのです。 1 0 6 2 6 9 3 11 14 4 14 6 5 10 3 6 8 17 7 1 5 8 3 5 (これは先ほどの二つの結果の合計です)
217 名前:デフォルトの名無しさん mailto:sage [2005/12/19(月) 16:06:02 ] スレ違い回答だが awk '{x[$1]+=$2;y[$1]+=$3;} END {for(i=1;i<=3;i++)printf("%d %d %d\n",i,x[i],y[i]);}' result*.txt
218 名前:215 mailto:sage [2005/12/19(月) 18:20:06 ] >>217 さん レスありがとうございます。 UNIX初心者な者で解答をみてもよく分からないのが現状です。 gccでコンパイルした後、どうしていけば10万のファイルの結果を合計していけるのでしょうか? スレ違いとは思いますが、ご指導いただけたらと思います
219 名前:デフォルトの名無しさん mailto:sage [2005/12/19(月) 19:12:10 ] んなのプログラムの方変更した方が早いよ
220 名前:デフォルトの名無しさん mailto:sage [2005/12/19(月) 19:14:39 ] んなのが調べられないぐらいのレベルなら 聞いてボーッと回答待つより1万行のバッチ書け。
221 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 20:43:04 ] 変数置換えで入れ子したい! ${${NAME##*/}%.*} こゆー事したい場合どんなのがスマート? わかりにくいね、上のはbasename ${NAME%.*} なんだけど
222 名前:デフォルトの名無しさん mailto:sage [2005/12/21(水) 02:55:27 ] >>221 $ x=/a/b/c.d $ y=${x#${x%?}} $ echo $y d こういう事ならできるけど、前後を一変に取り除く方法は知らない。 $ x=/a/b/c.d $ y=${x%.*} $ y=${y##*/} $ echo $y c これじゃダメなの?
223 名前:デフォルトの名無しさん mailto:sage [2005/12/21(水) 09:50:00 ] >>215 joinを知れば何かが見えてくる。
224 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 16:12:11 ] 質問です。 例えばdateで現時刻をvar.txtに出力するとします。 date > var.txt txtファイルの中身は時間が書いてあると思うのですが、 もう一度↑のコマンドを実行した場合に、中身も上書きされてしまいますよね? それで同じファイルに↑のコマンドの実行結果を書き足していくことは不可能ですよね。 可能でしたらその方法をおしえてくだしあー
225 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 16:19:45 ] >>224 date >> var.txt
226 名前:デフォルトの名無しさん mailto:sage [2006/01/07(土) 16:20:23 ] >>225 どうも
227 名前:デフォルトの名無しさん [2006/01/09(月) 18:04:46 ] ある年月が入力された時に、その前後の年月を出力するには どのようにすればよいでしょうか? 例: 200512と入力されると、200511 200601が出力される
228 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 18:07:50 ] >>227 つ date コマンド
229 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 18:21:10 ] dateコマンドでどのようにして前の月や次の月を 表示させるのですか?
230 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 18:21:27 ] >>227 cut,sed,date,exprくらいでできそう
231 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 20:53:50 ] >229 すくなくともgnuのdateはできるよ ttp://www.linux.or.jp/JM/html/GNU_sh-utils/man1/date.1.html
232 名前:227 mailto:sage [2006/01/09(月) 22:31:15 ] >231 おおこんなことができるのですね。 勉強になりました。 これでなんとかできそうです、ありがとうございました。
233 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 22:38:31 ] どんな気持ちでこんなものを通したのか・・・ date --date '2 days ago' days agoって・・・
234 名前:227 mailto:sage [2006/01/09(月) 23:50:58 ] 行けそうと思ったのですが、現在時からの日にち計算しかできませんでした。 うーん。。 特定した日にちから指定するのは無理かもしれません。。
235 名前:デフォルトの名無しさん [2006/01/10(火) 00:05:08 ] 試してないので外れだったらスマンが date --date '20060101 + 1 month'
236 名前:227 mailto:sage [2006/01/10(火) 00:12:55 ] >234 いけました汗 ずっと1 monthの部分を外に出して実行してた大馬鹿者でした。 ありがとうございました。
237 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 05:42:11 ] bash って何て読むんですか? ばっしゅ ヴぁっしゅ びーしぇる ヴぉーんしぇる ヴぉーんあげいんしぇる ぷろんぷと・ヴぁっしゅ ヴぁにっしゅ 皆さん何て読んでますか?
238 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 06:54:52 ] bash
239 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 06:59:25 ] シーシェルは孤高
240 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 10:36:42 ] csh使ってる奴って変態なの?
241 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 12:13:36 ] Solarisだと標準がcshだし。
242 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 17:05:01 ] tcshが使えるのにcshを使ってたら変態 スクリプト書くのにもcshを使ってたら変態
243 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 20:09:55 ] >>241 こらこら、嘘を教えなさんな。
244 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 20:22:49 ] Solaris 1 のころならな
245 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 21:42:11 ] >>243 Admintoolでshとcsh以外選べたっけ?
246 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 22:10:04 ] >>245 admintool 自体が obsolete.
247 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 22:33:06 ] そうだったのか。
248 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 03:43:32 ] Oracle入れるとcsh押し売りされるよね
249 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 04:03:14 ] あれは謎シェルだねw 何で直さないんだろうか。
250 名前:デフォルトの名無しさん [2006/01/22(日) 17:16:33 ] command | tee log | grep hoge としたときに、commandの終了ステータスを知る方法はありませんか? command > log ret=$? grep hoge log としとけばretを見ることで可能なんですが、それ以外で。
251 名前:デフォルトの名無しさん mailto:sage [2006/01/23(月) 00:42:08 ] kwsk
252 名前:デフォルトの名無しさん mailto:sage [2006/01/23(月) 16:39:20 ] (command; echo $? >/tmp/hoge) | .... じゃだめ?
253 名前:デフォルトの名無しさん mailto:sage [2006/01/26(木) 12:23:51 ] >>252 おお、なるほど! ありがとうございます。
254 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:18:39 ] シエル先輩をいぢくるスレはここですか?
255 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 06:00:01 ] >>250 もう遅いかな? bash には PIPESTATUS ってシェル変数があるよ。 $ true | false | exit 3 | true $ echo ${PIPESTATUS[@]} 0 1 3 0
256 名前:デフォルトの名無しさん [2006/02/19(日) 05:53:58 ] ファイルの更新日時を取得する方法を教えてください
257 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 12:04:08 ] >>256 stat でもSunとかHPとかないOSもあるかも。
258 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 13:39:39 ] >>256 つ[`ls -l`]
259 名前:デフォルトの名無しさん [2006/02/25(土) 01:29:18 ] 超初心者な質問で恐縮なのですが、、 *.jpgと*.JPGのファイルを判断して *-new.JPGのように名前を変更するには どのようにしたら良いでしょうか? お知恵をお貸しください。 よろしくお願いします。
260 名前:デフォルトの名無しさん mailto:sage [2006/02/25(土) 01:53:34 ] ls *.jpg|sed -e 's/\(.*\).jpg/mv \1.jpg \1-new.JPG/' > /tmp/foo とでもして、 source /tmp/foo でどう?
261 名前:デフォルトの名無しさん mailto:sage [2006/02/25(土) 02:50:31 ] bash + find ならこんな感じ? find . -regex '.*\.\(jpg\|JPG\)' |while read i; do mv "$i" "${i%.*}-new.JPG"; done
262 名前:デフォルトの名無しさん [2006/03/14(火) 17:51:21 ] @@@
263 名前:デフォルトの名無しさん mailto:sage [2006/03/14(火) 18:29:29 ] 【積年の】旦那にしてる密かな仕返し【恨みじゃー】 human5.2ch.net/test/read.cgi/ms/1141694640/ 8 名前:可愛い奥様[] 投稿日:2006/03/07(火) 11:05:23 ID:8dtluKkp 夫の歯ブラシで洗面所の排水溝掃除。 洗面所をビショビショに汚した罰だ。 20 名前:可愛い奥様[age] 投稿日:2006/03/08(水) 00:40:17 ID:pRrk6A21 前に頭きた時あって 1度だけ歯ブラシで肛門カキカキしちゃった 22 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:27:12 ID:gU5mHc7J よかった。どこのお宅も同じようなことしてて。 24 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:36:35 ID:SSSFsTqE そうそう、ヘンなモノはダンナのお皿へ直行だよね。 41 名前:可愛い奥様[] 投稿日:2006/03/08(水) 11:55:18 ID:sjj+/60Q 見てるだけで気が晴れるな! 皆さん、頑張ってね! 42 名前:可愛い奥様[sage] 投稿日:2006/03/08(水) 20:33:51 ID:Ju2N1s7+ 年金分割が楽しみじゃのう 63 名前:可愛い奥様[] 投稿日:2006/03/10(金) 08:55:20 ID:qLfJYpJR 家族で密かにはぶっている。 男性は肉体が汚く、精神が美しい傾向がある。(気に入らない相手に肉体的攻撃を加える⇒精神的攻撃も加える男は猛者) 女は肉体が美しく、精神が汚い傾向がある。(気に入らない相手に精神的攻撃を加える⇒肉体的攻撃も加える女は猛者) 女は隠れて悪事をする。気に入らない女子を便所でボコったり、便器舐めさせたり、男の友人を使ってレイプ、仲間外れにしたり。陰口、嫉妬。 女は対人関係において、この汚い性格を隠そうとするため、外面が非常によくなる。(猫かぶり) 男性諸君は外面に騙されないように気を付けて下さい。
264 名前:デフォルトの名無しさん mailto:sage [2006/03/18(土) 01:37:12 ] ²
265 名前:http://www.vector.co.jp/soft/win95/util/se072729.html mailto:http://msdn2.microsoft.com/ja-jp/library/h2k70f3s.aspx [2006/03/18(土) 20:34:48 ] TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
266 名前:デフォルトの名無しさん [2006/05/30(火) 23:27:37 ] 質問です。Solaris9で、 rsh 192.168.1.1 su - user -c
267 名前:デフォルトの名無しさん [2006/05/30(火) 23:30:23 ] 質問です。Solaris9で、 rsh 192.168.1.1 su - user -c "ls -l" みたいな事やりたいんですけど、 "ls -l"のオプション部分が有効になりません。 なんとかならないでしょうか?
268 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 03:19:58 ] >>267 リモートで実行するコマンドをまとめて括れ rsh 192.168.1.1 'su - user -c "ls -l"'
269 名前:デフォルトの名無しさん [2006/05/31(水) 11:10:05 ] 初歩的ですみませんがファイルのreadで質問があります 以下のreadの仕方では最終行にリターンコードがないと 最終行を読んでくれません。※リターンコードがあればreadしてくれますが・・・。 読む方法はないでしょうか cat /aaa.txt | while read FILE do echo $FILE done aaa.txtの内容(この例だとghiを読み込まない) abc def ghi
270 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 11:43:23 ] >>269 catじゃなくて、必ず改行するタイプのフィルターに通せばいい。 例えば、awk '{print;}'でもいける。
271 名前:デフォルトの名無しさん [2006/06/09(金) 13:30:25 ] 〜日前のファイルを削除するようなスクリプトを作成したいのですが どのような感じになりますか?
272 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 13:34:39 ] >>271 findではいけない理由があるのかね。 取り敢えず、1日(24時間)以上前のファイルを無条件に削除するならこんな感じ。 find . -mtime +1 -exec rm {} \;
273 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 14:18:24 ] ctimeじゃないのか
274 名前:デフォルトの名無しさん [2006/06/09(金) 23:03:08 ] >>269 それ、最後の行まで普通にでたんだが、OSによるもんなのか 当方HP
275 名前:デフォルトの名無しさん mailto:sage [2006/06/10(土) 08:59:55 ] 何となく本末転倒な対処 perl -wne 'chomp;print $_."\n";' ./aaa.txt | while read FILE do echo $FILE done
276 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 17:01:03 ] こんな感じかなあ。(以下は Linux でシェルは bash 3.00.16 使ってます)。 $ perl -e 'print "abc\ndef\nghi"' >a $ od -c a 0000000 a b c \n d e f \n g h i 0000013 $ cat a | while read s ; do echo "* $s" ; done * abc * def $ ( cat a ; echo '' ) | while read s ; do echo "* $s" ; done * abc * def * ghi $ awk 1 a | while read s ; do echo "* $s" ; done * abc * def * ghi $
277 名前:デフォルトの名無しさん [2006/06/13(火) 11:26:53 ] >>272 数日前のファイルは無条件に削除という認識ではあってるのですが ディレクトリの指定をする場合にはどのようになりますか?
278 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 12:03:13 ] >>277 man で調べりゃいいじゃないか。
279 名前:272:'.'はカレントディレクトリとその配下 mailto:sage [2006/06/13(火) 12:12:52 ] >>277 取り敢えずディレクトリ指定しているんだけどなぁ。
280 名前:デフォルトの名無しさん [2006/06/13(火) 13:19:34 ] >>279 例えば、フォルダを指定した場合(/tmp) find /tmp -mtime +1 -exec rm {} \; 上記で/tmpディレクトリ以下の1日以上経過したファイルの削除が行われる と思って、よろしいのでしょうか?
281 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 14:05:59 ] ttp://www.google.com/search?hl=ja&q=manpage+of+find&lr=lang_ja
282 名前:デフォルトの名無しさん [2006/06/13(火) 14:19:50 ] 「(::´┏┓`:)なんでそんなに英語を使ってやんのが好きなの?」