1 名前:デフォルトの名無しさん [2005/04/04(月) 03:43:03 ] シェルスクリプトに関する質問・回答や議論等を行う相談室スレッド。
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 ] 「(::´┏┓`:)なんでそんなに英語を使ってやんのが好きなの?」
283 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 14:52:23 ] >>280 何が消されるのか不安なら -exec から後ろをなくしてみればいい。
284 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 16:54:29 ] >>280 どうして、マニュアル見て自分で確認せずに聞いて済まそうとするかねえ。 嘘教えられて、重要なファイル消すはめに陥ったらどうするんだよ。
285 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 16:04:58 ] 初歩的なことを一つ教えてください。 bshで関数定義したものを別のシェルで呼び出すことは出来ますか? 出来るとすると呼び出し方はどのようになりますでしょうか。
286 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 17:02:26 ] できます。 関数が入ったファイルfoo.shをbar.shの中で使いたければ、bar.shの中で . ./foo.sh などとすれば普通に呼べます。
287 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 17:06:41 ] なんだ別のシェルって、そういう意味か。 シ ェ ル ス ク リ プ ト っ て 書 け よ。
288 名前:デフォルトの名無しさん mailto:sage [2006/06/14(水) 21:09:56 ] bshスクリプトを/bin/sh以外のシェル、たとえばcshから呼べますか?だったら 「呼べない」が答えですな。というか、そういう質問なのか?
289 名前:285 mailto:sage [2006/06/15(木) 00:14:48 ] bshで書かれたシェルスクリプト内の関数を、 別のbshで書かれたシェルスクリプトで使用することはできますか? ということで・・・(´・ω・`)
290 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 14:19:28 ] while文で一つのリストファイルから呼び出しをかけて、ループさせることは 可能だと思うのですが同じwhile文中で違うリストファイルから呼び出しをかけて 変数として扱うことは可能でしょうか?
291 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 01:05:24 ] リストファイルって? 呼び出しって? かけるって?
292 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 13:18:35 ] >>290 の要求がどうなのかは知らんけど、俺も心当たりある。 ... | while read var; do ...; done っていうパターンあるじゃんか。そうじゃなくて while [ ... ] do if [ ... ]; then read var1 ただしファイルディスクリプタ1(パイプやファイル)から; else read var2 ただしファイルディスクリプタ2(別なパイプやファイル)から; fi done のようなことをやりたいと思うことはあったわ。 俺はexecによるディスクリプタコピーととサブシェルプロセスを組み合わせて やろうとして挫折して、perlに日和った。
293 名前:デフォルトの名無しさん [2006/06/25(日) 02:48:36 ] sudo等でパスワードを求めるプロンプトに expect以外で自動入力する方法はありますか?
294 名前:271 mailto:sage [2006/07/03(月) 10:12:10 ] 教えていただいた通りにやってみたのですがディレクトリを削除しようとします。 find /tmp -mtime +1 -exec rm {} \; ディレクトリ内のファイルのみ削除させる方法はあるのでしょうか? よろしくお願いします。
295 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 10:42:10 ] -type f
296 名前:271 [2006/07/05(水) 10:00:59 ] どうやっても上手く動作しません。 どうやってもエラーが出てしまいます。 エラーの出ない方法があれば、御教示願います。 よろしくお願いします。
297 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 11:18:04 ] >>296 >>295
298 名前:271 mailto:sage [2006/07/05(水) 11:31:26 ] 何度もすみません。 295さんの使い方が良くわかっていませんでした。 -type fとすることでファイルを見るというオプションだったのですね。 これで解決することができました。ありがとうございます。
299 名前:デフォルトの名無しさん [2006/07/06(木) 12:01:34 ] DSCN0001.jpg〜DSCN9999.jpgのファイルを全てtravel2006GW0001.jpg〜travel2006GW9999.jpgに変更したいのですが これを実現するLinuxのシェルスクリプトはどう記述したらいいですか? それと travel2006GW0001.jpg travel2006GW0002.jpg ・ ・ ・ のようにtxtに打ち出すのもお願いします
300 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 13:16:58 ] >>299 マルチ死ね。これだからLinux使いの糞は... (ry
301 名前:デフォルトの名無しさん [2006/07/06(木) 13:23:53 ] もう用済みじゃぼけぇwww
302 名前:デフォルトの名無しさん [2006/07/06(木) 14:08:25 ] >>300 用済みなのは君だけ
303 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 23:21:48 ] >>299 #!/bin/sh echo # | tee foo$$ cd $1 ls DSCN*.jpg | sed -e 's/\(.*\)\([0-9][0-9]*\)\(.*\)/mv \1\2\3 travel2006GW\2\3/' | tee -a foo$$ source foo$$ rm foo$$
304 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 08:21:44 ] >>299 $ for i in `seq -w 1 9999` ; do for> mv DSCN${i}.jpg travel2006GW${i}.jpg for> echo travel2006GW${i}.jpg for> done > list
305 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:49:15 ] >>299 #!/bin/sh for f in DSCN*.jpg do f2=`echo $f | sed 's/DSCN/travel2006GW/'` echo $f2 mv $f $f2 done
306 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 16:41:26 ] >>305 >f2=`echo $f | sed 's/DSCN/travel2006GW/'` f2=${f/DSCN/travel2006GW} でいいんじゃねんか
307 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 18:24:56 ] >>306 ああ、そうだ。bash はそれで行ける。