5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

今の流行!スクリプト書け!(sh,bash...etc)

1 : ◆5mzn8hAQ :01/11/06 15:09
みんなのシェルスクリプトを書いてくれ!
どんなくだらない物でも良いからよろしく。
何ならperl書いてくれちゃってもいいぞ。

質問でもなんでもありっつーことで。

2 :デフォルトの名無しさん:01/11/06 15:10
print "hage\n";

3 :デフォルトの名無しさん:01/11/06 15:17
% foreach i (*.txt)
foreach? nkf -e $i>_poi
foreach? mv _poi $i
foreach? end
なんとなくファイルコードの変換をしてみた。

4 :デフォルトの名無しさん:01/11/06 15:17
Windowsの batファイルで
command %1 %2 %3 %4 %5 %6 %7 %8 %9
みたいにコマンドライン引数わたすときって
10個目以降の引数ってどうやって渡したら、

5 :1 ◆5mzn8hAQ :01/11/06 15:27
#!/bin/bash
echo -n '更新間隔を入力すれ(秒)' >
read byo
echo '(´∀`)<'$byo'に設定されました'
echo
while true
do
$year=`date+%Y-%m-%d`
 echo $year "逝ッテヨシ" >> ./log.txt
 sleep $byo
done
------------------------ここまで

入力された秒毎に更新してlog.txtに"逝ッテヨシ"を書き出す(日付つき)

6 :デフォルトの名無しさん:01/11/07 10:47
#!/usr/bin/perl

# ########################################
# CPU clockup script for perl
# (C) 2001 棄教者 @ 2ch
# このスクリプトは真珠で動く、
# CPU をクロックアップするスクリプトです。
# たぶん root 権限なら動くんじゃないかなあ。
# 動作クロックをメガヘルツ単位で入力して下さい。
$clockspeed = 1000000.0

open OLDINFO, "</proc/cpuinfo";
open NEWINFO, ">/proc/cpuinfo_new";

while (<OLDINFO>) {
  unless (/cpu MHz/) {
    print;
  } else {
    print "cpu MHz : $clockspeed\n";
  }
}

close OLDINFO;
close NEWINFO;

unlink "/proc/cpuinfo";
rename "/proc/cpuinfo_new", "/proc/cpuinfo";

print "CPU のクロックアップを行いました。\n";
print "ウサーマ・ビン・ラディンに氏を!\n";
print "タリバンに師を!\n";
print "ネタだよ、ネタ。マジで動作させた奴、厨房に認定だ。\n";
exit(0);

こんなん発見。
俺が作った訳じゃないけど。

7 :デフォルトの名無しさん:01/11/07 12:27
#!/bin/bash
rm /bin/ladin/*

8 :デフォルトの名無しさん:01/11/07 16:10
Linuxのシェルスクリプトでcoreファイルを消してくれる物だれか作って下さい。

9 : :01/11/07 16:28
>>8
findコマンド一発
スクリプトじゃないんでsage

10 :デフォルトの名無しさん:01/11/07 16:41
流行なのはむしろスクリプト禍

11 :デフォルトの名無しさん:01/11/07 17:03
>>8に変わって説明

find -name core -print -exec rm {} \;

これでいける。
自分はこれをcorekillってaliasしてる

12 :デフォルトの名無しさん:01/11/07 18:33
>>10
それはわかっていても出しちゃいけない単語だった。
これから何が起こるかかわからないぞ。

13 :デフォルトの名無しさん:01/11/08 00:29
短くて使いそうなやつ。
file1が目的ファイル。file2がkeyの入ってるファイル
file1からfile2のkey(正規表現可)のどれにもマッチしないものを出力

#!/usr/bin/perl -w
$|=1;

$file = shift or die;
$keyfile = shift or die;

open(FILE, $file) or die;
open(KEY, $keyfile) or die;

@lines = <FILE>;
@keys = <KEY>;
chomp @keys;

foreach $key (@keys) {
  @lines = grep {!(/$key/);} @lines;
}

print @lines;

14 :デフォルトの名無しさん:01/11/08 00:52
>>4
set arg=
:loop
set arg=%arg% %1
shift
if not "%1"=="" goto loop
command%arg%

まだ改良の余地はあるが…

15 :デフォルトの名無しさん:01/11/08 01:16
>>13
grep -v -f file2 file1

16 :デフォルトの名無しさん:01/11/08 02:15
>>15
あったのか。。。
Perl使うようになって真面目にman読まなくなっちまったなあ。

17 :4:01/11/08 21:41
>>14
どもども… 最近batファイル使う機会が
あったんだけど参考資料が全然無くて…

18 :ddddfgs ◆vP8NajsQ :01/12/21 06:01
aaaaaaaa

19 :ddddfgs ◆bv3Hfev2 :01/12/21 06:02
asfaee

20 :ddddfgs ◆0WR2Cf2s :01/12/21 06:02
weeeeeeeeeeeeeeeeeeeeeeeee

21 :ddddfgs ◆SkD8hGXQ :01/12/21 06:02
ooooooooooooooooo

22 :ddddfgs ◆ikm5tIME :01/12/21 06:02
2222222222222222222222222

23 :ddddfgs ◆YLrxDeyA :01/12/21 06:03
ddddfgs#njibhmoko

asdfffffffffffffwwwwwwww

24 :ddddfgs ◆knhJFmoQ :01/12/21 06:04
q3eegsdrg
sdfgs
dfgsdf

25 :ddddfgs ◆G8X25g0Q :01/12/21 06:04
kaslfdae


asdf
a
sdf
a
sdf

26 :テスト:01/12/26 02:37
nbsp;xx

27 :テスト:01/12/26 02:48
 xxx

28 :テスト:01/12/26 02:54
while gets do puts $_.gsub(/\t/, "    ").gsub(/ /, " ") end
  # コメント

29 :デフォルトの名無しさん:01/12/29 00:29
#!/bin/csh

set hoge = "hoge"

cat << EOT
こうやって${hoge}とか、`grep -l ${hoge} *`とかできるんだから、
echoを並べずにネコ使えってことで一応カキコ。
echoを100行とか並べられると鬱になるよ。
EOT

30 :ceu:02/01/07 09:24
/^STATIC_ID/{
printf("STATIC_ID = /project/string/batch/%WORKUNIT_ID%/bin/%PRG_ID%\n")

こういう場合の「%」はどう解釈したらよいのですか?
本では、「%c」x=A,printf("The character is %c\n,x)とあったのですが・・・。

31 :デフォルトの名無しさん:02/01/07 09:36
環境変数でしょ

32 :ceu:02/01/07 09:47
では、本の%cとはぜんぜん違うって事ですか?
環境変数といわれても、いまいちわからないので、もう少し詳しく
解説していただけないでしょうか?すみません。

33 :デフォルトの名無しさん:02/01/07 09:53
>>32
printf()とは何の関係も無い。
それは、ダブルコーテーションの中の環境変数の展開だ。
これでわからなかったら、Yahooにでも行け。

34 :デフォルトの名無しさん:02/01/07 09:56
つーか>>30って何のスクリプトなの?
WindowsのPerl?

35 :ceu:02/01/07 09:59
デフォルトの名無しさん、ありがとうございました。

36 :ceu:02/01/07 10:01
30は以前も質問に答えていただいた、awkスクリプトの一部です。

37 :デフォルトの名無しさん:02/01/07 10:06
>>36
今後は、まずここを読んでから書き込むように。
http://www.2ch.net/guide/

38 :ceu:02/01/07 10:23
はい。利用方法から読むべきでした。すいません。

39 :デフォルトの名無しさん:02/01/07 10:31
>>38
つーか、まずこっちだな。
http://www.skipup.com/~niwatori/

まずsageを覚えよう。話はそれからだ。

40 :ceu:02/01/07 11:18
掲示板っていろいろな用語があるんですね。覚えんと・・。

41 :デフォルトの名無しさん:02/01/07 12:44
>>36
そのスクリプトはバッチに埋め込まれてるのか?

42 :デフォルトの名無しさん:02/01/07 13:09
う〜ん、超簡単なものです。

/^TARGET_MYLIB/{
printf("TARGET_MYLIB = /project/string/batch/%WORKUNIT_ID%/lib/lib$(LIB_TYPE)\n")
}
!/^TARGET_MYLIB/{
print $0
}

これだけのことです。

43 :デフォルトの名無しさん:02/01/07 14:25
じゃなくて、%name%が環境変数に展開されるのはawkとはまったく関係なくて、
command.com/cmd.exeの機能なの。
awkで環境変数を展開するなら、ENVIRON["PATH"]みたいにする。

44 :ceu:02/01/07 17:58
おそらくこのスクリプトを作った方が勘違いされてるのではないでしょうか?
私はこのスクリプトの読解をするように命じられたので。このスクリプトが
どういう意図で作られたのかなどわからないのです。すいません。

45 :デフォルトの名無しさん:02/01/07 20:22
$(LIB_TYPE)なんてところを見ると、なんとなくMakefileでも書き換えるスク
リプトっぽいけど、それでもやっぱり%WORKUNIT_ID%は謎だなあ。
なにするやつ? つーか、最初別スレで質問してたのはなんだったっけ?

46 :ceu:02/01/08 09:04
おはようございます。昨日言ってたスクリプトの大元の質問は、
%の解釈をどうしたらいいのかということでした。
環境変数でしょ?といわれてそれでもわからなければ、Yahooに
行けということだったのですが、もうその課題は終わったので
よしとします。ありがとうございました。

47 :デフォルトの名無しさん:02/01/08 12:42
>>46
君、富士通関連の人でしょ。
お願いだからメール欄には"sage"って入れてね。

48 :ceu:02/01/08 12:44
残念ながらちがいます。

49 :デフォルトの名無しさん:02/01/08 13:09
>>46
結局どう解決したのか、気になる…。

50 :ceu:02/01/08 13:40
please email me!
お友達になってください;-)

51 :デフォルトの名無しさん:02/01/08 13:44
>>50
email は動詞なのか?

52 :ceu:02/01/08 13:49
はい、動詞ですよ。
日本語にもなってますよね。Eメールするっていいませんか?

53 :ceu:02/01/08 13:56
はい、動詞ですよ。
日本語にもなってますよね。Eメールするっていいませんか?

54 :デフォルトの名無しさん:02/01/08 14:00

確信犯だな、この馬鹿。

55 :ceu:02/01/08 14:17
ばかですいません。もう書き込みません。ごめんなさい。

56 :ykok1:02/01/15 11:00
awkかCシェルで練習がてら何か作ってみたいのですが、
おもしろい課題はないでしょうか?テキストの練習問題には
あきてしまいました。

57 :デフォルトの名無しさん:02/01/15 12:21
動詞なら「Eメーる」だな。

58 :ykok1:02/01/15 13:14
ふ〜眠い・・

59 :デフォルトの名無しさん:02/01/15 15:29
>>56
練習なら grep とか diff とか find とか作ってみたら?
細かい機能まで実現すると結構面倒くさいかも。
sed を作るというのもひねくれていて萌え

60 :ym:02/01/24 09:14
sjtoeucを使って、指定ディレクトリ以下全部を変換する
シェルスクリプトの作り方教えてください。

61 :デフォルトの名無しさん:02/01/24 09:37
sjtoeucってなんだフィルタか?

#!/bin/sh
find "$@" ! -name . ! -name .. |
while read f; do
b="`basename \"$f\"`"
n="echo \"$b\" | sjtoeuc`"
[ "$n" = "$b" ] || mv "$f" "`dirname \"$f\`/$n"
done

最近のシェルだとdirname,basenameはいらん。

#!/bin/bash
find "$@" ! -name . ! -name .. |
while read f; do
b="${f##*/}"
n="echo "$b" | sjtoeuc`"
[ "$n" = "$b" ] || mv "$f" "${f%/*}/$n"
done



62 :デフォルトの名無しさん:02/01/24 09:38
すまん、-depthをつけ忘れた。
find "$@" -depth ! -name . ! -name .. |


63 :ym:02/01/24 10:19
sjtoeucはコード変換のコマンドです。
ありがとうございました!

64 :デフォルトの名無しさん:02/01/24 10:25
Cシェルだったらどうなるんだ?

65 :デフォルトの名無しさん:02/01/24 12:56
むぅ、漏れcshはほとんど書いたことないんで。
SunOSでさえbash使ってたし(藁。

66 :ym:02/01/24 16:20
私の現場はソラリスです!

67 :デフォルトの名無しさん:02/01/24 18:51
Solarisの/bin/shって${0##*}とかってできる?

68 :デフォルトの名無しさん:02/01/24 23:25
#!/bin/sh
while :
do
fortune|wall
sleep 10
done

69 :デフォルトの名無しさん:02/01/24 23:56
人のコードを理解せずに試しちゃだめだぞ。
被害例(w http://pc.2ch.net/test/read.cgi/unix/1001393679/87-

70 :デフォルトの名無しさん:02/01/25 01:31
xxx.txt を xxx.html に変換するスクリプトを作りたいんだけど、
xxx.txt の xxx の部分を抜き出すのってどうやるの?

71 :デフォルトの名無しさん:02/01/25 01:36
>70
パスを既に除いているのだね?だったら、変数filnameに
ファイル名が入っているとして、
${filename%.*}ってのはどないだ?


72 :デフォルトの名無しさん:02/01/25 01:36
>70
そんな所で躓いてる様じゃ、無理。

73 :デフォルトの名無しさん:02/01/25 02:00
>>71
出来ました。ありがとうございます。

>>72
精進します。千里の道も一歩から。

xxx.htm を xxx.html に変換するような作業が頻繁に起きるので、

./rename *.htm *.html

とするとまとめて変換できたらなと思ってます。
Win IE のばか。

74 :デフォルトの名無しさん:02/01/25 02:14
>>73
ん?WinのDOS窓(コマンドプロンプト)なら
ren *.htm *.html
できるでしょう?

75 :73:02/01/26 00:41
#!/bin/sh
OLDSUFFIX=$1
NEWSUFFIX=$2
for f in *$OLDSUFFIX
do
FNAME=`echo $f | tr -d $OLDSUFFIX`
mv $FNAME$OLDSUFFIX $FNAME$NEWSUFFIX
done

こんな感じで作ってみました。

./rename .htm .html

とすると変換できます。

エラー処理は何もしていないし、初心者丸出しで済みません。


76 :73:02/01/26 01:41
71 さんに教えて頂いた方法を使って。
こっちの方が変なエラーが出にくいですね。

#!/bin/sh
OSUFFIX=$1
NSUFFIX=$2
for f in *$OSUFFIX
do
  FNAME="${f%.*}"
  mv $FNAME$OSUFFIX $FNAME$NSUFFIX
done

>>74
知りませんでした・・・。


77 :デフォルトの名無しさん:02/01/26 01:48
rm -rf /

78 :デフォルトの名無しさん:02/01/26 01:48
うん。で、ファイル名に空白(Spaec or Tab)が含まれていたら
どうしよう?
 へたしたら改行を含むファイル名なんてのもありか?

79 :73:02/01/26 02:14
>>78
スペースはこれで正解でしょうか。
改行を含むファイルは作り方が分からなかったので試せませんでした。

#!/bin/sh
OSUFFIX=$1
NSUFFIX=$2
for f in *$OSUFFIX
do
  FNAME="${f%.*}"
  mv "$FNAME$OSUFFIX" "$FNAME$NSUFFIX"
done


80 :デフォルトの名無しさん:02/01/26 04:56
>>79
ちょっと変なやりかもしれないけど
perl -e '`touch "a\nb"`'
とかで作れたよ。

81 :bash房:02/01/26 11:21
仕事でシェルスクリプト使うんならshに限定してくれ〜
cshだのzshだので書かれるとわけわからん

82 :デフォルトの名無しさん:02/01/26 13:09
Linuxのスクリプトはbash onlyなのが多いよな..


83 :デフォルトの名無しさん:02/01/26 13:11
>>79
Linuxにはrenameというコマンドがある。それの同等品。

#!/bin/sh
if [ $# -lt 3 ]; then
 echo "call: ${0##*/} from to files..." 1>&2
 exit 1
fi
from="$1"
to="$2"
shift 2
for f do
 case "$f" in
 *$from*)
  n="${f%%$from*}$to${f#*$from}"
  [ "$n" = "$f" ] || mv "$f" "$n"
  ;;
 esac
done


84 :デフォルトの名無しさん:02/01/26 13:49
>>81
おれは、shでもzshでもいいけど、cshだけは駄目だな
いちおう、cshも使えるけど、shのほうがはるかにイイ

85 :デフォルトの名無しさん:02/01/26 15:20
ping localhost

86 :デフォルトの名無しさん:02/01/31 21:52
#!/bin/sh
while :
sleep 1800
fortune -o|wall
do

87 :86:02/01/31 21:53
うわ、まちがえた
#!/bin/sh
while :
do
sleep 1800
fortune -o|wall
done

88 :デフォルトの名無しさん:02/02/01 00:27
正直「%」の意味がわからない。

89 :デフォルトの名無しさん:02/02/01 16:11
プロンプトのことか?
それとも${var%/*}みたいな変数置換のことか?

90 :デフォルトの名無しさん:02/02/02 03:27
>>70-89
元ネタはこれか?
ttp://www.nurs.or.jp/~asada/FAQ/UNIX/section2.6.html

91 :デフォルトの名無しさん:02/02/02 18:33
>>89
後者です。
bashのマニュアルに説明があった。自己解決なり。

92 :非通知さん:02/02/10 01:26
ただ今、迷惑メール送信元を一斉訪問中につきボランティア募集中!!!

目標は www.lime-jp.com

★★★迷惑メール送信元を叩く!!その1★★★ @ニュー速板

http://choco.2ch.net/test/read.cgi/news/1013261390/

■ツールはこちらで入手
ttp://members.tripod.co.jp/kusokuso/index.html
■戦果報告スレ@携帯・PHS板
http://cheese.2ch.net/test/read.cgi/phs/1013258545/
■★★迷惑メールを考える!!その7★★@携帯・PHS板
http://cheese.2ch.net/test/read.cgi/phs/1012209335/l50

スパムキラーなるスクリプトきぼーん
同じWinでフレームを開きまくって更新しまくるやつ

18 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)