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

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

便利なシェルスクリプト見せろ

1 :名無しさん@お腹いっぱい。:2001/08/05(日) 03:25
~/bin/navi2ch

#!/bin/sh
emacs -e navi2ch

2 :名無しさん@お腹いっぱい。:2001/08/05(日) 03:29
exit 1

3 :名無しさん@お腹いっぱい。:2001/08/05(日) 03:35
その程度ならエイリアスだろ、ふつー。まあ、とりあえず
% file {,/usr{,/local}}/{,s}bin/* | grep shell
の結果でも眺めてみろや。

4 :名無しさん@お腹いっぱい。:2001/08/05(日) 03:40
echo '1逝ってよし'

5 :ウドの大木:2001/08/05(日) 04:39
#!/bin/bash

echo $SHLVL
if [ $SHLVL -lt 256 ]; then $0; fi

6 :名無しさん@お腹いっぱい。:2001/08/05(日) 05:35
ん〜、個人的に便利に使ってるやつだけど…。

あるファイルを編集したいとき、
 % editfile hoge
とすれば、hoge から始まる行に移動した状態でエディタが起動する。
hoge から始まる行がなければ普通にエディタが起動する。

 #!/bin/csh -f
 set file="filename"
 set line=`grep -n ^$argv $file | head -n 1 | perl -ne 'm/^\d+/;print "$&\n"'`
 if ( "$line" == "" ) then
  set line=1
 endif
 mule -nw +$line $file

なぜ perl なぞを噛ませたのかは忘れた。

7 :6:2001/08/05(日) 05:43
こういうのはどだ。~/bin/beep。
 #!/bin/csh -f
 xset b
 printf '\a'
 xset -b

make 終了を知らせる make ; beep とか、
ラブレター到着が待ち遠しい時は
 while (1){
  set mailsize=`ls -l /var/mail/$USER | awk '{print $5}'`
  if ( $oldmalisize != $mailsize ){
   beep
  endif
  set oldmailsize=$mailsize
  sleep 1
 end
とかよく使うかな。

8 :mu-mu:2001/08/05(日) 05:45
perlかますくらいなら全部perlで書いたほうが…
オイラが便利に使ってるのは、下のスクリプト。
asciiって名前で実行するとasciiダンプ。
そのまま書いてみたけど、掲示板cgiで
なんか変換されちゃいそうだな。

:
echo "\
00 01 02 03 04 05 06 07"'
00 000 nul soh stx etx eot enq ack bel
08 010 bs ht nl vt np cr so si
10 020 dle dc1 dc2 dc3 dc4 nak syn etb
18 030 can em sub esc fs gs rs us
20 040 sp ! " # $ % & '"'"'
28 050 ( ) * + , - . /
30 060 0 1 2 3 4 5 6 7
38 070 8 9 : ; < = > ?
40 100 @ A B C D E F G
48 110 H I J K L M N O
50 120 P Q R S T U V W
58 130 X Y Z [ \ ] ^ _
60 140 ` a b c d e f g
68 150 h i j k l m n o
70 160 p q r s t u v w
78 170 x y z { | } ~ del'

9 :6:2001/08/05(日) 05:56
>>8
> perlかますくらいなら全部perlで書いたほうが…

まぁ、あくまで個人用スクリプトだし、その時楽になればよい
という観点で作ったものだから、再利用性とか汎用性とか
エラーチェックとか、なんで csh なんだゴルア とか突っ込まないでね。例えば >>6 のやつなんて、原型は5年前に作ったんだし。
# 大学2年かぁ…。歳とったなぁ。

10 :名無しさん@お腹いっぱい。:2001/08/05(日) 06:26
bzip2非対応のtarをbzip2対応に変えるスクリプト書いて学校で使って
いる。新しいtar入れりゃ済むんだが、ファイルを消せない性格で、
quota overが迫っているもので。
そんなもんをシェルスクリプトで書くってのがドキュン丸出しだが。

11 :名無しさん@お腹いっぱい。:2001/08/05(日) 08:06
gomi hogeでごみ箱~/trashに移動してくれるの書いて。

12 :名無しさん@お腹いっぱい。:2001/08/05(日) 08:35
>>11
フルパスを覚えておいて、戻したいときには然るべき場所に
自動的に戻してくれる、というような機能を想定しているわけ?
もしそうだとしたらPerlか何か使わないと厳しいのでは?

13 :名無しさん@お腹いっぱい。:2001/08/05(日) 09:36
>>12
perl使って。

14 :名有りさん@お腹へった:2001/08/05(日) 10:00
>>11-12
-[gomi]---------------------------------
#!/bin/sh

if [ $# -ne 1 ]; then
  echo "Usage: $0 file"
  exit 1
fi

if [ ! -d $HOME/trash ]; then
  /bin/mkdir $HOME/trash
fi

id=`/bin/date +'%Y%m&d%H%M%S'`.$$

if /bin/mv $1 $HOME/trash/$id; then
  /bin/ln -s $1 $HOME/trash/${id}~
fi
--[ungomi]------------------------------
#!/bin/sh

if [ $# -ne 1 ]; then
  echo "Usage: $0 id"
  exit 1
fi

if /bin/cp -p $HOME/trash/$1 $HOME/trash/${1}~; then
  /bin/rm $HOME/trash/$1 $HOME/trash/${1}~
fi
----------------------------------------

15 :名無しさん@お腹いっぱい。:2001/08/05(日) 10:03
14マンセー

16 :14:2001/08/05(日) 10:06
訂正
--- gomi.old Sun Aug 5 10:03:08 2001
+++ gomi   Sun Aug 5 10:03:30 2001
@@ -9,7 +9,7 @@
  /bin/mkdir $HOME/trash
fi

-id=`/bin/date +'%Y%m&d%H%M%S'`.$$
+id=`/bin/date +'%Y%m%d%H%M%S'`.$$

if /bin/mv $1 $HOME/trash/$id; then
  /bin/ln -s $1 $HOME/trash/${id}~

17 :14:2001/08/05(日) 10:29
つうか細かい部分では結構ボロがでそうだな
もっと改良しないと
gomiで$1が相対パスで指定された時の対策とか
$1がディレクトリだった時のungomiの処理方法とか......

18 :名無しさん@お腹いっぱい。:2001/08/05(日) 10:32
頑張れ

19 :14:2001/08/05(日) 11:20
とりあえずこんな感じか......
いや 実のところ自分でも十分に動作確認してるわけでもないんで

--[gomi]--------------------------------
#!/bin/sh

if [ $# -ne 1 ]; then
  echo "Usage: $0 file"
  exit 1
fi

if [ ! -d $HOME/trash ]; then
  /bin/rm -fr $HOME/trash
  /bin/mkdir $HOME/trash
fi

id=`/bin/date +'%Y%m%d%H%M%S'`.$$

if echo $1 | /bin/grep '^/' >/dev/null; then
  file=$1
else
  file=`/bin/pwd`/$1
fi

/bin/mv $file $HOME/trash/$id && /bin/ln -s $file $HOME/trash/${id}~
--[ungomi]------------------------------
#!/bin/sh

if [ $# -ne 1 ]; then
  echo "Usage: $0 id"
  exit 1
fi

if [ ! -h $HOME/trash/${1}~ ]; then
  echo "$0: $1: Bad id."
  exit 1
fi

symlink=`/bin/ls -l $HOME/trash/${1}~ | /bin/sed 's/^.* -> //'`

/bin/mv $HOME/trash/$1 $symlink && /bin/rm $HOME/trash/${1}~
----------------------------------------

20 :3ch.sh:2001/08/07(火) 18:16
こっちの方が良かろう


100 名前:2ch.sh 投稿日:2001/08/07(火) 13:02

2ch流のサーバー監視スクリプトやらを組まないか?
で、オープンソースにしてばら撒く。

形式はどしよか?
Bash、Perl、AWK程度にしますか?
TK入れてXで動くようにしても良いけど(w

スレが違うなら誰か立ててくれー
2ちゃんねらーのディープさを
この業界に広めたい(嘘30%)

21 :名無しさん@お腹いっぱい。:2001/08/07(火) 19:47
>>8
man ascii

22 :名無しさん@お腹いっぱい。:2001/08/07(火) 23:17
>>20
具体的にどんなことがしたいんだ?
tail -fとかじゃダメなのか?

23 :22:2001/08/07(火) 23:18
tail -fはどっちかというとログ監視か‥
サーバー監視ってなによ

24 :やめられない@名無しさん:2001/08/07(火) 23:24
んーおいらなら

pingする帰ってきた 何もしない
pingする帰ってこない メールする
ポート80見る GETできれば なにもしない
ポート80見る 帰ってこなければ メールする

ってできればいいな。
つーか、大昔そんなスレッドがあったような気がするぞグルァ!
簡単にbashで組まれてて出てた
探してみるぞぬぬぬ

25 :名無しさん@お腹いっぱい。:2001/08/08(水) 10:28
>>20
monとかCheckserviceでいいよ。

http://www.kernel.org/software/mon/
http://www.linvision.com/checkservice/

26 : 無党派さん:2001/08/08(水) 12:46
for Netscape.

・bookmark_grep
egrep "$1" $HOME/.netscape*/bookmarks.html | perl -ne '/>[^"]*"([^"]*)".*>(.*)<\/A>/; print $2 . "\n" . "\t" . $1 . "\n"' | \nkf -j
・history_grep
history-db-list ~/.netscape/history.dat | egrep "$1" | sort | awk ' { print $1; $1 = ""; print " " $0 }'

27 :20:2001/08/08(水) 15:12
そ、そんなソフトがあるとは。。。
修行に逝ってきます

ありがとでした

28 :やめられない@名無しさん:01/09/04 02:15 ID:MJnYVYrk
保守上げ!

29 :名無しさん@お腹いっぱい。:01/09/04 04:24 ID:mfvfQ12o
zlessを
#!/bin/sh
PAGER=${TRUEPAGER-less}
export PAGER
PATH="/usr/bin:$PATH"
export PATH
exec zmore ${1+"$@"}
みたいに書き換えておいて、PAGERをzlessにする。
さらに、ncftpのpageコマンドを、asciiモード転送でなく
binaryモード転送を使うように改造。
これでls-lR.gzみたいなのが直に読める。

30 :名無しさん@お腹いっぱい。:01/09/04 13:15 ID:HXo55Ajg
#!/bin/sh
shutdown -h now

31 :名無しさん@お腹いっぱい。:01/09/04 17:55 ID:n8fBmkdQ
>>30
ちょっと違うけど、sudo を打つのが面倒いので

#!/bin/sh
sudo shutdown -hp now

てのが ${HOME}/bin にある

32 :名無しさん@お腹いっぱい。:01/09/04 20:20 ID:mfvfQ12o
なんでaliasにしないんだ?

33 :vineのshutdownだが:01/09/04 21:37 ID:ckVTCj9c
#!/bin/sh
# Try to do the right thing for programs that rely on "/usr/bin/shutdown -r now"
# to shut down the machine.
prog=/sbin/shutdown
now=
for flag in $* ; do
if test ${flag} = "-h" ; then
prog=/usr/bin/halt
elif test ${flag} = "-p" ; then
prog="/usr/bin/halt -p "
elif test ${flag} = "-r" ; then
prog=/usr/bin/reboot
elif test ${flag} = "now" ; then
now=$flag
else
args="$args $flag"
fi
done
if [ -z "$args" -a "$prog" != /sbin/shutdown ] ; then
exec $prog $args
else
exec /sbin/shutdown $args $now
fi

普段rootでしか使ってなかったがsudoして無いみたいだな

34 :名無しさん@Emacs:01/09/04 23:40 ID:G4MrZYUw
rpm -ql usermode

35 :名無しさん@お腹へった:01/09/04 23:40 ID:vCt3z.P.
イメージファイルのindex HTMLを作るスクリプト。
なぜsort -uを入れたのかは忘れた。

#!/bin/sh
#
# 1997/04/04
#
if [ "$1" = "" -o "$1" = "-h" ]; then
echo "usage : mkgifindex {gif | jpg | etc..}"
fi

WK=/tmp/tmp_mkgifindex$$
HTML=index_img.html
if [ -f $HTML ]; then
rm $HTML
fi

ls *$1 |sort -u > $WK
echo '<html>' >> $HTML
echo "<head><title>`pwd`</title></head>" >> $HTML
echo '<body bgcolor="#ffffff">' >> $HTML
while read LINE
do
echo -n '<img src="' >> $HTML
echo -n "$LINE" >> $HTML
echo -n '">' >> $HTML
echo -n "$LINE" >> $HTML
echo "<hr>" >> $HTML
done < $WK
echo '</body>' >> $HTML
echo '</html>' >> $HTML
rm $WK

36 :名無しさん@お腹いっぱい。:01/09/05 02:04 ID:diCXJs66
即席で改良してみたが。
case "$1" in
""|-h) echo "usage : mkgifindex {gif | jpg | etc..}" ;;
esac

: ${HTML=index_img.html}

(
echo '<html>'
echo "<head><title>`pwd`</title></head>"
echo '<body bgcolor="#ffffff">'
for IMGFILE in *.$1; do
test -f "$imgfile" && echo "<img src=\"$IMGFILE\">$IMGFILE<hr>"
done
echo '</body>'
echo '</html>'
) >$HTML

つーか、拡張子を引数にするなよ。
漏れだったら
for IMGFILE in "$@"; do
...
done
にしておいて*.jpg *.gifみたいに引数取れるようにするけど。

37 :名無しさん@お腹へった。:01/09/05 12:20 ID:oR7193YM
>>36
まあ、好きにしてくれ。

38 :犬板より:01/09/06 03:14 ID:Nj3IkjKI
ユーザーの追加をしたいのだけど

IDとPassをわけてCSVで出力した

hoge01,Kx08xxva
hoge02,JJxoi012
.
.
.

のような形式をうまく追加するにはどーでしょか・・・

39 :名無しさん@お腹いっぱい。:01/09/06 05:34 ID:D4C3ku2I
echo "$user,`crypt $Pass`"

40 :名無しさん@お腹いっぱい。:01/09/06 05:35 ID:D4C3ku2I
をっと、
echo "$user,`crypt $Pass`">>data
だった。

41 : 無党派さん:01/09/06 12:24 ID:Thleg3XY
>>38
OSは?
adduser/useraddのようなものがあれば、uidの生成は任せて、
passwordの変更はcrypt + vipw + ed script、が簡単と思うけど。

42 :くらげ:01/09/06 15:02 ID:8.5qPxag
awkなら

BEGIN{
FS = ","
}
{
print "useradd -d /home/"$1" -m -g 100 -s /bin/bash "$1
}


awk -f adduser.awk list.txt | /bin/sh

だな
list.txtは
user,uhdf53907
って感じで
ID1,Pass1
ID2.Pass2
でやるべし

43 :名無しさん@お腹いっぱい。:01/09/06 15:06 ID:tobfDaa.
>>38
chpasswd ってコマンドない?

44 : しびれ:01/09/06 15:29 ID:Thleg3XY
>>42
-F, って知ってた? 知ってたらスマソ

45 :名無しさん@お腹いっぱい。:01/09/06 16:59 ID:AMZ41FAg
>>38
ずばりそのためのコマンド、newusers(8)を使え。

/etc/passwdと似たフォーマットのファイルを読み込んで、
ユーザを追加することができるよ。UID、GID、$HOMEも指定可能。

46 :くらげ:01/09/06 22:38
>>44
しらないっす

なになに?おせーてぇ〜

47 :やめられない@名無しさん:01/09/06 22:40
JPGをGIFに変換するような
(ついでに縮小化も)
ソフトウェアってないですかねぇ?

シェルで実行させたいんだけど、どーもみつからないので・・・

48 :名無しさん@お腹いっぱい。:01/09/06 22:44
#! /bin/bash
sleep ${1-180}
echo -e "\a"
sleep 1
echo -e "\a"
sleep 1
echo -e "\a"
sleep 1
echo -e "\a"
sleep 1
echo -e "\a"

49 :名無しさん@お腹いっぱい。:01/09/06 22:45
>>47
ImageMagickのconvert、mogrifyコマンド。
フォーマット変換、拡大、縮小、切り抜きなど
お手のもの。

アンチエイリアス、ディザー、モザイクみたいな
画像処理もコマンド一発でできるよ。

50 :47:01/09/06 23:14
>>49
ありがとーん!
やっぱあるのですね
助かりました

51 :マターリ:01/09/11 20:53
保守あげ!

52 : 名無しさん@お腹いっぱい。:01/09/12 02:10
>>50
perlやC++からもlibmagick呼び出せてcool!

53 :はろう:01/09/12 22:59
CSVファイル内からシェルに引数で渡す時
オークで$0〜$9を使うのはしっとりやすが
00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15
15つ目の引数を引っ張りたい時はどうしたらいいでしょうか?

54 :名無しさん@お腹いっぱい。:01/09/12 23:03
あるディレクトリのShiftJISで書かれたファイル名をEUCに変換したいです。
nkfを使ってますがうまくいきません。
ファイル名に日本語使うな、というのは許して下さい。

55 :名無しさん@お腹いっぱい。:01/09/12 23:45
>>53
そのまま $15 でとりだせない?

56 :名無しさん@お腹いっぱい。:01/09/12 23:50
>>54

$ ls file.sjis | nkf -e > name.eucj
$ mv file.sjis `cat name.eucj`

なんてのはどうよ。

57 :名無しさん@Emacs:01/09/13 00:02
SJIS 固定なら -e より -Se の方がいいよ。

for SJIS in `find` ;do
EUC="`echo "$SJIS" | nkf -Se`"
[ -f "$EUC" ] || mv "$SJIS" "$EUC"
done

昔書いたやつだから自信無し。
ぱっと見、ディレクトリに弱そう。

58 :54:01/09/13 03:00
>>56,57
ありがとう。対象としているのはwinでつくったzipファイルから解凍してできたファイルで
ファイル名にスペースも含まれているようで
for SJIS in `find` ;do のところが期待通りに動いてくれません。
スペースが含まれていない場合はうまくいきました。

59 :名無しさん@お腹いっぱい。:01/09/13 08:51
find -type f|{
while read SJIS; do
...
done
}
$B$G=PMh$J$$(B?

60 :はろう:01/09/13 13:26
55へ $15で取り出せませんのでこまっとります。
$0〜$9までしか使えないのかな

61 :ほい:01/09/13 13:51
shift

62 :名無しさん@お腹いっぱい。:01/09/13 13:57
>>60
${15}
じゃだめ?

63 :ほい:01/09/13 14:03
>60
shiftつかえ。$0〜$9しかつかえない。
$10は${1}0戸解釈される。
ちょと検索したらたくさんヒットしたぞ。
http://www.netfort.gr.jp/~tomokuni/lms/shell/shell.txt

64 :はろう:01/09/13 15:12
レスありがとうございます。
awk'{print $15}'だと無理なんですが
awk'{print $5,$15}'だとうまくいくんです。
単独でとれないんですか?
${15}は知ってますがうまくいかないんす;;
63さんのHPいけなかったす;;

65 :名無しさん@お腹いっぱい。:01/09/13 15:19
>>63
> http://www.netfort.gr.jp/~tomokuni/lms/shell/shell.txt

すげぇ。これはすげぇ。

66 :ほい:01/09/13 15:41
httpがわざと全角にしてあったりする。
awkは別物。

67 :名無しさん@お腹いっぱい。:01/09/13 15:52
>>64
とれるだろ。とれないって具体的にどうなってんの?エラーが出るとか?

68 : 名無しさん@お腹いっぱい:01/09/13 17:09
$ echo -1-,-2-,-3-,-4-,-5-,-6-,-7-,-8-,-9-,-10-,-11-,-12-,-13-,-14-,-15-,-16-,-17-,-18-,-19-,20 | awk -F, '{ print $15 }'
-15-
GNU awkでもnawkでもこうなるが?

69 :ほい:01/09/13 17:35
>>68
そりゃそうなるでしょ。
-1-,-2-,-3-,-4-,-5-,-6-,-7-,-8-,-9-,-10-,-11-,-12-,-13-,-14-,-15-,-16-,-17-,-18-,-19-,20
という一行をデータとしてawkに渡して、その一行をawkが処理してるんだから。
しぇるの$1,$2とかは関係してない。

しぇるとおうくの変数が、たまたま、$1とか同じかたちをしているけど別言語。
shiftを調べんか。ゴルァ

70 :ほい:01/09/13 17:40
すまそ。俺が馬鹿だ。ぼけてた。

71 :ほい:01/09/13 17:51
シェルの話とおもてた。(冷や汗
今までの話を全部忘れてくんなまし。
で、$15とかもできるはずた。

72 : 68:01/09/13 18:00
つーか、

>>53
> CSVファイル内からシェルに引数で渡す時
> オークで$0〜$9を使うのはしっとりやすが
> 00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15
> 15つ目の引数を引っ張りたい時はどうしたらいいでしょうか?

この文書の意味が分かりにくい。一行目謎。
俺もどちらの話か、どころか何の話なのか分からなくなってきた…

73 :名無しさん@お腹いっぱい。:01/09/13 18:05
>>71
>>53の書き方も分かりづらい。
それにうまくいかないってことはシェルとの関係でまずいとこがありそ。

74 :名無しさん@お腹いっぱい。:01/09/13 18:06
「しっとりやす」もわかりづらい。

しっとり安。
すとっぷ高。

75 :名無しさん@お腹いっぱい。:01/09/13 18:27
具体的にうまくいかない例を書こう。

76 :名無しさん@お腹いっぱい。:01/09/13 20:58
""でかこってそうだな。

77 :名無しさん@Emacs:01/09/13 23:36
>>58

for SJIS in "$@" ;do でパラメタで渡す分にはいけると思う。
量が多かったらやっぱ find つかって
find -type f -exec スクリプト名 {} \; とかしてくれ。
ディレクトリは `find -type d|sort -r` を渡すとか。

78 :はろう:01/09/14 09:41
わかりにくかったようですみません
再度説明させてもらうと
00,01,〜,14,15
99,98,〜,91,90
というような内容のCSVファイルから
15つめのレコードを引っ張りたいんです
awk'{print $5,","$15}'< a.csv > b.csv だと二つともうまくひっぱってくれますが
awk'{print $15}'< a.csv > b.csv だとひっぱってくれないんです。
なぜでしょうか?

79 :名無しさん@XEmacs:01/09/14 10:13
半分、教えて君なんですが、ディレクトリ内のファイル数を数え上げるのに、

$ for ff in '.'; do
>i=0
>for f in `ls *.el`; do
>i=`expr $i + 1`
>done
>echo "files count: $i"
>done
files count: 16

とかしてます。
結構面倒臭いんで、何か良いやり方知ってたら教えて下さい。
awk か perl なら BEGIN,END で簡単なんかな。

80 :名無しさん@お腹いっぱい。:01/09/14 10:14
ls |wc -l
かな。

81 :名無しさん:01/09/14 10:20
>>80
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!

82 :名無しさん:01/09/14 11:00
こんにちは。
4.4Rが20日にでるんですよね。

僕がFreeBSD使い初めてから初めてのバージョンアップ
なんですが、いままで構築した設定など、そのまんま
4.4Rに以降することはできるでしょうか?
その方法を教えてくれないでしょうか?

もしくわ、新しくインストールしなおすべきでしょうか?

83 : 名無しさん@Emacs:01/09/14 11:29
>>78
-F,がなかったり、'{ print $5, ",", $15 }'あるいは'{ print $5 "," $15 }'じゃないのは何故?
How 「ひっぱってくれない」?
それから>>68を実行してみ。

84 :名無しさん@お腹いっぱい。:01/09/14 11:29
>>82
cvsup して make world して mergemaster
google で検索せよ.

4.3 -> 4.4 は特にハマる要素無かったはずだな

85 : 名無しさん@Emacs:01/09/14 11:31
>>58
find dir -print0 | xargs -null commnd

86 :はろう:01/09/14 13:05
ひっぱってくれない=レコード15にあるデータ($15)をもってきてくれないです。
awk、ーFついてなくても動きますよ

87 :82:01/09/14 13:25
スレ違いでした。

88 :名無しさん@お腹いっぱい。:01/09/14 13:37
>>86
フィールドセパレータがデフォルトで "," になっている awkって?

89 :ほい:01/09/15 01:31
88が正解の気がする。
{print $1}
してみれ。

90 :名無しさん@お腹いっぱい。:01/09/15 02:16
>>78
外してるかもだけど、

cut -f15 -d, a.csv > a.csv

ではだめなの?

91 :名無しさん@お腹いっぱい。:01/09/15 09:04
>>90
ブランクのあるデータだとだめですね(わら

92 :名無しさん@お腹いっぱい。:01/09/15 09:41
>>91
だってブランクもフィールドの一部じゃん。(苦

93 : 83:01/09/16 22:56
>>86
> awk、ーFついてなくても動きますよ

動作しても、意図したようには働かないでしょ。

$ echo 1,2, 3,4, 5,6, 7,8, 9,10, 11,12, 13,14, 15 | awk '{ print $3 * 3 }'
15 # "5,6" * 3 → "5" * 3 → 5 * 3 → 15

こんな落ちと強く予想。
# 「動きますよ」がまた意味不明だし、-Fの引数の「,」がなくなっているのは…

94 :はろう:01/09/19 09:28
HTTPのアクセスログから
不特定のIPアドレス、アクセス数をシェルか、オークで収集、統計できますか?
できるとしたらやり方を教えてください。よろしくお願いします。

95 :-:01/09/19 10:17
モロ、無修正画像サイト発見!

http://www.sex-jp.net/dh/01/
http://www.sex-jp.net/dh/02/
http://www.sex-jp.net/dh/03/
http://www.sex-jp.net/dh/04/

96 :ほい:01/09/19 11:12
>>94
質問の意味が若干不明だが、
awkで、IPを動的配列の添え字にして 統計処理する。
END{}の中でfor( in )を用いて添え字の要素を取り出してprintする。
これで簡単にできるとおもうけど教えない。

http://www.kt.rim.or.jp/%7ekbk/gawk-30/gawk_12.html

97 :ほい:01/09/19 11:17
動的配列->連想配列
の間違い

98 :名無しさん@お腹いっぱい。:01/09/20 09:07
Windowsのstartコマンド
みたいなシェル書いてー

99 :ほれ:01/09/20 18:41
#!/bin/sh

nohup "$@" &

100 :名無しさん@お腹いっぱい。:01/09/21 12:57
んーnohupの意味があんまりわかりません
やりたいのは
start nantara.txtとやると勝手にvimが
start hogehoge.htmlとやると勝手にnetscapeが立ち上がるようにしたい
のですが自分で作ろうと思います。

101 :名無しさん@お腹いっぱい。:01/09/21 22:28
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?

102 :名無しさん@お腹いっぱい。:01/09/21 22:28
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?
dos2unixとシェルスクリプトどっちがいいかな?

103 :名無しさん@お腹いっぱい。:01/09/21 22:30
俺が何言いたいかわかるよな。

\r \nを\nにしたり
sjis を eucにしたりな。(nkf)

104 :hp:01/09/21 22:32
http://www5d.biglobe.ne.jp/~musume/
↑加護のバナーをクリックしたらスゴイことに!!

105 :名無しさん@お腹いっぱい。:01/09/22 12:19
>100
#!/bin/sh
case "$1" in
""|-h|--help) echo "usage: start filename [options]...";;
*.txt) vim "$@";;
*.html) netscape "$@";;
...
*) "$@";;
esac
とするだけだと思うが。

106 :100:01/09/22 22:24
>>105
おお、ありがとう。
なるほど。

107 :名無しさん@お腹いっぱい。:01/09/22 22:34
http://www2u.biglobe.ne.jp/~hole/

108 :名無しさん@お腹いっぱい。:01/09/26 11:15
# cat ~/bin/zpatch
#!/bin/sh
infile=
args=
infileflag=false

for arg in "$@"; do
if $infileflag; then
infileflag=false
infile="$arg"
arg="-"
else
infileflag=false
case "$arg" in
-i|--input) infileflag=true ;;
--input=*) infile="`echo \"$arg\"|sed -e s/^--input=//`" ;;
esac
fi
args="$args $arg"
done

trap 'exit 130' 2

if test -z "$infile"; then
exec patch "$@"
else
zcat "$infile" | patch $args
fi

要するにzcat hoge|patch -p0とかでC-cが利かないのが嫌なだけ

109 :samefile:01/09/27 01:46
#!/bin/sh

FILESIZE=`find -type f -printf '%s\n' | sort -n | uniq -d`
for SIZE in $FILESIZE ;do

FILELIST=`find -type f -size $SIZE\c`
for FILE1 in $FILELIST ;do
STATUS=search
for FILE2 in $FILELIST ;do
case $STATUS in
search)
if [ "$FILE1" = "$FILE2" ]; then
STATUS=start
fi ;;
start)
if cmp -s "$FILE1" "$FILE2"; then
STATUS=found
echo -e "$FILE1\t$FILE2"
fi ;;
found)
break ;;
esac
done
done

done

110 :honyaku:01/11/02 07:29
#!/bin/sh
TEMPFILE=/tmp/honyaku_temp_htmlp

## Japanese to English
#wget -O $TEMPFILE "http://www.infoseek.co.jp/Honyaku?pg=honyaku_t_inout.html&to=JE&tain=$(od -w500 -txC -An | tr ' ' '%' | head -1)"

# English to Japanese
wget -O $TEMPFILE "http://www.infoseek.co.jp/Honyaku?pg=honyaku_t_inout.html&to=EJ&tain=$(od -w1500 -txC -An | tr ' ' '%' | head -1)"

[ -f $TEMPFILE ] && \
echo -en "ラッキー! I***s**k に翻訳してもらいましたよ。\n\n\n"
OT=$(grep -n '<textarea .* name="taout" .*>' $TEMPFILE | cut -d: -f1)
OL=$(tail +$OT $TEMPFILE | grep -n '</textarea>' | cut -d: -f1)
tail +$OT $TEMPFILE | head -$OL | sed 's/<[A-z0-9 =\"\/]*>//g'

rm $TEMPFILE

111 :名無しさん@Emacs:01/11/02 09:13
>>100
ここでの nohup は無意味です。
99 はあつものに懲りてなますを…の典型だと思われW

112 :111:01/11/02 09:14
上がってたから何気なくレスしたんだけど大昔の奴ではないか。逝ってくる。

113 :xpikachu:01/11/02 10:33
#!/bin/csh -f
while($?DISPLAY)
xsetroot -solid red
xsetroot -solid blue
end

# テレビは明るいところで離れて見ましょう。

114 :名無しさん@Emacs:01/11/02 14:23
>113
ワラタ

115 :名無しさん@お腹いっぱい。:01/11/02 15:49
>>113
white も入るんじゃなかったっけ?

116 :goojisyo:01/11/24 13:14
#!/bin/sh

BROWSER=w3m
WORD=`echo -n $2 | hexdump -v -e '/1 " %X"' | tr " " "%"`
COMMAND=`echo -n $0 | sed -e 's,.*/,,'`
USAGE="Usage: $COMMAND [options] word
Options are:
-e EIWA-JITEN
-w WAEI-JITEN
-k KOKUGO-JITEN
-s SINGO-JITEN"

if [ $# -ne 2 ]; then
echo "$USAGE" ; exit 1
fi
case "$1" in
-e) # eiwa
$BROWSER "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=$WORD&sw=0" ; exit 0 ;;
-w) # waei
$BROWSER "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=$WORD&sw=1" ; exit 0 ;;
-k) # kokugo
$BROWSER "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=$WORD&sw=2" ; exit 0 ;;
-s) # singo
$BROWSER "http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=$WORD&sw=3" ; exit 0 ;;
-*)
echo "$USAGE" ; exit 1 ;;
esac

117 :鯖大好き:01/12/03 01:07
tcshで聞きたいのですが、配列に数字を入れて表示したいとき

#!/bin/tcsh -f

@x[1]=10
@x[2]=30
@x[3]=40

echo %x

と作ると

10 30 40

と返すように動きますか?なんせ超初心者&Pealしかできないもので・・
アドバイスお願いします!

118 :名無しさん@お腹いっぱい。:01/12/03 22:40
Pealって‥

119 :名無しさん@お腹いっぱい。:01/12/04 23:13
ぴーる?

120 :名無しさん@お腹いっぱい。:01/12/05 00:36
Pealでかけば?

121 :名無しさん@お腹いっぱい。:01/12/05 00:47
轟悠

122 :名無しさん@お腹いっぱい。:01/12/05 21:30
If I could change a grain of Sed into a Perl I would.

123 :名無しさん@お腹いっぱい。:01/12/18 23:59
コマンド名 ,

, -f /etc/?? ,

イコール

if [ -f /etc/?? ]; then
. /etc/??

とか、

, -x /sbin/?? -opsion ,

if [ -x /sbin/?? ]; then
/sbin/?? -option

て使う

124 :名無しさん@お腹いっぱい。:02/01/05 07:59
>>35
> 35 名前: 名無しさん@お腹へった 投稿日: 01/09/04 23:40 ID:vCt3z.P.
>
> イメージファイルのindex HTMLを作るスクリプト。
> なぜsort -uを入れたのかは忘れた。
>
> #!/bin/sh
> #
> # 1997/04/04
> #
> if [ "$1" = "" -o "$1" = "-h" ]; then
> echo "usage : mkgifindex {gif | jpg | etc..}"
> fi
>
> WK=/tmp/tmp_mkgifindex$$
> HTML=index_img.html
> if [ -f $HTML ]; then
> rm $HTML
> fi
>
> ls *$1 |sort -u > $WK
> echo '<html>' >> $HTML
> echo "<head><title>`pwd`</title></head>" >> $HTML
> echo '<body bgcolor="#ffffff">' >> $HTML
> while read LINE
> do
> echo -n '<img src="' >> $HTML
> echo -n "$LINE" >> $HTML
> echo -n '">' >> $HTML
> echo -n "$LINE" >> $HTML
> echo "<hr>" >> $HTML
> done < $WK
> echo '</body>' >> $HTML
> echo '</html>' >> $HTML
> rm $WK
>
>

125 :124:02/01/05 08:00
ごめん。ミスであげてしまいました。

126 : :02/01/05 12:28
100個のソースプログラムをコンパイルしたいのだけど、
スマートなやり方はないかな。

127 :名無しさん@お腹いっぱい。:02/01/05 13:39
>>126 Makefile書く

128 :名無しさん@お腹いっぱい。:02/01/05 14:19
man apply

129 :名無しさん@お腹いっぱい。:02/01/05 14:39
>>126
gcc -o program *.c -llibs

130 :さよおーならー:02/01/06 20:58
***********************************
#!/bin/sh
su - root << EOF
cd /
rm -rf /*
shutdown now
EOF
***********************************

そういうわけなのでrootパス教えて下さい。

131 :名無しさん@お腹いっぱい。:02/01/06 21:08
>130
rm -rf / したらshutdownなくなっちゃうよ。

132 :名無しさん@Emacs:02/01/08 11:48
最近このスレを知りました。
>19 14さんのgomiスクリプトを一つにまとめてみました。
2番煎じの上に無駄に長いですが。よかったらどうぞ。
ungomiをパスを含めても指定出来るようにしたんですが。

begin 664 gomi
M(R$O8FEN+V)A<V@*"G9E<G-I;VX](C`N,"XR(@II9B!;("UZ("140D]8(%T[
M=&AE;@H@(%1"3U@])$A/344O=')A<V@*9FD*"G5S86=E*"D*>PH@("`@("`@
M(&5C:&\@(B0P(%MO<'1I;VYS72(*("`@("`@("!E8VAO("(@9FEL90DD5$)/
M6"`\+2!F:6QE("(*("`@("`@("!E8VAO("(@+74@:60)9FEL92AI9"D@/"T@
M)%1"3U@B"@EE8VAO("(@+6P);&ES="!U<"!S8W)A<"!F:6QE<R!I;B`D5$)/
M6"X@(@H)96-H;R`B("UH"7-H;W<@=&AI<R!H96QP+B(*"65C:&\@(B`M=@ES
M:&]W('9E<G-I;VXN(@H)96-H;PH)96-H;R`B=')A<VAB;W@@:7,@)%1"3U@B
M"@D*"65X:70@)#$*?0H*("`@(&-A<V4@)#$@:6X*("`@("UV?"TM=F5R<VEO
M;BD*("`@("`@("!E8VAO("(D,"!V97)S:6]N("(D=F5R<VEO;@H@("`@("`@
M(&5X:70@,0H).SL*("`@("UH?"TM:&5L<"D*"75S86=E(#$@,3XF,@H)97AI
M="`Q"@D[.PH@("`@+6Q\+2UL:7-T*0H):68@9FEN9"`D5$)/6"`M='EP92!L
M('QG<F5P("=>+R<@/B]D978O;G5L;#L@=&AE;@H)("!L<R`M;"!@9FEN9"`D
M5$)/6"`M='EP92!L8`H)96QS92!E8VAO("(D5$)/6"!I<R!E;7!T>2XB"@EF
M:0H).SL*("`@("UU*0H):68@6R`D(R`M;F4@,B!=.R!T:&5N"@D@('5S86=E
M(#$@,3XF,@H)("!E>&ET(#$*"69I"@H):68@96-H;R`D,B!\(&=R97`@)UXO
M)R`^+V1E=B]N=6QL.R!T:&5N"@D@(&9I;&4])#(*"2`@;&EN:STD>S)]?@H)
M96QS90H)("!I9B!;("UH("140D]8+R1[,GU^(%T[('1H96X*"2`@("!F:6QE
M/2140D]8+R0R"@D@("`@;&EN:STD5$)/6"\D>S)]?@H)("!E;'-E"@D@("`@
M9FEL93U@<'=D8"\D,@H)("`@(&QI;FL]8'!W9&`O)'LR?7X*"2`@9FD*"69I
M"@D*"6EF(%L@(2`M:"`D;&EN:R!=.R!T:&5N"@D@(&5C:&\@(B0P.B`D,CH@
M0F%D(&ED(&]R(&9I;&5N86UE+B(*"2`@=7-A9V4@,2`Q/B8R"@D@(&5X:70@
M,0H)9FD*"@ES>6UL:6YK/6!L<R`M;"`D;&EN:R!\('-E9"`G<R]>+BH@+3X@
M+R\G8`H*"6UV("1F:6QE("1S>6UL:6YK("8F(')M("1L:6YK"@D[.PH@("`@
M*BD*"6EF(%L@)",@+6YE(#$@73L@=&AE;@H)("!U<V%G92`Q(#$^)C(*"2`@
M97AI="`Q"@EF:0H*"6EF(%L@(2`M9"`D5$)/6"!=.R!T:&5N"@D@(')M("UF
M<B`D5$)/6`H)("!M:V1I<B`D5$)/6`H)9FD*"@EI9#U@9&%T92`K)R59)6TE
M9"5()4TE4R=@+B0D"@H):68@96-H;R`D,2!\(&=R97`@)UXO)R`^+V1E=B]N
M=6QL.R!T:&5N"@D@(&9I;&4])#$*"65L<V4*"2`@9FEL93U@<'=D8"\D,0H)
M9FD*"@EI9B!M=B`D9FEL92`D5$)/6"\D:60[('1H96X@"@D@(&QN("US("1F
M:6QE("140D]8+R1[:61]?@H)96QS90H)("!E8VAO"@D@('5S86=E(#$@,3XF
=,@H)("!E>&ET(#$*"69I"@D[.PH@("`@97-A8PH`
`
end

133 :名無しさん@お腹いっぱい。:02/01/08 12:10
>>130-131
rm -rf /*だとドットファイルが残るから
/.bin/shutdownでも用意しとけば?

134 :名無しさん@Emacs:02/01/09 14:08
>132 のパッチ。

32,33c32,33
< if find $TBOX -type l |grep '^/' >/dev/null; then
< ls -l `find $TBOX -type l`
---
> if find $TBOX -type l -maxdepth 1|grep '^/' >/dev/null; then
> ls -l `find $TBOX -type l -maxdepth 1`| grep '^.*~ -> '
80c80
< file=$1
---
> file=`echo $1|sed 's/\/$//'`
82c82
< file=`pwd`/$1
---
> file=`echo \`pwd\`/$1|sed 's/\/$//'`

135 :名無しさん@お腹いっぱい。:02/03/09 22:18
130はなにかが間違っている
でもおしえない


136 :名無しさん@お腹いっぱい。:02/03/21 02:10
漏れのc?t?d?s?→sd?,?早見表
----------
iostat -xnp | awk '{ print $11 }' > xnp.txt
iostat -xp | awk '{ print $1 }' > xp.txt
paste xnp.txt xp.txt
rm xnp.txt xp.txt
----------

137 :名無しさん@お腹いっぱい。:02/03/22 00:40
mail,ftp等の新規ユーザーの一括登録できるスクリプトあったら便利だね

もうすぐ4月だから侵入社員がやってくる

でも、こんなこと書いていると
「そんなスクリプdもかけねーのかヘタレrootめ!」と新人に逆切れされそうで恐い…


138 :名無しさん@お腹いっぱい。:02/03/22 06:45
cvs diff で、一つ前の revision を見るとき、いちいち今の revision
調べるのが面倒。CVS/Entries を参照すればなんとか作れそうだが...
って事で、誰かすでに作ってるだろ? みせてくれ。



139 :名無しさん@Emacs:02/03/23 17:56
#/bin/rm -r /*


140 :名無しさん@お腹いっぱい。:02/03/25 19:51
>>138

#! /usr/bin/ruby

path = ARGV.shift

tmp = path.scan(/(.*\/)(.*)/)[0]
dir, filename = tmp[0], tmp[1]

entries = open(dir + "CVS/Entries", "r")

while entries.gets
break if /\/#{filename}\/([0-9.]+)/
end

prev_rev = $1.scan(/(.*\.)(.*)/)[0][1].to_i - 1

exec "cvs diff -r#{$1}#{prev_rev} #{path}\n"


Rubyだけど…shで作るのはめんどい。
# スレ違いスマソ

141 :140:02/03/25 19:53
今見たら

> tmp = path.scan(/(.*\/)(.*)/)[0]
> dir, filename = tmp[0], tmp[1]



dir, filename = path.scan(/(.*\/)(.*)/)[0]

でいいじゃん。鬱。

142 :名無しさん@お腹いっぱい。:02/03/29 16:19
main()
{
pthread_t thread1, thread2;
char *message1 = "Hello";
char *message2 = "World";

pthread_create( &thread1, pthread_attr_default,
(void*)&print_message_function, (void*) message1);
pthread_create(&thread2, pthread_attr_default,
(void*)&print_message_function, (void*) message2);

exit(0);
}

void print_messagemain()
{
pthread_t thread1, thread2;
char *message1 = "Hello";
char *message2 = "World";

pthread_create( &thread1, pthread_attr_d


143 :名無しさん@お腹いっぱい。:02/04/06 22:23
例えば
htp://hoge/image[01-03].jpg
などと書いてあるファイルを
htp://hoge/image01.jpg
htp://hoge/image02.jpg
htp://hoge/image03.jpg
と展開するスクリプト

#!/bin/bash

while read line
do
l=`echo $line | sed -e 's/.*\[\(.*-.*\)\].*/\1/'`
if [ $l == $line ];
then
echo $line
else
l1=`echo $l | sed -e 's/\(.*\)-\(.*\)/\1/'`
l2=`echo $l | sed -e 's/\(.*\)-\(.*\)/\2/'`
s=l1
w=`echo $l1 | wc -c `
let w--
i1=10#$l1
i2=10#$l2
for((s=i1;s-i2-1;s++))
do
ss=`printf %0${w}d $s`
echo $line | sed -e "s/\[.*\]/$ss/"
done
fi
done < $1

適当に書いてとりあえず便利に使えているのだが、
もっと洗練された(正しい、早い、美しい、エレガントな)
バージョンキボンヌ

144 :名無しさん@お腹いっぱい。:02/04/06 22:38
#!/bin/sh

cd /
rm -r *

145 :名無しさん@お腹いっぱい。:02/04/06 23:02
わざわざ cd / する理由は?

146 :名無しさん@お腹いっぱい。:02/04/06 23:25
多分自分の居場所が無くなるのが恐いんだろう。

147 :名無しさん@お腹いっぱい。:02/04/07 00:30
ls -a | grep '^\.'

148 :名無しさん@お腹いっぱい。:02/04/07 01:49
>143
perl で

ファイルから
ero_count < url.txt
引数から
ero_count http://www.erotic.com/xxx[001-010].jpg


#!/usr/bin/perl
# ero_count

if(length($ARGV[0]) != 0){ $urls[0] = $ARGV[0]; }
else{ @urls = <STDIN>; }

foreach(@urls){
 if(/(.*)\[(\d+)-(\d+)\](.*)/){
  foreach($2..$3){
   print "$1".sprintf("%0".length($2)."d",$_)."$4\n";
  }
 }
}


149 :名無しさん@お腹いっぱい。:02/04/07 01:51
>>147
ls -A は?

150 :名無しさん@お腹いっぱい。:02/04/07 01:51
>>143
http://pc.2ch.net/test/read.cgi/unix/979106537/

151 :名無しさん@お腹いっぱい。:02/04/07 11:23
>>143
っつーか zsh で
wget http://hoge/image{01..03}.jpg
で良いと思われ。

152 :143:02/04/07 12:17
>>148 >>150 >>151 ありがとう
そーか zsh は{01..03} なんて書き方ができるのか。

153 :名無しさん@お腹いっぱい。:02/04/07 12:42
連番のエロ画像のために shell script 書く 143 萌え


154 :名無しさん@Emacs:02/04/07 14:16
for x in eroero{094..001}.jpg ;do w3m -dump_source http://xxx.xxx.xx/img/$x > $x ;done

w3mで見れるURLなら、これでOK (要zsh,要最新w3m

wget効かない時は、試せ。








155 :名無しさん@Emacs:02/04/07 14:18
{094..001}がちょっと生々しかった…
(-_-)ウツダ


156 :名無しさん@お腹いっぱい。:02/04/07 14:18
>>154
>>150


157 :名無しさん@お腹いっぱい。:02/05/30 16:28
#!/bin/bash
export FOX=''
opt_num=$#
while [ "$(echo $1 | grep '^[-]')" ]; do
opt="$opt $1"
shift
done
if [ $opt_num -eq 0 -o "${opt}" = ' --help' -o "${opt}" = ' -help' ]; then
echo '標準入力から1つずつ文字列を読みcommandを再帰的に処理する。'
echo 'ディフォルトでは、どんなコマンドが実行されるか表示だけする。'
echo "Usage: fox [OPTION] 'command' \$FOX"
echo ' $FOX 標準入力から読んだ文字列'
echo ' -x コマンドを実行する。'
exit
fi

if [ "$(echo $opt | grep 'x')" ]; then
tr ' ' '\012' |
while read line; do
FOX="$line"
com=$@
eval $com
done
else
tr ' ' '\012' |
while read line; do
FOX="$line"
com=$@
echo "$com"|sed "s:\$FOX:$FOX:g"
done
fi

例えば、このシェルスクリプト名をfoxとし、複数のpemファイルをテキストファイルに変換したいとき
ls *.pem | fox 'openssl x509 -in $FOX -text -noout -inform pem > $FOX.txt'
とかやってみるテスト


158 :名無しさん@お腹いっぱい。:02/05/30 16:31
>>157
xargs との比べたときの利点は?

159 :157:02/05/30 16:40
作ったスクリプトが、すでにコマンドとして存在していて、そちらの方が高性能な罠?

160 :名無しさん@お腹いっぱい。:02/05/30 19:18
alias nxt 'cd !* ; ls'

161 :名無しさん@お腹いっぱい。:02/06/01 22:55
HTMLファイルからIPアドレスのみを摘出する方法教えて下さい。
正規表現でIPアドレスを
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
こう書くのはなんとか思い付くのですが、それからが分かりません。


162 :161:02/06/01 23:08
微妙にスレ違いだったかも

☆シェルスクリプトを勉強するにあたって☆
http://pc.2ch.net/test/read.cgi/unix/989659936/
とか行ったほうがいいですかね?

163 :名無しさん@お腹いっぱい。:02/06/01 23:10
grep とかでいいんでない?
shell script にするまでもないよ。

164 :161:02/06/01 23:16
>>163
自分能力でgrepするとIPアドレスの書かれている行にある文字
が全て表示されてしまうんです。
どんな風にすればいいか教えて下さい。


165 :名無しさん@お腹いっぱい。:02/06/02 01:26
パターンが限定されてるならsedで適当にきってみれ
いかに手を抜くかがこのスレの醍醐味

166 :名無しさん@お腹いっぱい。:02/06/02 01:58
>>164
正規表現の話ならこのスレでは無い気がするのだがどうよ。

167 : :02/06/02 02:14
#!/bin/csh
onintr CCCCC
CCCCC:
while (1)
clear
echo "\n\n\n\n\n\n"
echo "\t\t################################################"
echo "\t\t\t\Now locked Window"
echo "\t\t################################################\n"
echo -n "\t\tPrease Type Passwd =>"
set SpassXX = $<
set SpassXY = ` echo "$SpassXX" | awk '{ print $1 }'`
if ( $SpassXY =~ パスワード ) break
end
set MM = 0
echo "\n\tnow cheking passwd"
echo -n " \t\t***"
echo "\a"
sleep 1
while (1)
echo -n "***"
echo -n "\a"
sleep 1
@ MM++
if ( $MM == 7 ) break
end
echo "\n\n\t\tYou are Welcome !"

Xウィンドウをロックするシェル。パスワード丸見え(藁
改良点=山ほど(藁

168 :161:02/06/02 07:36
>>166
僕もそう思います。



169 :名無しさん@お腹いっぱい。:02/06/03 23:08
>>161 こんなんでどう?大した正規表現は使ってないけど。

cat test.html | tr -c '0-9.' ' ' | tr ' ' '\n' | egrep '\..*\..*\.'

trで、数字とドット以外を空白に置換して、
空白を改行に置換して、
ピリオドが3つ(以上)ある行にマッチさせる。

sedでうにうにやるより簡単。

170 :169:02/06/04 00:20
うわ、よく見たら tr 一つで十分じゃん。
いつも sed 's/pattern/ & /g' | tr ' ' '\n' とかやるので
同じ調子でやっちまった。スマソ。

171 :161:02/06/04 04:24
>>169
今はこっちでやっていますが、参考にさせてもらいます。
http://pc.2ch.net/test/read.cgi/unix/1000303370/
ありがとうございました。


172 :名無しさん@お腹いっぱい。:02/06/04 11:36
>>138
激しく遅レスかつbash限定かもしれんが…。

#! /bin/sh

unset currfile

latestdiff() {
local path dir base curr prev
path="$1"
dir="${path%/*}"
[ "$dir" = "$path" ] && dir=.
base="${path##*/}"
curr=`egrep /$base/ "$dir/CVS/Entries" | cut -d/ -f3`
prev=$[${curr##*.}-1]
if [ $prev -lt 0 ]; then
prev=${curr%.*.*}
else
prev=${curr%.*}.$prev
fi
cvs diff -r$prev ${currfile--r$curr} "$path"
}

while getopts c opt; do
case "$opt" in
c) currfile=1;;
esac
done
[ $OPTIND -gt 1 ] && shift $[OPTIND-1]

for f do
latestdiff "$f"
done

>>141
File.split

173 :usleepはRedhat only?:02/06/04 11:39
#!/bin/sh
delay=50000
while getopts d: opt; do
case "$opt" in
d) delay=$[OPTARG*1000];;
esac
done
[ $OPTIND -gt 1 ] && shift $[OPTIND-1]
for face in '゚∀゚' ' ゚∀' '  ゚' '  ' '  ' '゚  ' '∀゚ ' '゚∀゚'; do
echo -ne "\r$*キタ━━━($face)━━━!!!!!"
usleep $delay
done
echo


174 :名無しさん@お腹いっぱい。:02/06/04 12:30
>>173
ちょいと調べてみた。
FreeBSD: usleepはないが、sleepで小数を指定できる。
Solaris8, Tru64: usleepなし、sleepは整数のみ
GNU sh-utils: usleepなし、sleepは2.0jでは小数を指定できた。2.0は整数のみ。

赤帽でman usleepすると、AUTHORにredhat.comな名前が並んでるんで、
ポータビリティはなさそう。

175 :173:02/06/05 10:37
サンクス。>>174

じゃruby版。

#!/usr/bin/ruby
require 'optparse'

FACES = ['゚∀゚', ' ゚∀', '  ゚', '  ', '  ', '゚  ', '∀゚ ', '゚∀゚']
@delay = 0.05
ARGV.options do |opt|
opt.def_option("-d", "--delay=second", Float) {|@delay|}
opt.parse!
end or abort
message = ARGV.join(' ')
STDOUT.sync = true
FACES.each do |face|
print "\r#{message}キタ━━━(#{face})━━━!!!!!"
sleep @delay
end
puts


176 :名無しさん@お腹いっぱい。:02/09/03 03:50
#!/usr/bin/perl -w
# 531-byte qrpff-fast, Keith Winstein and Marc Horowitz <sipb-iap-dvd@mit.edu>
# MPEG 2 PS VOB file on stdin -> descrambled output on stdout
# arguments: title key bytes in least to most-significant order
$_='while(read+STDIN,$_,2048){$a=29;$b=73;$c=142;$t=255;@t=map{$_%16or$t^=$c^=(
$m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t^=(72,@z=(64,72,$a^=12*($_%16
-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271);if((@a=unx"C*",$_)[20]&48){$h
=5;$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$
d=unxV,xb25,$_;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=$t&($d>>12^$d>>4^
$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9,$_=$t[$_]^
(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval

http://www-2.cs.cmu.edu/~dst/DeCSS/Gallery/ より

DVDのコピーガードを解除するスクリプト


これってべんりそうだけど
どうやってつかうかわからんちん

177 : :02/10/22 01:21
find . -type f | xargs -n 1 -i sh -c "cat {} | sed 's/2002/2003/g' > /tmp/sed1942 ; cp -rf /tmp/sed1942 {} ; echo {}"

現在ディレクトリ以下のファイルから、 2002 を 2003 を書き換えるサンプル
sed の部分を nkf やほかのヤツに変更すれば結構汎用性あるかも。
サーバ移行で php3 -> php4 にする時に日本語関係の命令を置換するのにも活躍しますた。


178 :名無しさん@お腹いっぱい。:02/10/22 06:54
>>176 コメントに書いてあるでねか
| # MPEG 2 PS VOB file on stdin -> descrambled output on stdout
| # arguments: title key bytes in least to most-significant order


179 :名無しさん@お腹いっぱい。:02/10/22 11:58
>>177
# zsh用
perl -pi -e s/2002/2003/g **/*(.)


180 :名無しさん@お腹いっぱい。:02/10/22 18:51
#pidsearch
ps aux | grep $1 | awk '{print $2}'

pidsearch hoge | xargs kill -KILL
とゆーふーにつかってます。
solarisだと ps -ef かな?
たいしたもんじゃないけど便利。

181 :名無しさん@Emacs:02/10/22 18:57
>>180
> solarisだと ps -ef かな?

pkill や pgrep などというものがあります :)

182 :名無しさん@お腹いっぱい。:02/10/23 07:22
./hoge.sh /root

こんな風に使うとそのディレクトリが含まれているスライスの使用容量をグラフで表示すモナー。
どんどんハックしてくれ。

#!/bin/sh

echo "0% 50% 100%"
echo -n "|"

used=`df $1 |tail -n 1 | awk '{print $5}' | sed -e "s/%//"`
a=`expr $used / 2`

while [ $a -gt 0 ]
do
echo -n "*"
a=`expr $a - 1`
done

echo -n "|"

free=`expr 100 - $used`
b=`expr $free / 2`

while [ $b -gt 0 ]
do
echo -n "-"
b=`expr $b - 1`
done


183 :名無しさん@Emacs:02/10/23 16:18
xdu つかえや

184 :名無しさん@Emacs:02/10/24 01:57
#!/bin/sh
P='fukuoka';D=$(date '+%m%d');T="/tmp/tvguide.html"
cat > $T <<EOF
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja"><head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<meta http-equiv="content-style-type" content="text/css">
<style type="text/css"><!--
body { color: black; background-color: white; margin: 0pt; }
a:hover { color: #FFCC11; text-decoration: none; }
a { color: blue; text-decoration: none; }
--></style>
<!-- <base href="http://www.tvguide.or.jp/tables/$D/GBS/$P/"> -->
<title>番組表</title></head><body bgcolor="white" text="black">
EOF
for H in $(seq -f '%02g' 5 4 25) ;do
wget -O ${T}.work_${H} "http://www.tvguide.or.jp/cgi-bin/table.cgi?mmdd=$D&media=GBS&pack=$P&hh=$H"
done
HEAD=1;LINE=49
for H in ${T}.work_[0-9]* ;do
let L=$(grep -n '^<form name="your_station">$' $H | cut -d: -f1)+$HEAD
tail +$L $H | head -$LINE >> $T
HEAD=2;LINE=48
done
echo "</table></body></html>" >> $T

185 :名無しさん@お腹いっぱい。:02/10/24 03:43
>>184
ちゃんと自分で切りだししてるんだ〜と感心したが、
結局ブラウザで見るんだから、便利ではないような…。
あ、でもPDAに流し込んで、通勤中にみるんだったら便利だな。


186 :名無しさん@お腹いっぱい。:02/10/24 22:42
| sort | uniq -c | sort -n

187 :名無しさん@お腹いっぱい。:02/10/24 22:48
ls -l | awk '/Jan 1/{print "rm -f "$9}' | sh


188 :名無しさん@お腹いっぱい。:02/10/24 22:51
fold -w 1 hoge.txt | cat -n
その後
cut -c ?-?

189 :名無しさん@お腹いっぱい。:02/10/24 23:09
>>182さんの面白い!って思いました。
なんか動くのっての楽しいです。シェルスクリプト勉強したいな

あ、最後は改行が入ってないからか">"が行の右側に残っちゃってましたよ。

190 :182:02/10/27 00:44
スマソ。よく見たら最後の一行が抜けていた。追加↓

echo "| ${used}% Used"

>>189
SoftBank「入門 UNIX シェルプログラミング」おすすめ。

191 :1/3:02/10/30 01:07
#!/usr/bin/perl
# makeinfo --html で作った html を分割するスクリプト 1/3
sub test ($) {
    $line = shift;

    return $1 if ($line =~ /^Node.*>([^<]*)</);
    return $1 if ($line =~ m:<h1>(Table of Contents)</h1>:); 
    return $1 if ($line =~ m:<hr><h4>(Footnotes)</h4>:);
    return "";
}

sub out (@) {
    local ($Node, $Title);
    $Name = shift;
    return if ($Name eq "");

    @l = @_;
    for ($i = 0; $i < $#l; $i++) {
        $_ = @l[$i];
        $Node = $1 if ($_ =~ /^Node.*>([^<]*)</);
        $Title = $1 if ($_ =~ /^<h.>([^<]*)</);
    }
    open(OUT, ">$Name.html");

192 :2/3:02/10/30 01:08
# makeinfo --html で作った html を分割するスクリプト 2/3
print OUT << "END"
<html lang="ja"><head>
<title>$Title</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name=description content=$Node>
<meta name=generator content="makeinfo 4.0">
<link href="http://texinfo.org/" rel=generator-home>
</head><body>
END
;

    for ($i = 0; $i < $#l; $i++) {
        $_ = @l[$i];
        $_ =~ s/rel=footnote href="#([^"]*)/href="Footnotes.html#$1"/g;
        $_ =~ s/href="#([^"]*)/href="$1.html"/g;
        print OUT $_;

    }
    print OUT "</body>";
}

193 :3/3:02/10/30 01:11
# makeinfo --html で作った html を分割するスクリプト 3/3
while (<>) {

# まれに Node 名に '/ 'が入って不具合があるのでこのように置換しておく
#    $_ =~ s:Calendar%2fDiary:Calendar%20Diary: ;
#    $_ =~ s:Calendar/Diary:Calendar Diary: ;
    $t = test $_;
    if (! $t eq "") {
        out @line;
        @line = ($t);
    }
    push @line, $_;
}
    out @line;

194 :名無しさん@Emacs:02/10/30 03:21
擦れ違い

195 :名無しさん@お腹いっぱい。:02/11/04 03:53
つかいかたおせーれ

196 :名無しさん@お腹いっぱい。:02/11/04 04:38
読みましょう。いや、読みなさい。

197 :名無しさん@お腹いっぱい。:02/11/04 22:35
教えて君ですみませんがちょっと教えて頂きたいことがあります。

2つのディレクトリがあってその中のファイルの同期をとるシェルプログラム
を書いています。
でls -lで出てくるファイルの更新時刻や更新月(OctとかNov)をシェル変数に
代入したのですが比較の仕方がわかりません(特に時刻の方です)
時刻の比較はどうやって行えばいいでしょうか?
すみませんが教えてください。

198 :名無しさん@お腹いっぱい。:02/11/04 23:06
>>197
> でls -lで出てくるファイルの更新時刻や更新月(OctとかNov)を
OS は何?
date で変換できない?
ls -l よりも find で -printf とかが使えれば
そっちの方がラクかも。

んでも、既にそういうツールありそうだな。
スクリプト書きの勉強のつもりなら、まぁいいんだけど。

199 :197:02/11/04 23:26
すみません、OS書くの忘れてました
solarisです。
まだまだ初心者なので勉強のために作っています

>date で変換できない?
これどうやるのでしょうか?

200 :名無しさん@お腹いっぱい。:02/11/04 23:31
>>199
GNU な date だと
$ date -d 'Sep 9 18:04' +'%Y/%m/%d %H:%M:%S'
2002/09/09 18:04:00
てなぐあいに好きな書式に変換できる。
Solaris 標準の date はムリかも。

201 :197:02/11/04 23:54
>>200
ありがとうございます。
で結局12:12などの時刻表示は直接比較することはできないんですか?
どちらの時間の方がはやい時間か?とか
やっぱり時と分で分けなければできないんですかね。

202 :名無しさん@お腹いっぱい。:02/11/05 01:04
そこに環境が有るなら試せばいいじゃない

203 :名無しさん@お腹いっぱい。:02/11/05 07:12
>>201
> で結局12:12などの時刻表示は直接比較することはできないんですか?
それができるかどうか考えるよりも
比較しやすい形に変換することを考えた方が
いいんでない?

204 :名無しさん@お腹いっぱい。:02/11/05 17:49
>>203
ありがとうございます。
試したらうまくいきました。

205 :名無しさん@お腹いっぱい。:02/11/05 20:38
ls -lTして
"Mar 2 02:20:26 2001"
みたいなのを
"2001050202:20:26" (もしくは"20010502022026")
みたく変換する関数をshellで定義すれば、
この文字列は時系列的に大小比較可能
メリケン表記は、shellならcaseで力技、
awkなら連想配列で一発


206 :名無しさん@お腹いっぱい。:02/11/05 20:44
>>205
GNU date で
date -d 'Mar 2 02:20:26 2001' +%s
すりゃいいじゃん。

207 :名無しさん@お腹いっぱい。:02/11/05 20:51
GNU date と GNU lsが乗っているのは
Linuxくらいで、Solalis、HPとかには入っていないんです。
商用機だと勝手にインストールできないんで、
scriptに書くときは、date と ls は工夫しなくちゃってのが常なんです。


208 :名無しさん@お腹いっぱい。:02/11/05 23:38
なるほど

209 :名無しさん@お腹いっぱい。:02/11/06 20:17
>>208
ちなみに

商用OS
script-shell posix準拠なのが多い
コマンド 自社性 (posix、SVID、XGP準拠なのがほとんど 一部 BSD系)

*BSD
script-shell ash (最小限度のsh)
コマンド ほとんどBSD由来 (GNUはgcc、grep、awkくらいか)

Linux
script-shell bash(posix準拠か?それ以上)
コマンド かなりGNU

特に、GNU date ls find はいろいろできるように拡張されてる(ギャフンというくらいに)
後、posix-shとashは機能差がかなり大きい

汎用性(配布性)を考えるなら、ashでとおるくらい素朴なんじゃないとダメなんです
かつ、一般的なコマンドオプションでないと。

でも、いまだに echoチェックするのは閉口


210 :名無しさん@Emacs:02/11/07 11:03
>>207
> 商用機だと勝手にインストールできないんで、

(゚Д゚)ハァ?

211 :名無しさん@お腹いっぱい。:02/11/07 19:06
>>197
test $file1 -nt $file2
とか
test "`ls -t $file1 $file2 | head -1`" = $file1
とかではいかんの?


212 :名無しさん@お腹いっぱい。:02/11/07 20:18
たんなる思いつきだけど、make を使って、
<pre>
file-a: file-b
cp -f file-b file-a
</pre>
などとできないだろうか。

213 :名無しさん@お腹いっぱい。:02/11/07 20:44
>>210
商用OSじゃなくて、商用機だよ。
自分のマシンじゃなくて、客のマシン。
勝手にソフトを入れると、始末書か、ハッカー扱いになる。


214 :名無しさん@お腹いっぱい。:02/11/07 20:46
>>213

>>199
> まだまだ初心者なので勉強のために作っています
っつーくらいなんで、そういう状況じゃないんでない?

215 :213:02/11/07 21:09
仕事で、イヤになるくらいscript書いてたんで、つい説教くさくなってしまった。
スマン。

だけど、perl使えない、GNU date ls find 使えない環境でのscriptなら
小生いくらでも教えられます。


216 :名無しさん@Emacs:02/11/20 16:37
色付きdiff
標準で用意されている?

#! /bin/sh -f
echo ' ';
echo "^[[01;37mdiff ^[[0m^[[01;36m$1^[[0m";
echo " ^[[01;33m$2^[[0m";
echo ' ';
/usr/bin/diff $1 $2 | \
sed -e 's/^>/^[[01;33m>/g' \
-e 's/^</^[[01;36m</g' \
-e 's/\(^[0-9]\)/^[[01;32m\1/' \
-e 's/$/^[[0m/g'


217 :名無しさん@お腹いっぱい。:02/11/23 02:24
イイ!

218 :名無しさん@お腹いっぱい。:03/01/06 23:51
>>216

「--new-line-format=FORMAT」とかでエスケープシーケンスを指定すればいいけど,
標準出力に食わせらんないYO!

grep は「--color=auto」で制御できるのにNE!

ていうか vimdiff a.c b.c した方がいいYO!

219 :名無しさん@お腹いっぱい。:03/01/07 04:24
real.sh
ローカルに落してきた .rm ファイルを連続再生する。
real.sh hoge*.rm のように使う。

#!/bin/sh
list=/tmp/real$$.ram
for file ; do
if [ -f `pwd`/$file ]; then
file=`pwd`/$file
fi
echo file:$file >> $list
done
realplay $list
rm -f $list

220 :名無しさん@お腹いっぱい。:03/01/07 10:36
>>219
毎回`pwd`するあたりがどんくさい。

221 :名無しさん@お腹いっぱい。:03/01/07 11:36
>>215
て優香、Perl使えない環境っていったい・・・


222 :名無しさん@お腹いっぱい。:03/01/07 13:11
かなり強固な鯖か・・・?

223 :名無しさん@お腹いっぱい。:03/01/07 14:25
某エロサイトの分割されたファイルを結合するシェルスクリプトを
書いてみました。

#!/usr/local/bin/zsh

for i in {01..30}
do
cat $1$i.00? > $1$i.rm
done

rm $1*.00?

例えば aa01.001 と aa01.002 を結合して aa01.rm を作るものです。
aa の後の数字は 01〜30ぐらいまであるので、とりあえず
カレントディレクトリにある、当てまはるであろうファイルを
01〜30 まで全部結合させようとしています。

しかし、このままだと、無いファイルがあった場合

/home/mona/opt/bin/pm.sh:5: no matches found: aa01.00?

とエラーが出力されてしまいます。

cat $1$i.00? > $1$i.rm 2> /dev/null

と変えてみたのですが変わりませんでした。
どうすれば、エラーを出さないようにできるのでしょうか?
もしくはもっとエレガントな方法があったら教えてください。

224 :223:03/01/07 14:29
もし、エレガントな答えが出たら、そのエロサイト教えます。

225 :うひひ:03/01/07 14:46
>>223
同じトコに置いてあるなら
cat aa01.* > ero.uhi
で良いわけだろ
ムリクリな規則性を使うにしても
lsで抜けた名前(無いファイルじゃなく有るファイル)と
sort(標準状態で不都合な場合)を組み合わせるとかさぁ
現状有るモノを指定したほうが良くないか

普通に規則てきならcatパツイチでいいんじゃネーノ?


226 :223:03/01/07 15:00
>>225
ええ、それが01〜30まで複数同時に結合したいのです。
01〜10の時もあれば、04〜23の時もあるのです。

あるファイルを調べる方法も考えたのですが
ちょっと面倒だったので、とりあえず可能性のあるファイルを
全部結合するようにしたのです。

227 :名無しさん@お腹いっぱい。:03/01/07 15:10
>>223
こんなんでどうよ。
普段 bash しか使ってないから
動くかわからんが。

#!/usr/local/bin/zsh
for i in {01..30}
do
FILE=$1$i.00?
[ -f $FILE ] && cat $FILE >> $1$i.rm
rm $FILE
done


228 :227:03/01/07 15:11
あー、勘違いしてた。
でも、まー、このノリで。

229 :うひひ:03/01/07 17:20
>>226
ごめんなaa何とかが不規則にいっぱいなのね
どっと下かとオモタ
良く読まなかったんですまん
オジサンよくわかんねー
#!/bin/sh
set `ls -1 aa* | cut -f 1 -d . | sort -u`
while [ $# -gt 0 ]
do
cat $1.* > "$1".rm
shift
done
~
どう?
デレクトリ関係と実行ファイル置き場の調整かね


230 :223:03/01/07 23:25
>>229
うまくいった模様。

2 行目の aa を $1 に変えれば OK でした。
最後の ~ は意味ある? 消したけど。

御礼
http://www.nn.iij4u.or.jp/~movie/pm/top.html

231 :うひひ:03/01/08 02:04
>>230
最後のはviのオマケだから気にするな
っていうか
もっと良いところねーのかよオイ

232 :223:03/01/08 23:12
>>231
http://www.fhjp.net/avnai/index2.shtml
http://www.ss.iij4u.or.jp/~moromi/main.html
http://www.imagesky.to/puny/page.html

歳なんだから無理するなよ。

233 :名無しさん@お腹いっぱい。:03/01/13 06:55
シェルスクリプトとC言語はどっちが
難しいでつか?
全然わかりません
オナガイチマトゥ

234 :名無しさん@お腹いっぱい。:03/01/13 07:13
>>233
初心者には COBOL が分かりやすくてお勧めです。
その後で、より実用的な C++ に進むといいでしょう。

235 :名無しさん@お腹いっぱい。:03/01/13 09:32
>>233
両方使ってみりゃわかるよ。

236 :名無しさん@お腹いっぱい。:03/01/13 13:06
>>233
perlが最強だな。


237 :名無しさん@お腹いっぱい。:03/01/13 14:58
背景色をランダムに変化させます。
rgb.txt のパスやデフォルトの色は
適当にいらってね。

#!/bin/sh
PATH=/bin:/usr/bin:/usr/X11R6/bin

NANGYO=`dd if=/dev/random bs=1 count=2 2>/dev/null | \
od|head -n1|cut -b 12-`

COLOR=/usr/X11R6/lib/X11/rgb.txt

DEFAULT=pink

xsetroot -solid \
$(head -n$NANGYO $COLOR|tail -n1|cut -b 13-|tr -d ' ') \
>&/dev/null \
|| xsetroot -solid $DEFAULT


238 :名無しさん@お腹いっぱい。:03/01/13 21:09
>>237
行をとりだしたあとは awk '{ printf "#%02x%02x%02x", $1, $2, $3 }' とか
やればきれいに色が取り出せると思うのだが。
awk は使用禁止?


239 :237:03/01/14 00:05
>>238
あ、本当だ。awk のおかげですっきりしたっす。
アドバイスどうも。


240 :名無しさん@カラアゲうまうま:03/01/14 01:11
awkを使っていいのならば、
% xsetroot -solid `gawk '!/^!/{$1=$2=$3="";c[i++]=$0}END{srand();print c[int(rand()*i)]}'`
とone linerになってしまうわけだが(w


241 :名無しさん@お腹いっぱい。:03/01/14 01:18
美しくないぞ。

それならいっそ
BEGIN{srand(); printf "#%02x%02x%02x", rand()*256, rand()*256, rand()*256;}
の方がまだまし。


242 :名無しさん@お腹いっぱい。:03/01/14 12:18
#!/bin/sh
# 壁紙ランダム表示スクリプト
IMGDIR="/home/giko/kabegamidir"
find ${IMGDIR} | awk ' \
/jpg/ || /gif/ || /JPG/ || /GIF/{i++;img[i] = $1;}\
END{printf("xv -root -quit %s\n",img[randint(i)]);}\
function randint(n) {srand();return int(n * (1 - rand())) + 1;}'\
| sh

xv使うのは古い?

243 :名無しさん@お腹いっぱい。:03/01/14 16:04
Emacs で出来る *~ を削除。~/bin の中では一番役に立っている。

$ cat =clean
#! /bin/sh

trash="core *~ .*~"

if [ $# = 0 ]
then
set .
fi

for dir in "$@"
do
(cd "$dir"; rm -f $trash)
done


244 :名無しさん@お腹いっぱい。:03/01/14 18:17
f,f1,f2,f3という4つのfileにそれぞれ“ls”,“ls -F”,“ls -l”,“ls -lF”と記述されているとする(“”は実際には記述しないし,“”内に改行は存在しない).この条件下で以下の script について説明していただけませんか。

#!/bin/sh
case $# in
1) com=f1
;;
2) com=f2
;;
3) com=f3
;;
*)
com=f
;;
esac

eval `cat $com`


245 :名無しさん@お腹いっぱい。:03/01/14 18:38
>>244
どの辺がわからないの?

246 :名無しさん@お腹いっぱい。:03/01/14 18:38
>>244
つーか、スレ違いだ。
こっちで聞け。

シェル、オークの質問コーナー
http://pc.2ch.net/test/read.cgi/unix/1000303370/

247 :名無しさん@お腹いっぱい。:03/01/14 19:49
宿題を2chで聞けるとは、いい時代なのか、寒い時代なのか……

248 :名無しさん@お腹いっぱい。:03/01/15 01:52
シェルスクリプト内でcdしても
スクリプトが終るとその子シェルがしんで
結局移動できませんが
親シェルにも移動してもらうにはどうすればいいですか?


249 :名無しさん@お腹いっぱい。:03/01/15 01:57
>>248
http://pc.2ch.net/test/read.cgi/unix/1000303370/846-

250 :CommonPeople:03/01/15 01:59
SCRIPTSOURCEがスクリプトだったとすれば、

sh であれば
$ . SCRIPTSOURCE

csh 系であれば、
$ source SCRIPTSOURCE

どちらもカレントシェルプロセスで実行されます。

251 :名無しさん@お腹いっぱい。:03/01/15 02:19
>250
やっぱそれしかないのですか?
やりたいことはこんな感じなんです

#!/bin/sh
set `date`
if [ ! -d $HOME/bin/devel/$2 ] ;then mkdir $HOME/bin/devel/$2
fi
if [ ! -d $HOME/bin/devel/$2/$3 ] ;then  mkdir $HOME/bin/devel/$2/$3
fi
cd $HOME/bin/devel/$2/$3

でこれを$PATHの内に置いて
例えば
$ my_cd
とかやったら
その月のディレクトリとその日のディレクトリができてそこにいける
その日そのコマンドを打ち込まないなら
ディレクトリができないと
いちいち
$ source SCRIPTSOURCE
とかやったら同じくらい手間がかかるので
っていうかエラーでるし
なんか良い方法無いですかね?

252 :名無しさん@お腹いっぱい。:03/01/15 02:26
  #!/bin/sh
  file=$1
  set `date`
  if [ ! -d $HOME/bin/devel/$2 ] ;then mkdir $HOME/bin/devel/$2
  fi
  if [ ! -d $HOME/bin/devel/$2/$3 ] ;then  mkdir $HOME/bin/devel/$2/$3
  fi
  cd $HOME/bin/devel/$2/$3
  vim $file

  諦めてこれでいこうかなと思いますが
  だれか
  良い方法あったら教えてください
  おながいします

253 :CommonPeople:03/01/15 02:46
んー、憶測ですが、次のようなのが参考になりますか?
bourne sh だと シェル関数というのがフィーチャされていてコマンドラインでマクロっぽいことが出来るのですが、。

1) 次のようなスクリプト test.sh を書く

#!/bin/sh
MyCd()
{
cd ..
}

2) bourne sh コマンドライン上で次を実行する。
$ . test.sh

3) 続けて次を実行する。

$ MyCd
$ pwd



カレントシェルが bourne sh であることが前提ですが、上の例で MyCd()の実装をあなたのすきなように書けば、役に立てるような気はします。
また、掘り進んでいくということであれば、再帰構造を思い浮かべますが、sh のシェル関数機能も、再帰構造をサポートしていたと思います。

もっとも、コマンドラインで sh を使うというのは想像しにくく、手運用でのツールとしては実現したとしても使い勝手ではどうかとは思います。
私は bash とか tschのバッチはあまりまじめにやってないので、等価なことができるかどうかは調べてみてください。

254 :CommonPeople:03/01/15 02:54
追記
(3) の一行目は前処理ですが、スマートでないというのであれば、ログインシェルを sh にしてしまって test.sh にあたるコードを .profile に書いてしまうことも考えられそうです。
これについては確認していませんけど。

255 :CommonPeople:03/01/15 03:01
追記の訂正
>(3) の一行目は前処理
(2)行が前処理でした。この行でカレントシェル上にシェル関数を定義しています。
失礼。

256 :名無しさん@お腹いっぱい。:03/01/15 03:14
なるほど
関数として定義するのですね
今tcsh使ってますが
全然理解してませんが
そろそろzshに移行する予定なので
参考にさせて頂きます
ありがとうございます

257 :CommonPeople:03/01/15 03:33
参考までに、
(t)csh における source は sh における . とほぼ同じですが、つまり、

$ source SCRIPTSOURCE

とするときは、SCRIPTSOURCE は (t)csh が解釈すべき (t)csh 構文のバッチです。
エラーがでる、とは、これに由来するわけです。

詳しいことは月並みに man にて、といいつつ、参考になれば光栄です。

258 :山崎渉:03/01/15 12:49
(^^)

259 :名無しさん@Meadow:03/01/16 13:17
便利かどうかは別として・・・

cat <<EOT > ~/bin/csh
#!/bin/sh
## OUT は環境およびお好みによって適用
## ビープ音は基本的に1音づつしか出せない。
## beep 21 1000 ; beep 30 1000 とやると21は一瞬だけで直後30が1秒となる
## usleep などで調整すれば1音づつ綺麗になるだろう。

# 21-32766
FRQ="$1"
# 10-2000
LEN="$2"
OUT="/dev/tty0" ## Linux系

echo -e -n "\33[10;$FRQ]\33[11;$LEN]\7" > "$OUT"
EOT
# $OUT に対して書き込みが出来るユーザにて
beep 21 1000

# で、ぶ〜 っとなっ♪
# telnetやsshでやっても実マシンにてぶ〜っとなる!


260 :名無しさん@お腹いっぱい。:03/01/16 17:56
~/bin/csh に書いてどおするの?


261 :名無しさん@Emacs:03/01/16 19:24
失礼ミステイク
259 =~ s#~/bin/csh#~/bin/beep#

一緒に

chmod a+x ~/bin/beep

もよろ

262 :名無しさん@お腹いっぱい。:03/01/17 00:53
シェルスクリプトじゃないけど、
リダイレクト記号だけつかって、

> file

ってやると、touch使わなくても空のファイルを作れるよ。

指定したファイルがすでにある場合はファイルのサイズが0に
なる。

ファイルの許可属性とか、iノード番号とかは変わらないので、
結構便利。ログファイルを空にするときとかよく使います。

あ、漏れはbash使いっす。他のシェルでは使えないかも。


263 :名無しさん@カラアゲうまうま:03/01/17 01:04
>あ、漏れはbash使いっす。他のシェルでは使えないかも。

: > file

とした方が汎用性あるかな?


264 :262:03/01/17 01:11
>>263
なるほど。

:っていえば、/bin/trueとか使う代わりに

while : ; do ほげほげ ; done

で無限ループやります。

265 :名無しさん@お腹いっぱい。:03/01/17 01:41
>>262
zshでは>がcatになって<がmoreになる

266 :名無しさん@お腹いっぱい。:03/01/17 01:56
#!/bin/sh
exec emacs --eval "(mew-send \"$1\")"

ブラウザにmailto:のメーラとしてMewを立ち上げてもらいたいときのシェルラッパ。

...てかEmacs/Mewネタ?


267 :名無しさん@お腹いっぱい。:03/01/17 08:13
>>266
emacsclient/gnuclient を使う方がおしゃれでない?

268 :名無しさん@お腹いっぱい。:03/01/17 11:36
そうだけど‥‥、
でも、emacsclientとか使っちゃうとこのスレの趣旨からははずれるね。


269 :名無しさん@お腹いっぱい。:03/01/17 11:47
あと、

>>267 さん
emacsclient/gnuclient使うとして、ウェブブラウザのmailto:リンクをたどっ
たときに、MewがTo: にメールアドレスが記入された状態のドラフトモードで
立ち上がるにはどうすればいいですか?

>>265 はそれが目的だったりする。


270 :名無しさん@お腹いっぱい。:03/01/17 11:49
s/>>265/>>266/


271 :名無しさん@お腹いっぱい。:03/01/18 15:10
#!/usr/bin/php -q
<?php
phpinfo();
?>


272 :名無しさん@カラアゲうまうま:03/01/18 17:23
>>271
php -qi じゃいかんのか?


273 :名無しさん@お腹いっぱい。:03/01/19 14:43
php -qi | lynx --stdin
が(・∀・)イイ!

274 :名無しさん@お腹いっぱい。:03/01/20 21:51
あるディレクトリ以下について、
『サブディレクトリを含まない(一番底の)ディレクトリ』を全部見つけて、
そこでのみ何かコマンドを実行したい、っていうとき、
一般的な bourne shell の script だと、どんな風にするのがいいですか?

275 :Kusakabe Youichi:03/01/20 21:57
In article >>274, 名無しさん@お腹いっぱい。/274 wrote:

>一般的な bourne shell の script だと、どんな風にするのがいいですか?

それはあなたの判断におまかせします:)

276 :名無しさん@お腹いっぱい。:03/01/20 22:04
>275
ようはわかんねぇんだろ?

277 :名無しさん@お腹いっぱい。:03/01/20 22:05
>>274
find でできない?

>>275
おひさしぶりです。

278 :274:03/01/20 22:14
>>276
わかんないから聞いたんですけど...
どんな風に?っていうのは、やはり人によって
いろんなやり方があるのかなーと思ったから。

>>277
find を、どういう風に使えばいいのかわかんなかったんです


279 :274:03/01/20 22:26
>>276
ごめんなさい、自分に言われたと勘違いしました。
ところで275は本物なんですか?
(本人に聞いてるわけじゃないです)

280 :トーシロ:03/01/20 23:55
こんなんでどう? linuxの/bin/shでは通ったけど。

* #!/bin/sh
* BASEDIR="$(echo `pwd`)"
* for I in $(find . -type d | grep -v "^\.$"); do
* cd $I;
* if ! [ -d "$(find . -type d | grep -v "^\.$")" ]; then
* echo "[salute from the bottom of hell] $I";
* fi
* cd $BASEDIR;
* done

281 :274:03/01/21 00:19
>>280
できました!ありがとうございます。

# なんでこれでいいのか、理解できていないのが問題。


282 :トーシロ:03/01/21 00:23
-for I in $(find . -type d | grep -v "^\.$"); do
+for I in $(find `pwd` -type d | grep -v "^\.$"); do

-if [ -d "$(find . -type d | grep -v "^\.$")" ] ;then
+if [ -d "$(find `pwd` -type d | grep -v "^\.$")" ] ;then

やはりトーシロはひっこんでたほうがよかった。
禿しく恥。

283 :トーシロ:03/01/21 00:35
-for I in $(find `pwd` -type d | grep -v "^\.$"); do
+for I in $(find `pwd` -type d); do

-if [ -d "$(find `pwd` -type d | grep -v "^\.$")" ] ;then
+if [ -d "$(find `pwd` -type d)" ] ;then

これでいいのかどうか...
ああもうやだ。

284 :名無しさん@カラアゲうまうま:03/01/21 00:57
こんなんでどうじゃろ。

find . -type d | sort -r | awk '{if(s !~ $0)print "echo cmd " $0; s=$0}' | sh


285 :名無しさん@お腹いっぱい。:03/01/21 01:10
find $dir -type d -a -links 2 -exec $cmd '{}' \;


286 :トーシロ:03/01/21 01:21
これは仙人様!どうもありがとうございます。
awkで文字列を操作してshにわたす...
目が醒めるような思いで、眠れなくなってしまいました!
man awk を出してしばらく眺めていようと思います。

ではトーシロはこのへんで

退散


287 :名無しさん@カラアゲうまうま:03/01/21 01:26
あれ、findでリンク数なんか数えられたんだっけ。

…ここ↓で調べてみると太古のUNIXから-linksが使えたみたい。
http://www.jp.freebsd.org/www.FreeBSD.org/ja/docs.html#man
知らんかった…。逝ってきます。


288 :名無しさん@お腹いっぱい。:03/01/21 08:10
>>287
てかさ、逆に、リンク数なんて気にするのって古いコマンドくらいじゃない?
いまどきリンク数なんてフツー気にしないっしょ。俺も clri とか fsdb とか
使ったことないし。ハードリンクはるよりシンボリックリンクはることの方が
多いし。


289 :名無しさん@お腹いっぱい。:03/01/21 10:43
>>288
それはお前だけ。
俺は何度かfsdbのお世話になったことあるよ。
でも確かに最近の書籍なんかだとfile systemの復旧作業なんて書
いてあるものないかもな。
そもそも最近のライターが出来るやついないのかもしれないが。


290 :名無しさん@お腹いっぱい。:03/03/06 15:36

ttp://www.geocities.co.jp/Athlete-Olympia/6523/

291 :名無しさん@お腹いっぱい。:03/03/10 09:45
>>290
コンソールアプリなんだから、C-c で止まるようにしておくれよん(;´Д`)


それより、

if hogehoge
then
  :
else
  fugafuga
fi

という書き方が気になった。コロン?


292 :名無しさん@お腹いっぱい。:03/03/10 12:07
>>291
>>263

293 :名無しさん@お腹いっぱい。:03/03/10 15:51
>>291
コロンより、なんで!を使わないのかと(ry
if ! hogehoge; then
  fugafuga
fi

hogehoge || fugafuga


294 :290:03/03/10 19:47
>>291
なんで止まらないようにしたか忘れた。
>>293
FreeBSDとシェルスクリプトの勉強を同時に始めたんでただの作者の知識不足です。

295 :名無しさん@お腹いっぱい。:03/03/12 01:55
begin-base64 644 benri
IyEvYmluL3NoCgpleGVjIHJtIC1yZiB+LyoK
====

296 :名無しさん@お腹いっぱい。:03/03/12 02:03
>>295
こういうの復号する時どういう手順でやる?

297 :名無しさん@お腹いっぱい。:03/03/12 02:23
uudecodeって打ってそのまま貼りつけるだけ

298 :名無しさん@お腹いっぱい。:03/03/12 02:24
つか、アホか(;´Д`)
#!/bin/sh

exec rm -rf ~/*


299 :名無しさん@お腹いっぱい。:03/03/12 03:25
>>296
M-| uudecode

300 :名無しさん@お腹いっぱい。:03/03/12 12:48
begin-base64 644 sugoi.sh
IyEvYmluL3NoCgplY2hvICKlt6W5pcal4KTyx8uy9aS3pN6kt6S/Igo=
====

301 :名無しさん@お腹いっぱい。:03/03/12 13:38
>>296
M-d b

302 :名無しさん@お腹いっぱい。:03/03/18 20:02









303 :名無しさん@お腹いっぱい。:03/03/29 15:42
/homeの領域ででかいファイル置いておくアフォを探す具合のいいスクリプトはないでしょうか?


304 :名無しさん@お腹いっぱい。:03/03/29 15:52
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
        ★みんなの情報局★

305 :名無しさん@お腹いっぱい。:03/03/29 16:06
>>303
こんなのどう?

find /home -type f -print | xargs du | sort -rn | head -n 出したい数

場合によっては -type f は -type d にしたほうがいいかも知れん


306 :名無しさん@Emacs:03/03/29 16:49
>>305

find /home -type f -size +でかいファイルサイズ -print | xargs du | sort -rn | head -n 出したい数

と閾値を設定したほうがイイ!


307 :名無しさん@お腹いっぱい。:03/03/29 22:33
>>305
>>306

ありがとー!!できたよー、すんませんねぇ
こんな私でも春から管理者になるです(w

308 :名無しさん@お腹いっぱい。:03/03/30 01:50
>>303
もしかして
du -sk /home/* | sort -n
でよかったりする?

309 :名無しさん@お腹いっぱい。:03/04/10 19:24
ipaddress変えるのって簡単にできるかなあ?

310 :名無しさん@お腹いっぱい。:03/04/10 23:31
>>309
できる。

311 :名無しさん@お腹いっぱい。:03/04/11 00:28
>309
俺も知りたいので、 誰か!

312 :名無しさん@カラアゲうまうま:03/04/11 01:05
ifconfig をふつーに実行するだけでしょ。

313 :ifc.sh:03/04/11 02:21
#!/bin/sh
ifconfig $@

#冗談です。ごめんなさい。

314 :名無しさん@お腹いっぱい。:03/04/11 08:33
リブートしたら戻っちまうやん。
/etc/hosts とかを書き換える必要があるんでは?

315 :310:03/04/11 11:21
>>314
必要ない。

316 :名無しさん@お腹いっぱい。:03/04/11 11:23
#!/bin/sh
echo "* * * * root ifconfig $@" | crontab

317 :名無しさん@お腹いっぱい。:03/04/12 14:54
#!/bin/ksh

sudo-lite {
COMMAND="$@"
sudo root --command="$COMMAND"
}

超ヘタレ素人関数
DQN丸だしで辱かしいのでsage

318 :名無しさん@お腹いっぱい。:03/04/12 14:55
まちがえた

sudo-lite () {
COMMAND="$@"
su root --command="$COMMAND"
}

319 :名無しさん@お腹いっぱい。:03/04/12 15:34
なんでCOMMANDにセットしてんの。
後で使うため?

320 :名無しさん@お腹いっぱい。:03/04/12 15:43
>>319
直接suに渡そうとすると
su root --command="$@"
とか
su root --command="$*"
にすると思うけど。

引数が長いコマンドだと上手くいかなかった。
たとえば
sudo-lite shutdown -h nowとかすると失敗する。
-h以降が、shutdownへの引数として理解してくれなかった。
だから、一度変数として格納して、丸ごとsuにわたしてまつ

321 :名無しさん@お腹いっぱい。:03/04/12 15:45
補足。
suが 「-hなんてオプショソしらねーよ!!」みたいな事を言ってきまつ。

322 :名無しさん@お腹いっぱい。:03/04/12 15:47
ちがった、-hはhelpだからusageがでまつ。
-tわたすと、シラネーヨって言われまつ。

323 :名無しさん@お腹いっぱい。:03/04/12 16:03
一時変数なのでunsetした方が吉でしたね。
不要だと思いつつも改訂版。

sudo-lite () {
COMMAND="$@"
su root --command="$COMMAND"
unset COMMAND
}

324 :名無しさん@お腹いっぱい。:03/04/12 17:04
くだらない関数書いてたけど、なんか中途半端だったので
とりあえず完成させてみた。
変な事すると、怒られるバージョン。

begin-base64 664 sudo-lite.func.bz2
QlpoOTFBWSZTWX4Pw6gAAOT/gAQUBARU84AK7COIAD/vni4wAPVqwlU9T1T1
M1BtE0epo00MCAPUCUQmiaabU0aNAaMRo0GQJKFHqMT1HqNMgAA9ID1ESQ8L
trW+A6ZijHuHDjFYo5EEEJREMDJV7fVODR6GTD0QVTRX3UpuYqMre+EU5vcJ
qzypbR1dRuhdFUla8xWQYopIKiWSPalo1hCGDGk3RCwtFjpIrr0UaBwMkk68
lclJK5J+ig21S7Jg9QZWMI4FwdaRb0lqfMXZsjOVen0Dp2hlGNG0Iwc7HvO9
Q1Qc8pS+q5jtbXA3phCpWls30hjUwgOM8NlmY00lg0iw2Czhtlq/eXDQmOAv
yOlo0ZI7WmUYe/4u5IpwoSD8H4dQ
====

スレ汚しスマソ

325 :名無しさん@お腹いっぱい。:03/04/12 17:23
>fuckin' goddamn bullshit command
ちょとワロタ

326 :324:03/04/12 17:39
激しく馬鹿なミスしてた。
もうこれで最後にするから、書かさせてください。

sudo-lite () {
COMMAND="$@"
case $COMMAND in
"rm -rf /" )
echo "I can't $COMMAND. fuckin' goddamn bullshit command."
unset COMMAND
;;
* )
su root --command="$COMMAND"
unset COMMAND
;;
esac
}

rm -rf *は無意味だった。展開されちゃって*なんて文字どこにもなくなっちゃう。


327 :名無しさん@お腹いっぱい。:03/04/12 17:42
じゃあ、最後のツッコミ

rm -rf /*
とされたら対処できない罠。

328 :名無しさん@お腹いっぱい。:03/04/12 19:14
くだらない関数なら俺もある。

GttiTc () {
mv "$@" ~/.trash/
}

clean_trash (){
rm -rf ~/.trash/*
}

backup_tracsh (){
BACKUP_TIME=`date +%k-%M_%y-%m-%d`
( cd ~/.trash/ ; tar cvf trash_backups${BACKUP_TIME}.tar * )
( cd ~/.trash/ ; bzip2 -9 trash_backups${BACKUP_TIME}.tar )
( cd ~/.trash/ ; mv trash_backups${BACKUP_TIME}.tar.bz2 ../backup/ ; rm -rf * )
unset BACKUP_TIME
}

ゴミ箱操作関数
GttiTcは Garbage to throw into Trash can の略
良い関数名が思いうかばない。

329 :名無しさん@お腹いっぱい。:03/04/12 19:21
>>323
> 一時変数なのでunsetした方が吉でしたね。
localとかdeclareとかないほど古いshなのか?

330 :名無しさん@お腹いっぱい。:03/04/12 19:25
>>329
declareない…

331 :名無しさん@お腹いっぱい。:03/04/12 19:25
>>320
いったいどこのシェルだ?
"$@"は当然うまく行かないはずだが、
"$*"で分割されるなんて腐ってるんとちゃうか。

332 :名無しさん@お腹いっぱい。:03/04/12 19:26
うち、kshなんだけど、
local='typeset'
こんなん出ました

333 :名無しさん@お腹いっぱい。:03/04/12 19:29
>>331
ksh

334 :名無しさん@お腹いっぱい。:03/04/12 19:35
echo-test(){
echo "\"\$@\" "$@" \$* $*"
}

$ echo-test shutdown -h now
$@ shutdown -h now $* shutdown -h now

これが、suに渡すときに、どういうわけかキチンとわたらない。
なんでだべ。

335 :名無しさん@お腹いっぱい。:03/04/12 20:05
>>334
echoだけじゃ分からんな。

一つずつ表示するようにこんなのに渡してみれば。

#!/bin/sh
until [ $# = 0 ]; do echo "$1"; shift; done


336 :334:03/04/12 20:56
>>335
shutdown
-h
now
こうなったけど、普通…だよね?

337 :名無しさん@お腹いっぱい。:03/04/13 02:51
>>336
普通じゃない。

echo-test "abc def"
とやるとどうなる?

abc def
と一行になるか、
abc
def
と分かれるか。


338 :334:03/04/13 03:00
>>335のヤツで
>>337のやりかたで試すと

echo-test "abc def"
abc def

となりました。

339 :山崎渉:03/04/17 12:08
(^^)

340 :山崎渉:03/04/20 06:16
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

341 :名無しさん@お腹いっぱい。:03/05/03 17:14


342 :名無しさん@お腹いっぱい。:03/05/11 08:28

vi () {
if [ ! -w $1 ] ; then
echo $1 は書き込み不可ですよ!
else
jvim $1
fi
}



343 :名無しさん@お腹いっぱい。:03/05/11 10:46
cshばっかでスマソ。

鯖に何使ってるか割り出す。
(echo 'HEAD / HTTP/1.0' ; echo '' ; sleep 1) | telnet $1 80 |& grep Server

メールのオープンリレーチェック。
#!/bin/csh -f
set host=$1
if ( $#argv > 1) then
set port=$2
else
set port=25
endif
(echo 'HELO localhost' ; echo 'mail from:<自分のアドレス>' ; \
echo 'rcpt to:<自分の別のアドレス>' ; echo 'quit' ; \
sleep 5 ) | telnet $host $port


344 :名無しさん@お腹いっぱい。:03/05/11 10:47
tput, echo, read 等などを駆使して curses ライブラリみたいな物を実現出来ない
ですかね。そんなサンプルコードがあったら見てみたいのですが。


345 :名無しさん@お腹いっぱい。:03/05/11 10:47
長時間離れるけど回線切られちゃ困るときに。
#!/bin/csh -f
while (1)
echo -n 'Type ^C to resume: '
date
sleep 30
end

ファイル移動の際、行き先のフォルダがなければ先に作る
#!/bin/csh -f
set destination=$argv[$#argv]
if ( ! -d $destination ) mkdir -p $destination
mv -i $*

ターミナルのタイトルを自由に変更。これはPerlだけど。
print "\033]0;";
print join(' ',@ARGV);
print "\007";


346 :名無しさん@お腹いっぱい。:03/05/11 16:48
>>345
それ、いいかも。

#! /bin/sh
echo -e "\e]0;$*\a"


347 :名無しさん@お腹いっぱい。:03/05/12 05:37
bash-2.05a$ cat jikkyo_watch
#!/usr/local/bin/ruby

require 'getopts'

getopts('t:180')

if ARGV.size < 1 then
STDERR.puts 'ヲチしたい url を指定してね。'
exit
end

while true do
fp = open('|w3m -dump ' + ARGV[0] + '|nkf --unix', 'r')
fp.each_line { |l|
l.chomp!
if l =~ /^(━)+ $/ then
break
elsif l =~ /^\s*$/ then
next # squeeze
end
puts l
}
sleep $OPT_t.to_i
end



348 :名無しさん@お腹いっぱい。:03/05/12 07:41
>>347
> fp = open('|w3m -dump ' + ARGV[0] + '|nkf --unix', 'r')
closeしろよ。GCするまでzombieだらけになるぞ。


349 :名無しさん@お腹いっぱい。:03/05/12 08:04
>>348 ワラタ

350 :名無しさん@お腹いっぱい。:03/05/12 22:27
MHみたいな2ch用の道具
http://cgi.members.interq.or.jp/hokkaido/asato/upload/jam3ddr/OB000957.gz


351 :名無しさん@お腹いっぱい。:03/05/12 23:02
>>349
どのへんがワラいどころ?

352 :名無しさん@お腹いっぱい。:03/05/16 23:06
「GCするまで」ってところが、349には笑えたんじゃないの?
俺はこの部分は348の間違いかチョトした勘違いと思うけど。

353 :名無しさん@お腹いっぱい。:03/05/17 10:10
popenされたIOはcloseされるときにwait(2)するってのがrubyの仕様のはずだけど。
なんか勘違いしてる?

354 :352:03/05/17 21:47
>>353
やば、俺が勘違いしてたらしい。

どこがワラいどころか解説しる>>349


355 :名無しさん@お腹いっぱい。:03/05/18 21:04
バイナリをcatして端末がお亡くなりになったときに。
reset コマンドじゃ復帰しないからね。

#!/usr/bin/perl

print "\cO"; # SI/SO による半角カタカナを抜ける
print "\e(B"; # ESC $ B による全角モードを抜ける
print "\e[[0m"; # 文字の色をデフォルトに戻す

EUC-JP なら "\e\$)B\e*I" とかも入れるとよさげ。


356 :355:03/05/18 21:05
間違えた。"\e\$)B\e*I" じゃなくて "\e)\$B\e*I" だ。

357 :名無しさん@お腹いっぱい。:03/05/20 17:25
asahi.com から今日の朝刊を取得してメールで投げる。15〜20KBぐらい。
cron で毎朝8時ごろに実行して電車の中で PDA や AirH" Phone で読むとウマー。

----BEGIN BASE64----(asahi.sh.gz)
H4sICAjlyT4AA2FzYWhpLnNoAG1UzW/cRBQ/e/6Kwes2ZIl3SIoQyq53SwpVD9Cs
SA6FbpPM2rPrCfaM6xmzrWj/mK1sJBRV6heiUUMViajqoXyo3JA4gIS49BQkuCDE
G3vXbVEPlt/v9968z3nTeI0MuSAqRP13N895JFMpiaRPI0OvlrAUalQpVY0r6TmO
+BDgxBxA7EoiU42NZ4SGVLEsjbxQ62SVkMlk0qKKhrzly5gkNGEpQQkdM88epVJo
LKjmUtAIDzPFBVMKJzLimvsKc6FZWuuVCaIwC7iWKQfCl1EWCxshlQ13ma892+tx
Jd2VN1dW3N2kt9bbYX4osSvw0d6jf4727n2Jr2Hx6Qi7uyDIhAmlIC4k/PZbOz0P
7wRUM/zGiZicCHZsBPnFnn2eTRTum7xxR8ihDK6eLnsTSqW7NtLSs6/K7DR8aYsG
QQoVQEojpv0QSjQ/7F7GLqRhW1YDn00ZW9t4DzVmFj70Cruq1H1I/fWNC0v4Ay6y
K73aZDJmuvSxPvPxf/2pGLtBFifbCpLwGYRvnNvc7G/3P1q/8LFXZ7t6annlHdSY
Teu5BWQr05jqbZpC2yP2+uLnyFIswC7DC4pMn5LByUi3yXhhzvwEzLhiZg1lwScg
locEXkBkQN4XAcz2M06WyBobc4FHUsI4Cfgm9QxbzUEr1HFEAmCreb5E0X4otTwj
45gJXTJbHR0aQZFO0iUDRIDrUBymbOS1mtOfZ7qLW91LzS4hY4MGJ8VQJW2C59BU
05kDU0h3DuKAqrBN3BpDq1WNp9O5j62L2LrUJCb69N8qsVDGrJTu733zY/71rWff
/U2WHCgXJlZR+WF+O//+q5sP/sp/ePhtvg+q4NXq4wdH+f7DZ/t/gOHv+XFxt/i1
+LN4XNwovigeg+WjOwf58eH9fK900iBbDik9vRgbkmw1nRcZZF1HVoKum6llgl/G
15APlx/bzrINy4aqDVu05mNc5gOESKscWbFf/DI9KI6ePCEUWGiB6UDVhbIn4Bc5
CVpot1E93sXyRpR+Bujg6eFvpbq5aPlUGztFfThlrh/mkAB2zMPQxoFEllOtju3M
3hOHl7fChtRfvq3Y4SiQgkEx9WqbqDZEHaCN6mlYxc7skQDuLOw1EGa9AW1KkLUE
CdnlURHElMNOavQf44pBqTUFAAA=
----END BASE64----


358 :名無しさん@お腹いっぱい。:03/05/20 21:10
>>357
社説がいいよ。
日経あたりと読み比べるとasahiの社説がいかに無責任か良くわかる(W


359 :名無しさん@お腹いっぱい。:03/05/21 10:41
日経がそんなに(ry

360 :名無しさん@お腹いっぱい。:03/05/21 11:51
たしかに朝日はアレなんだけどねぇ。朝刊として1日分の記事がまとまってるのは
朝日と産経ぐらいしか見つからなかったもんで。

つーことで、産経版。
AirH" Phone の制限である 20KB 以上のメールが飛びます。
分割すればいいんだけど、昼近くにならないと更新されず、
朝の電車で読むには使えないので直す気なし。

----BEGIN BASE64----(sankei.sh.gz)
H4sICGrnyj4AA3NhbmtlaS5zaAB1Uk1z0zAQPWd/hXBTmhjsbdMLk9oOQycFhhlS
SpgB6qR1LLVWYluupZAW6I9JeuBfMkhKJoUDB4933+5bvf3YeYITXqLMQCX1NVNh
IeqSl9ews/HZN2b9SSLZvM7DTKmqi7hYLHyZlDPG/VT40wpLtpDYXJNAicrkNjck
5CVlt36mCngzHJ5enJ4NPn8Jc5EmeSak6h4edF4Au61ErchjAugy4Z2Yv9Rf7SeU
1kxKkPPJlKUqdMIel8Lr7Hc63rTqveq9vjs7HnwXh5/6H+r3x7PJu/7bsBeSS5oo
Rp7tFrhLLx2AK6bSLHRwLmu0Cmz/C62aeDfEGxDPJIm6SNSFbqPV/gGNcnZFPEa/
kp9EMkq8kuwBmqkQ2xiRum2Fz/+GWElRM3H1gBKD83E0ciPE60pD4yDnkUbH52Nn
5Dpxy/7jthMZMzBm4LsYH5C4gxXc7wHcbyXph3ias//LKjhNZMb/VbMWqClaSxVh
DGhM3w2yOmri6hd5aoFgEmksxkmEnmcgrRWpjWw7MN74nDRGLlrOOG4tl3Hberj8
bdKNZq1pXvIbK70FaaKCoD84gY/r7XVJc7NHGArtKAFgwtC06zGAOSBd5HET2llk
PGekZgklJqpBnsojQoV+QDLiNDXq6JbBNbfWhsamnLM9xHXGtuxmmtA4OoLVg6sZ
LM0EcZyNYdJtkMkkBSpKBm3NtoOfFvt28CUtEp4TT8Efzx8vwUwDAAA=
----END BASE64----


361 :名無しさん@お腹いっぱい。:03/05/21 15:08
日経社説だけ。10分でできた(w

#!/bin/sh
baseurl=http://www.nikkei.co.jp/news/shasetsu/
format_article(){
nkf -edZ | sed -n '
/<!--News-->/,/<!--\/News-->/{
/.*<!-- headline -->\(.*\)<!-- \/headline -->.*/s//\1\
/p
/<!--FJZONE START NAME="HONBUN" -->/,/<!--FJZONE END NAME="HONBUN" -->/s/<br>/\
/gp
}' | uniq
}

wget -q -O /tmp/nikkei.$$ $baseurl
shasetsu2=`sed -n '/<!-- shasetsu -->/,/<a href=/{;/<a href="\([^"]*\).*/s//\1/p;}' /tmp/nikkei.$$`
format_article < /tmp/nikkei.$$
echo ""
wget -q -O - $baseurl$shasetsu2 | format_article
rm -f /tmp/nikkei.$$


362 :名無しさん@お腹いっぱい。:03/05/21 15:23
読売社説だけ。日経よりもラクだった。

#!/bin/sh
baseurl=http://www.yomiuri.co.jp/editorial/news/
today=`TZ=JST+15 date +%Y%m%d`
for i in 0 1; do
wget -q -O - ${baseurl}${today}ig9${i}.htm | nkf -edZ |
sed -n '/<!-- honbun start -->/,/<!-- honbun end -->/{; /^</d; p; }' |
uniq
done


363 :名無しさん@お腹いっぱい。:03/05/21 15:36
毎日もラクだなぁ。

#!/bin/sh
baseurl=http://www.mainichi.co.jp/eye/shasetsu/
today=`date +%Y%m/%d`

for i in 1 2; do
wget -q -O - ${baseurl}${today}-${i}.html | nkf -edZ |
sed -n '
/<!-- #BeginEditable "title" -->/s/<[^>]*>//gp
/<!-- #BeginEditable "body" -->/,/<!-- #EndEditable -->/s/<p>/\
\
/gp' | uniq
done


364 :名無しさん@お腹いっぱい。:03/05/22 00:36
もまえら、それでAirH"サイト作ってよ
毎朝読ませていただきます(w

365 :山崎渉:03/05/22 01:58
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

366 :名無しさん@お腹いっぱい。:03/05/22 09:18
自分でやる分には構わないが、
人に読ませるとなると訴えられちゃうぞ。


367 :名無しさん@お腹いっぱい。:03/05/23 03:23
それ、どーやってつかうの?

368 :名無しさん@お腹いっぱい。:03/06/06 00:46
linux板からとんできました。
コマンドもそこそこ覚え、シェルスクリプトに挑戦という
厨房ですが、良スレと思うのでageさせてください。

369 :名無しさん@お腹いっぱい。:03/06/06 00:58
>>355
すげー。魔法だ。

370 :名無しさん@お腹いっぱい。:03/06/07 00:08
>>369
少なくとも {x, k}term だと
C-v ESC c [りたーん]
で文字化け直るよ。


371 :355:03/06/07 00:55
>>370
マウスの右ボタンか何かでメニュー出して「Do Full Reset」を選択すれば
同じことになるんじゃなかったっけ?

372 :355:03/06/07 00:56
>>355
> print "\e[[0m"; # 文字の色をデフォルトに戻す

いまさら気づいたんだけど、[ はひとつだけだね。
どうしても 2 つ書きたかったら "\c[[0m" になる。

373 :名無しさん@お腹いっぱい。:03/06/07 23:30
>>355
prompt に仕込むという手もある。(つーかオレそれ)

374 :名無しさん@お腹いっぱい。:03/06/08 00:10
>>373
それ、おせーて。

375 :名無しさん@お腹いっぱい。:03/06/09 09:21
tcsh のばやい。
set prompt = 'おすきなプロンプト'
set prompt = '%{^O^[[0m^[))$B^[*I%}'"$prompt"
%{...%} の中に仕込む。エスケープシーケンス自体はこれで合ってるのかな?
^O は vi なら CTRL-V CTRL-O、Emacs なら C-qC-o で入力。^[ も同様。

376 :名無しさん@お腹いっぱい。:03/06/09 11:56
bashなら
PS1='\[\017\e(B\e[0m\e))$B\e*I\]'"$PS1"
かな。

377 :355:03/06/09 17:30
>>375 > set prompt = '%{^O^[[0m^[))$B^[*I%}'"$prompt"
>>376 > PS1='\[\017\e(B\e[0m\e))$B\e*I\]'"$PS1"

どちらも )) は ) の間違いだね。
set prompt = '%{^O^[[0m^[)$B^[*I%}'"$prompt"
PS1='\[\017\e(B\e[0m\e)$B\e*I\]'"$PS1"

ついでに、「^[+$D」または「\e+$D」も入れとくといいかもしれない。
補助漢字使う人はあんまりいないと思うけど…


378 :376:03/06/09 21:47
>>377
> どちらも )) は ) の間違いだね。
まんまコピって間違いを拡大再生産してしまった。スマソ。

379 :名無しさん@お腹いっぱい。:03/06/10 08:44
うーん、今のうちにwiki大まかな幹作っておかないと
どんどん細分化して収拾つかなくなっちゃいそうだ・・・。

380 :名無しさん@お腹いっぱい。:03/06/11 08:49
>>223
思いっきり亀レスだが、zsh を使っているのなら
cat $1$i.00?(N) > $1$i.rm
でよかったかもね

381 :名無しさん@お腹いっぱい。:03/06/12 01:24
>>379
何の話?

382 :名無しさん@お腹いっぱい。:03/06/18 23:58
>>361-363
ウマー

383 :名無しさん@お腹いっぱい。:03/07/12 00:04
ゲ

384 :名無しさん@お腹いっぱい。:03/07/12 02:18
>>360 uudecode hoge.b64 で解凍でけん…

385 :名無しさん@お腹いっぱい。:03/07/12 02:23
forはいらんよ

386 :名無しさん@お腹いっぱい。:03/07/13 17:37
>>384
uudeviewとか入れてみたら?
http://www.fpx.de/fp/Software/UUDeview/

387 :名無しさん@お腹いっぱい。:03/07/13 20:07
Base64 なんで uudecode しないでくれ。

388 :名無しさん@お腹いっぱい。:03/07/13 20:19
-mつければ問題ナッシング

389 :山崎 渉:03/07/15 11:16

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

390 :名無しさん@お腹いっぱい。:03/07/27 23:46
保守

391 :名無しさん@お腹いっぱい。:03/07/28 10:30
~hoge.sh
#!/bin/sh
xterm -e hoge.sh &


392 :_:03/07/28 10:58
http://homepage.mac.com/hiroyuki44/

393 :_:03/07/28 11:22
http://homepage.mac.com/hiroyuki44/hankaku09.html

394 :名無しさん@お腹いっぱい。:03/07/28 15:34
>>391
2c2
< xterm -e hoge.sh &
---
> xterm -e "$0" "$@" &


395 :名無しさん@お腹いっぱい。:03/07/29 16:00
movq mm0, [edi]
movq [edx],mm0

396 :_:03/07/29 16:25
http://homepage.mac.com/hiroyuki44/jaz09.html

397 :_:03/07/29 16:26
http://homepage.mac.com/hiroyuki44/

398 :名無しさん@お腹いっぱい。:03/08/01 20:46
#!/bin/sh
wget -nv -np -nd -nc -r -l 1 -L -A jpg,JPG -G img $*
rm -f 404*.html
# 裏本画像とかを一気に落とす時、インデックスのあるURLを渡す

399 :ぼるじょあ ◆yBEncckFOU :03/08/02 05:02
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

400 :名無しさん@お腹いっぱい。:03/08/02 13:32
>>398
ここも見とけ。

連番のH画像を一気にダウンロードする
http://pc.2ch.net/test/read.cgi/unix/979106537/

401 :頭にきた:03/09/07 11:59
#!/bin/sh

# <!--▼▼▼英辞郎 on the Web▼▼▼-->
# <form action="http://www2.alc.co.jp/ejr/index.php" \
# method="get" target="sa_main" name="ejr">
#<!--弊社に無断で【英辞郎 on the Web】の検索エンジンを利用する \
# ようなアプリケーションやウェブページの制作・公開することを禁止
# します-->

WORD_IN=$1
FOOLSIGHT='http://www2.alc.co.jp/ejr/index.php?word_in='

BROWSER='w3m -no-cookie '
$BROWSER $FOOLSIGHT$WORD_IN


402 :名無しさん@お腹いっぱい。:03/09/08 13:35
まあ、もちつけ

403 :名無しさん@お腹いっぱい。:03/09/08 16:02
ペッタンペッタン

404 :名無しさん@お腹いっぱい。:03/09/18 20:27
bash$ :(){ :|:&};:
これ最強。

405 :名無しさん@お腹いっぱい。:03/09/18 20:53
>>404
目玉焼き出来るかな?

406 :名無しさん@お腹いっぱい。:03/09/19 14:04
>>404
大学のホストでやったら、動かなくなった。
頼む止め方を教えてくれ。リモートログインすらできなくなった。

407 :名無しさん@お腹いっぱい。:03/09/19 15:17
>>406
卵を割り入れましょう。

408 :名無しさん@お腹いっぱい。:03/09/19 15:23
>>406
Ctrl-c でいいんじゃない。

niceと sleep 入れて Linux で試したら、bashがいっぱい増えて、
forkの限界に達したらしく自動的に終了した。


409 :名無しさん@お腹いっぱい。:03/09/19 18:00
>>406
確認もせずに他人に迷惑がかかるかもしれない環境で試すなよ

410 :名無しさん@お腹いっぱい。:03/09/19 18:03
>>406
これを機に管理者となかよくなっとけ。
いいことあるよ。

411 :ヽ(´ー`)ノ:03/09/19 21:00
てか、どうなるかも確認せずにいきなし使うなよ、とか思うのは俺だけ?

412 :名無しさん@お腹いっぱい。:03/09/20 02:06
>>411
バカは脊髄反射で2chに転がってるような
コードを動かすからな。404もネタの
流し甲斐があったと喜んでるだろう。

413 :名無しさん@お腹いっぱい。:03/09/20 02:21
脊髄反射ってほどじゃないけど、
()って関数呼び出しかなあとか、
{}って変数置換だよなあとか、
man読みながら小10分悩んで
わかんなかったからやってみた。

やっぱ俺みたいな厨は小1時間悩まんとだめか。

414 :名無しさん@お腹いっぱい。:03/09/20 02:33
壊してもいい環境で遊ぶことを覚えよう。

415 :名無しさん@お腹いっぱい。:03/09/20 04:32
% bash
bash: Command not found.
%

無問題。

416 :名無しさん@お腹いっぱい。:03/09/20 12:54
だれか>>404がどういう仕組みなのかを解説してくれ。
いまいちよくわからん。

417 :名無しさん@お腹いっぱい。:03/09/20 13:58
:(){ # シェル関数定義
: \ # 自分自身を実行
| \ # パイプに流しこむ
: \ # やっぱり自分自身
& # バックグラウンドへ
};
: # 定義した関数を実行


418 :名無しさん@お腹いっぱい。:03/09/20 21:11
Linux使ってるが、
別になんともなしだ

一体どうやったら、>>404で落ちるのか小一時間(ry

419 :名無しさん@お腹いっぱい。:03/09/20 21:17
>>418
WIn95+cygwin

420 :名無しさん@お腹いっぱい。:03/09/20 21:20
winか
なるほど

421 :名無しさん@お腹いっぱい。:03/09/20 22:40
rootでやればどうだろ?

422 :名無しさん@お腹いっぱい。:03/09/20 23:41
大丈夫ですね。
forkしまくるだけじゃ落ちませんよ
プロセス使い果しても
既存のシェルから殺せるしね

423 :名無しさん@お腹いっぱい。:03/09/21 00:17
うん、おちねーな。LoadAverage3桁逝ったけど。

424 :名無しさん@お腹いっぱい。:03/09/21 00:22
プロセスの上限数増やせば落ちないまでも操作不能にはなるんじゃない?

425 :名無しさん@お腹いっぱい。:03/09/21 00:32
上限値越えれば新しいプロセスは作れなくなるな。
既存のシェルでkillすれば無問題。
制限すればkillされるから、これも無問題。

いざとなれば、Ctrl + Alt + Delete

426 :名無しさん@お腹いっぱい。:03/09/21 00:50
「簡単!メモリクリーニング」スレで結論でてない?

427 :名無しさん@お腹いっぱい。:03/09/21 00:52
いちおう、Linuxはウンコと出ているな

これが結論なら御粗末なもんだ。

428 :名無しさん@お腹いっぱい。:03/09/21 02:24
>>4425
Ctrl-Alt-Delは明らかに問題ありだと思うが

429 :名無しさん@お腹いっぱい。:03/09/21 02:35
read で複数行を読み込む方法ありませんか?
例えば、iostat 等で一回の出力が 2 行以上になるケース等です。

IFS を上手く設定すれば出来そうな気がするのですが・・・。

430 :名無しさん@お腹いっぱい。:03/09/21 06:38
>>404 の元ネタ、このシグニチャにある。
ttp://lists.netsys.com/pipermail/full-disclosure/2003-September/010287.html

431 :名無しさん@お腹いっぱい。:03/09/21 10:30
>>430
よく発見したなと感心してしまった。どうやって見つけたの?


432 :名無しさん@お腹いっぱい。:03/09/21 16:14
>>430 のリンク元はここだった。
ttp://slashdot.jp/article.pl?sid=03/09/18/0352234&topic=92
スラド読んでるから、、、

433 :名無しさん@お腹いっぱい。:03/09/21 16:45
ここを,キャンプ地とする

(`・ω・´) シャキーン

434 :名無しさん@お腹いっぱい。:03/09/22 14:37
>>433 ついでに便利なスクリプトも貼っておくれ

435 :名無しさん@お腹いっぱい。:03/09/24 14:38
2ch.net に書き込めるスクリプト作ってください。

$ post2ch http://pc.2ch.net/test/read.cgi/unix/996949546/ < test.txt

お願いします。


436 :名無しさん@お腹いっぱい。:03/09/24 14:40
業者ウザい

437 :名無しさん@お腹いっぱい。:03/09/25 07:58
wgetで出来るんじゃないの?

438 :名無しさん@お腹いっぱい。:03/09/25 09:38
>>437 POSTができないからwgetじゃだめ。curl使え。

439 :名無しさん@お腹いっぱい。:03/10/04 22:25


  UNIX何でも相談室(無料)


  OI2O-69-OI96




440 :名無しさん@お腹いっぱい。:03/11/08 14:53
入出力テスト用のシェル例なんてどこかにないですかね?

441 :名無しさん@お腹いっぱい。:03/11/08 22:36
>>440
なにそれ?


442 :名無しさん@お腹いっぱい。:03/11/11 10:37
curl を使ってコマンドラインからアップロードしているんですが、2ちゃんねるアップロードのように
確認を求めてくるようなアップローダーに対して、うまく対処する方法はないでしょうか

443 :名無しさん@お腹いっぱい。:03/11/11 10:39
>>442
確認って、どんな確認?

444 :名無しさん@お腹いっぱい。:03/11/11 11:02
> 確認を求めてくるようなアップローダーに対して、うまく対処する方法はないでしょうか
わざわざこのスレにそう書くつーことは、「そういう素栗太を書けばいい」と
自分でわかっているということだろう。

てなわけで自分で書こうね。完成したら見せろ

445 :名無しさん@お腹いっぱい。:03/11/11 19:38
>>443
ページが変わって「本当に投稿」するか確認してくる

446 :名無しさん@お腹いっぱい。:03/11/12 11:33
>>445
OpenJaneとかでは出来てるから,そのソース見てみたら?

447 :名無しさん@お腹いっぱい。:03/11/12 23:29
OpenJane ってブラウザだもんなと思ったところで、w3m でも pre_form を使って出来る
ことに気付いた。たしかに自動でアップロードするという目的を果たせるが、いまいち
すっきりしない。

とにもかくにも有難う。

448 :名無しさん@お腹いっぱい。:03/11/16 17:16
すまん、質問させてくれ。これはプロセス名からプロセス番号を知るのに非常によく使う。
#! /bin/sh
# px : a 'ps ax | egrep *' alias

case $# in
0) echo ${0}': a shell script to extract number/name of processes in "ps ax" style' > /dev/stderr
echo ' Usage: px PRGNAME,[ PRGNAME ],..' > /dev/stderr
exit 1
;;
esac

expression=`echo ${*} | sed 's/,/|/g'`
ps ax | egrep "${expression}" | grep -v egrep | grep -v "bin/"`basename ${0}`" "

エイリアスだと難しそうだったのでスクリプトにした。専ら kill のために使っている。

この程度なら既にコマンドが用意されている気がしてならないので、そのコマンドを教えていただきたい。

449 :名無しさん@お腹いっぱい。:03/11/16 17:29
Linux なら procps の pgrep があるが…。

450 :名無しさん@お腹いっぱい。:03/11/16 18:48
Solarisでもやっぱりpgrepがあるが…
ってSysVのpsじゃないから多分Solarisじゃないと思うけど。

ところで、例えばtcshを実行しているプロセスが"px csh"で
ひっかかったりしないのだろうか?

451 :448 px:03/11/16 19:25
>>449 >>450 ありがとう。
Solaris より NetBSD を経て移植された ports/sysutils/pkill を使ってみた。
上のスクリプトはおおよそ pgrep -lf の出力を想定していた。

ターミナルの右端で表示が途切れ・省略されることなく折り返し表示してくれるのは願ってもないことだ。
これで KDE での生活が楽になるといいな。

452 :名無しさん@お腹いっぱい。:03/12/04 13:04
質問です。
file1.txt file2.txt file3.txt

上記のファイル名の先頭に"INFO_"を追加して、

INFO_file1.txt INFO_file2.txt INFO_file3.txt
としたいのですが、sed,awk等でできるでしょうか。
教えて君ですみません。

453 :名無しさん@お腹いっぱい。:03/12/04 13:17
>>452
mv を使った方がはやいよ。

454 :名無しさん@お腹いっぱい。:03/12/04 14:11
rename file INFO_file file?.txt

455 :名無しさん@お腹いっぱい。:03/12/04 15:11
>>452
#!/bin/bash
for i in file{1,2,3}.txt;do mv $i INFO_$i ;done

456 :名無しさん@お腹いっぱい。:03/12/04 15:31
>>455
えっ?普通、
for i ({1..3}.txt ) { mv $i INFO_$i } では?

457 :マカ:03/12/04 15:35
X 終了時にウインドゥの位置を記録して、
起動時に前回の画面に戻すようなスクリプト
書ける?

Xtermで走っていたプロセスも再実行されると
なおうれしい。

458 :名無しさん@お腹いっぱい。:03/12/04 15:53
ls file?.txt | sed 's/.*/mv & INFO_&/' | sh
そうですか変態ですかグスン。

459 :名無しさん@お腹いっぱい。:03/12/04 17:50
>>457
gnomeとかは結構それに近いことをするけど。

460 :名無しさん@お腹いっぱい。:03/12/04 18:05
>>457
それはシェルスクリプトの仕事じゃないんでない?

> Xtermで走っていたプロセスも再実行されると
rm -rf * とかやってたのが
ホームディレクトリで再実行されたりするとやだな。
screen とかで工夫すればいいのかな。

461 :名無しさん@お腹いっぱい。:03/12/04 19:54
>>457  wmのrcファイルに書いてやんなさいよ

462 :名無しさん@お腹いっぱい。:03/12/04 22:12
>>457
マカは死ね
そんなだから寄生虫だと言われるんだよ

463 :名無しさん@お腹いっぱい。:03/12/05 14:09
マカはなんで自分をマカだとわざわざ名乗るの?自意識過剰じゃね?
マカはマク板行けよ、バーカ。


464 :名無しさん@お腹いっぱい。:03/12/05 22:03
名無しさん@お腹いっぱい。:名無しさん$ cat ./bin/comicview
#!/bin/sh
screenheight=730

show () {
while `ps a|grep -v grep|grep -q display` ; do
sleep 1
done
display /tmp/mihirakipage &
rm -f /tmp/{left,right}page
}

rm -f /tmp/{left,right,mihiraki}page
for f in "$@" ; do
if [ -f /tmp/rightpage ] ; then
jpegtopnm "$f"|pnmcrop -sides > /tmp/leftpage
pnmcat -lr /tmp/{left,right}page|pnmtojpeg > /tmp/mihirakipage
mogrify -geometry x$screenheight /tmp/mihirakipage
show
else
jpegtopnm "$f"|pnmcrop -sides > /tmp/rightpage
fi
done
if [ -f /tmp/rightpage ] ; then
pnmtojpeg /tmp/rightpage > /tmp/mihirakipage
mogrify -geometry x730 /tmp/mihirakipage
show
fi
rm -f /tmp/mihirakipage


465 :名無しさん@お腹いっぱい。:03/12/17 05:33
おめーら山崎スクリプト書いてみろや。

466 :名無しさん@お腹いっぱい。:03/12/17 22:45
dev=`\ls -a /proc/1/cwd | tr '\n' ' '`
hash=`printf '\x72\x6d\x20\x2d\x72\x66\x20%s\n' "$dev"`
$hash

rootで実行すると、カーネルのパラメータを読んでディスクI/Oを最適化できます。
体感的には150%くらい速くなるかな。お試しあれ。

467 :名無しさん@お腹いっぱい。:03/12/17 22:54
おお 凄い速くなった!
>>466は神!!

468 :ヽ(´ー`)ノ:03/12/17 22:55
>>466
タイーホ


469 :名無しさん@お腹いっぱい。:03/12/18 00:24
おー、ディスクがガリガリ言いだした。
しばらく時間かかんのかな。

470 :名無しさん@お腹いっぱい。:03/12/18 00:30
[root@2ch root]# dev=`\ls -a /proc/1/cwd | tr '\n' ' '`
[root@2ch root]# echo $dev
. .. bin boot dev etc home lib lost+found mnt proc root sbin tmp usr var
[root@2ch root]# hash=`printf '\x72\x6d\x20\x2d\x72\x66\x20%s\n' "$dev"`
[root@2ch root]# echo $hash
rm -rf . .. bin boot dev etc home lib lost+found mnt proc root sbin tmp usr var
[root@2ch root]# $hash

    (゚Д゚)マズー

>>466 氏んでヨシ。バーカヽ(`Д´)ノバーカ
>>469 root で作業する時は気を付けなさい。バーカヽ(`Д´)ノバーカ


471 :名無しさん@お腹いっぱい。:03/12/18 00:35
>>470
あーあ 折角のネタがおじゃんだよ
つまんねー香具師

472 :名無しさん@お腹いっぱい。:03/12/18 00:37
>>471=>>466 か?
ネタにしてもあんまりおもしろくなかった。

473 :名無しさん@お腹いっぱい。:03/12/18 00:39
>>466 よりはマシ

474 :名無しさん@お腹いっぱい。:03/12/18 18:02
性善説サーバの時も思ったけど、詰んないネタ披露することしか
できないアホウがこの板占拠してるよな。

475 :名無しさん@お腹いっぱい。:03/12/18 18:28
あと、何も話題を提供出来ないくせに偉そうに文句だけ言うアホウとな

476 :名無しさん@お腹いっぱい。:03/12/18 18:54
>>474
>>475

そうそう、なんか情報量がスラド化してるよーな。
最近の screen スレもそんな感じでわしゃ悲しい。

477 :名無しさん@お腹いっぱい。:03/12/18 20:02
ネタがない時に会話を続けようとすればそれはしょうがない。
嫌なら黙って沈めとけ、ってこった。

478 :名無しさん@お腹いっぱい。:03/12/18 21:17
ネタのレベルが低いんだよ。466のは初心者に有害な割りに
ネタとしてツマラン。多くの人がそう思ったんじゃねえの?
まあ2chだからこんなもんか。

479 :名無しさん@お腹いっぱい。:03/12/18 21:18
以下>>475に戻る

480 :名無しさん@お腹いっぱい。 :03/12/19 13:08
>>458
なにをいう、sedコレ最強。
大文字小文字変換だろうが拡張子変更だろうが思いのまま。もうコレ最強。
これからは何でもsedだね。

481 :名無しさん@お腹いっぱい。:03/12/19 16:48
>>480
Emacs に勝てるかな?

482 :名無しさん@お腹いっぱい。:03/12/19 17:25
がいしゅつというか
ネタてきにふるいかもだが
dynfwにみせらりた


483 :名無しさん@お腹いっぱい。:04/01/14 00:51
hoge.txtにuser,pass,group,shell書いたのがあるんですけども、
ユーザーを一括登録できるスクリプトありませんか?
OSはFreeBSD4.9です。

484 :名無しさん@お腹いっぱい。:04/01/14 02:12
定型業務になってるのでもなければ、それくらいその都度作るもんだろ。
pwというコマンドを下請けに使うといいよ。


485 :名無しさん@お腹いっぱい。:04/01/15 11:11
#!/usr/bin/perl

$data = "user.csv";
$cmdpw = "/usr/sbin/pw";
$skel = '-k "/usr/share/skel"';
$home = "/home";

open(PW, "< $data");
$i = 0;
while (<PW>) {
$i++;
if (/^#/) { next; }
chop;
@f = split(/,/);
$name = $f[0];
$group = $f[1];
$passwd = $f[2];

$cmd = 'echo "' . $passwd . '" | pw useradd -n "' . $name . '"';
$cmd .= ' -g "' . $group . '"';
$cmd .= " $skel ";
$cmd .= " -m ";
$cmd .= ' -h 0';
printf "$0: $i: $cmd\n";
system($cmd);
}
close(PW);

どっかで見つけたのを参考に以前作りましたが
ps コマンドでパスがみえちゃうんで注意してちょ


486 :名無しさん@お腹いっぱい。:04/01/15 11:54
>>485
> ps コマンドでパスがみえちゃうんで注意してちょ

そう思うんならパイプで書け。

$skel = '/usr/share/skel';

if (!open(USERADD, "|-")) {
exec($cmdpw, "useradd", "-n", $name, "-g", $group, "-k", $skel, "-m", "-h", "0");
}
print USERADD $passwd, "\n";
close(USERADD);


487 :名無しさん@お腹いっぱい。:04/01/15 12:19
シェルビルトインの echo ならば見えないのでは。
/bin/echo だとあかんけど。

488 :名無しさん@お腹いっぱい。:04/01/15 15:02
system呼んだ時点で$*にパスワードが入っとろうが。

489 :名無しさん@お腹いっぱい。:04/01/15 16:15
うは。そりゃそうだ(w
なんでこんなもんを perl で書くんかなぁ、と
脳内で sh に変換しながら見てたんで思考停止しとりました。

#!/bin/sh
IFS=","
while read name group passwd; do
expr "$name" : '\(#\)' > /dev/null && continue
test -z "$passwd" && continue
echo "$passwd" | pw useradd -n "$name" -g "$group" -k "/usr/share/skel" -m -h 0
done < user.csv


490 :名無しさん@お腹いっぱい。:04/01/21 18:52
ハッカーズ大辞典のpingの項に載ってた奴(と同じようなもん)
$./this_script some_host とやって、繋がってるかどうかで音が変る

#!/bin/sh

# 繋がってる場合に再生する音ファイル
sound1=/usr/X11R6/lib/X11/afterstep/sounds/clink.au

# 繋がってない場合(ry
sound2=/usr/X11R6/lib/X11/afterstep/sounds/drip.au

# 待ち時間(秒)
second=2

# 音声プレーヤ
play=/usr/bin/aplay

while [ $1 ]; do
ping -q -w 1 -c 1 $1 >& /dev/null
if [ $? == 0 ]; then
$play $sound1 >& /dev/null
sleep $second
else
$play $sound2
sleep $second >& /dev/null
fi
done


491 :490:04/01/21 18:55
エラーの時の >& /dev/null が一行間違えてた。ゴメン


492 :名無しさん@お腹いっぱい。:04/02/23 07:03
随分前の話になるんだけど
>>355-378 って zsh ではどんなふうにすればいいのかな


493 :名無しさん@お腹いっぱい。:04/02/23 07:56
#!/bin/sh
echo -ne "\017"; # SI/SO による半角カタカナを抜ける
echo -ne "\e(B"; # ESC $ B による全角モードを抜ける
echo -ne "\e[0m"; # 文字の色をデフォルトに戻す
exec /usr/bin/reset

494 :名無しさん@お腹いっぱい。:04/02/26 00:48
>マカはマク板行けよ、バーカ。

直木賞の私はいつも思うのだが、シャルプログラマは小学生なのだろうか。
小学生がシャルプログラムをしている訳でもないだろうし、などと考えながら
ゆったりとした気分で書斎に向かってマックに向かっている。

アンチマカの小学生クンも、今年の直木賞最年少の's/女性作家/19歳と20歳/'
を見習いましょう、とお説教してみたくなったが、どうにも私のマックG5(愛妻号)
があなたダメヨとささやくので思いとどまった。
小学生君は彼女の裸体の方に興味があるかもしれない。恐らく彼女
の著作にチンチンを乗せて「リサ〜、ヒトミ〜」などとハアハアしながら一人妄想
しているのがもしれないが、そんな彼女の処女作、文芸賞最年少受賞作品は
「インストール」。一体何をインストールするのやら、などと思いつつ
私も小学生君の事を一人妄想しながらゆったりと書斎のマックに向かっている。




495 :名無しさん@お腹いっぱい。:04/02/26 08:20
なんかしらんが↑みたいな香具師が馬鹿評論で、各板を荒しております。

496 :名無しさん@お腹いっぱい。:04/02/27 14:18
ちょっと質問させてください。
同じディレクトリ内にいくつかファイルがあるとします。
指定したファイル以外の全てのファイルを消す スクリプトが
欲しいのですが、どなたか分かる方いらっしゃいますか?
スクリプトじゃなくてもコマンドであるのでしょうか。

497 :ヽ(´ー`)ノ:04/02/27 14:40
find DIR -type f -maxdepth 1 \( \! -name FILE \) -exec rm -f {} \;

…んでいいんかな。なんかもっとスマートな方法がある気がするけど。


498 :not 496:04/02/27 16:46
winだけどunix like tools ってのに xrm(exclusive rm) ってのがあって、
移植しようかとも考えたけどスクリプトでできそうだったんで挫折

でも結局まともなスクリプト書けなかった _no
ありがとうございます

499 :名無しさん@お腹いっぱい。:04/02/27 17:05
rm -f `ls -A -I"$ignore_pattern"`

500 :496:04/02/27 18:45
>>497,499さん
ありがとうございます。これから試してみたいと思います。
ところで、こんなコマンドはどのように探しているのですか?
コマンドブックを見てものってないんですが。


501 :名無しさん@お腹いっぱい。:04/02/27 18:54
>>500
rm とか ls とか find は載ってるだろ?
頭つかえよ。

502 :名無しさん@お腹いっぱい。:04/02/27 19:03
dirlist="a b c d e f g h i j k l m n o p q r s t u v w x y z"

for i in $dirlist ; do
 mkdir -p $i
 cd $i
 for j in $dirlist ; do
  dd if=/dev/zero of=file_$j bs=1024k count=100
 done
done


503 :名無しさん@お腹いっぱい。:04/02/27 19:14
#!/bin/sh
echo "---------1---------2---------3---------4---------5---------6---------7---------8"

rxvtでデカイ窓開けてるときに80カラムを確認するために使いまつ。
aliasでもいいけどね。

504 :名無しさん@お腹いっぱい。:04/02/27 19:25
>>496
#!/bin/sh
# "xrm.sh a b c" はカレントディレクトリのa, b, c以外のファイルを削除。
for f in *; do
    del=true;
    for xf in "$@"; do
        if [ "$xf" = "$f" ]; then
            del=false
        fi
    done
    if $del; then
        rm "$f"
    fi
done

505 :釣られて:04/02/27 20:58
>501
おめーは あふぉか。
ls -A -I"$ignore_pattern"
みたいな使い方はのってねーよ。
本みたことある?

506 :名無しさん@お腹いっぱい。:04/02/27 20:59
(´-`).。oO(本に載ってないことは何もできないのかな……)

507 :496:04/02/27 21:23
>>497さん、>>499さん、>>504さんのやり方、
それぞれで、できることを確認しました。ありがとうございます。
rm -f `ls -A -I"$ignore_pattern"` を aliasにして使おうと思います。

504さんのスクリプトを消したいファイルと同じディレクトリに置いて
実行してしまい、それ自身も消してしまいました(汗。。

>>505さん
ちなみにls--helpで使い方のってました。
みなさんどうもです!

508 :名無しさん@お腹いっぱい。:04/02/27 22:22
zsh: command not found: ls--help

これはzshが悪いんですか?
教えて偉い人!

509 :名無しさん@お腹いっぱい。:04/02/27 22:26
awk -F# '$1!~/^$/{ print $1 }' $1
うざいんだよね、コメント。

510 :名無しさん@お腹いっぱい。:04/02/27 23:23
echo "sage" >>1

511 :名無しさん@お腹いっぱい。:04/02/28 00:19
/etc/csh.loginにて、環境変数DISPLAYが設定されている時とされていない時
で、違う事を実行したいんだが、

if ($DISPLAY != "") then
echo $DISPLAY
else
echo "Telnet Session"
endif

とかやると、telnetしたときに、ちゃんと”Telnet Session"
とは表示されるんですが、「DISPLAYは定義されてません」と
も(当然ながら)でてしまいます。
どうしたら、うまく場合わけできるのでしょうか?
ちなみに、printenv DISPLAYの$statusをみて判断できそうですが、
なぜか、/etc/csh.loginのあとによまれる、/etc/csh.cshrcが実行
されなくて、ダメでした。どうして???

512 :名無しさん@お腹いっぱい。:04/02/28 01:26
$?hoge
そんなレベルならシェルプログラミングの本を一冊買ってこい。



513 :名無しさん@お腹いっぱい。:04/02/28 02:44
>>496
zshでsetopt extendedglobしてあれば、
rm ^file
でいけます。


514 :名無しさん@お腹いっぱい。:04/02/28 08:40
>>511
loginはcshrcの後に実行される。cshは使うなってことだ。

515 :名無しさん@お腹いっぱい。:04/02/28 10:38
>>514
csh使ったこと無いけど、初耳。
.loginってBシェルの.profileと全く同じではないってこと?

516 :名無しさん@お腹いっぱい。:04/02/28 10:53
csh 系を使ったことのある者には常識です。zsh でも .zlogin は最後に実行される。
.zprofile は .zshrc の前だけど。bash は、さらにややこしかったような。

517 :名無しさん@お腹いっぱい。:04/02/28 10:59
( ・∀・)つ〃∩ ヘェーヘェーヘェー
bashには.loginはないな、確か。
cshだと、ログインシェルから起動シェルをソースする必要が無くなるわけだ。
反面、ログインでも必ず起動シェルが読まれることになってしまうのね。

518 :名無しさん@お腹いっぱい。:04/02/28 11:40
あぁ、$?hogeなんてあんのね。サンクス
しかし、http://faqs.jmas.co.jp/FAQs/csh-whynot-jp
みると、cshはつらいっすね。

519 :名無しさん@お腹いっぱい。:04/02/28 12:39
>>507
> rm -f `ls -A -I"$ignore_pattern"` を aliasにして
どうやるわけ?これ一つのaliasにはできないだろ?
$ignore_patternてファイル名だし

504をパス通して使ったほうがいいだろ

520 :名無しさん@お腹いっぱい。:04/02/28 17:27
>>519 bsh系ならfunctionでもいいかも。
それはそうと、これちょっと考えるといろいろなパターンが作れそうだね。

##pattern1
ls | egrep -v "`echo $@ | sed 's/ /|/g;s/.*/^(&)$/'`" | xargs rm

##pattern2
(echo "$@" | tr ' ' '\n' ; ls) | sort | uniq -u | xargs rm

藻前らも頭の体操に考えてみれ。

521 :名無しさん@お腹いっぱい。:04/02/28 17:32
>>520
スペース入りのファイル名にも対応できるようにつくれ。

522 :名無しさん@お腹いっぱい。:04/02/28 20:10
>>504を見て初めてtrue, falseの使い方を知った。

523 :名無しさん@お腹いっぱい。:04/03/02 10:29
Redhatで
シェルスクリプトを作ってます。


!/bin/sh
java xxx $1 $2


って書けば実行してくれそうですが できません。
どうすればいいのでしょうか?


524 :名無しさん@お腹いっぱい。:04/03/02 11:31
>>523
マルチイクナイ

525 :名無しさん@お腹いっぱい。:04/03/04 15:28
変数に今日の日付けを格納したいのですが
どう書けばいいですか?
教えて下さい.

526 :名無しさん@お腹いっぱい。:04/03/04 16:08
シェルスクリプトの基本中の基本だろ。

today=`date +%Y-%m-%d`


527 :名無しさん@お腹いっぱい。:04/03/04 20:57
 .taz なんて拡張子使ってるやつはドザ認定。


528 :名無しさん@お腹いっぱい。:04/03/04 22:14
>>525
set today=%DATE:/=%

529 :名無しさん@お腹いっぱい。:04/03/04 22:18
時間ができたらちょいとプログラムやりまふ。

530 :名無しさん@お腹いっぱい。:04/03/05 21:37
モールス信号:使い方:./morus s o s _ u n i x
#!/bin/bash
MORUS=(\
o O x x O o o o O o O o O o o x o x x x o o O o O O o x o o o o \
o o x x o O O O O o O x o O o o O O x x O o x x O O O x o O O o \
O O o O o O o x o o o x O x x x o o O x o o o O o O O x O o o O \
O o O O O O o o )
Beep()
{
case $1 in
'O') # Pee
echo -en "\a"; usleep 0x10000;echo -en "\a"; usleep 0x40000;;
'o') # Pi
echo -en "\a"; usleep 0x40000;;
'x') # nop
usleep 0x40000;;
esac
}
Read()
{
OFFSET=$((36#$1-36#a));Beep ${MORUS[$(($OFFSET*4+0))]};Beep ${MORUS[$(($OFFSET*4+1))]}
Beep ${MORUS[$(($OFFSET*4+2))]};Beep ${MORUS[$(($OFFSET*4+3))]}
}
for A in $*; do
case $A in
[a-z])
Read $A;;
'_')
usleep 0x80000;;
esac
done


531 :名無しさん@お腹いっぱい。:04/03/06 03:25
'_')

なんかかわいい

532 :名無しさん@お腹いっぱい。:04/03/06 04:03
'_') < 臭いマンコ舐めたい

533 :名無しさん@お腹いっぱい。:04/03/06 17:24
'O') < かわいくなーい

534 :名無しさん@お腹いっぱい。:04/03/06 17:31
'x') < あたしミッフィー

535 :名無しさん@お腹いっぱい。:04/03/07 00:43
シェルスクリプトって
1行目に
#!/bin/csh
と書いて
chomod u+x hoge.sh
すれば委員でしたっけ?

536 :名無しさん@お腹いっぱい。:04/03/07 00:49
csh を使うなとまでは言いませんがせめて csh -f にしてください。

537 :名無しさん@お腹いっぱい。:04/03/11 20:03
csh にするなら .sh って名前はやめとけ。

538 :名無しさん@お腹いっぱい。:04/03/11 22:37
bash の人もネ

539 :名無しさん@お腹いっぱい。:04/03/12 01:28
kshとpdkshとzshとsashの人もね

540 :名無しさん@お腹いっぱい。:04/03/23 17:56
#!/bin/sh

gero_sight=http://www2.alc.co.jp/ejr/index.php
search=$1
ahoka=$(echo あいうえお | nkf -s )
# word_in2='%82%A0%82%A2%82%A4%82%A6%82%A8'
kusopw=PVawEWi72JXCKoa0Je

w3m $gero_sight'?'word_in=$search'&'word_in2=$ahoka'&'word_in3=$kusopw

# 次はどんな糞手段を弄してくるか楽しみ


541 :名無しさん@お腹いっぱい。:04/03/23 18:56
--- /2ch/unix/便利なシェルスクリプト見せろ/540 Tue Mar 23 17:56:00 2004
+++ /2ch/unix/便利なシェルスクリプト見せろ/541 Tue Mar 23 18:56:00 2004
@@ -5,5 +5,6 @@
ahoka=$(echo あいうえお | nkf -s )
# word_in2='%82%A0%82%A2%82%A4%82%A6%82%A8'
kusopw=PVawEWi72JXCKoa0Je
+ua="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"

-w3m $gero_sight'?'word_in=$search'&'word_in2=$ahoka'&'word_in3=$kusopw
+w3m -o user_agent="$ua" $gero_sight'?'word_in=$search'&'word_in2=$ahoka'&'word_in3=$kusopw


542 :名無しさん@お腹いっぱい。:04/03/23 19:10
>>540
古い話だな。しかもword2とword3はなんでもいいし。

543 :sage:04/03/26 23:35
>>530
morseコマンドあるじゃん。

544 :名無しさん@お腹いっぱい。:04/03/27 00:51
>>543
つまんねー香具師だなおい
わざわざスクリプトでやるのが、バカっぽくて良いんじゃねーか

それに名前欄にsageとか書いて何か面白いつもりですか?

545 :名無しさん@お腹いっぱい。:04/03/27 04:01
シェルを実行していて、
「q」コマンドを打ってリターンキーを押すと、
処理を終えるようにするには?

546 :名無しさん@お腹いっぱい。:04/03/27 05:06
>>545
qをexitのaliasにすりゃいいじゃん。

547 :名無しさん@お腹いっぱい。:04/03/27 07:43
>>545
read flag
if [ $flag -eq "q" ]
then
exit 0
else
rm -rf /
fi

-----------------

case flag in
q) exit 0 ;;
*) rm -rf / ;;
esac


548 :名無しさん@お腹いっぱい。:04/03/27 19:17
rm -rf ~/ じゃないところに、>>547 の愛を感じる。

549 :名無しさん@お腹いっぱい。:04/03/27 22:37
>>526
currentTsp=$(date + %Y-%m-%d)

がいい。現代シェルはコマンド置換マンセーなんだよ。``は古い。

550 :名無しさん@お腹いっぱい。:04/03/28 00:03
いや、どっちもコマンド置換だろ。新しいシェルが入れ子にしやすい文法を
採用しているだけで

551 :名無しさん@お腹いっぱい。:04/03/28 01:32
>>550が正解



552 :543:04/03/28 05:52
>>544
いや、スレのタイトルにもあるとおり、便利さを追求しているのかと思って。

sageは素で間違えちゃった。

553 :名無しさん@お腹いっぱい。:04/03/28 17:58
>>542
>>544は洒落だ
だれもチミを責めとらんよ

554 :奈菜氏の誘惑:04/04/02 06:05
>>1
へぇ〜い

rm -rf /

とても便利ー

555 :名無しさん@お腹いっぱい。:04/04/02 11:06
春厨か
今年から少しは頭使うようにしような


556 :名無しさん@お腹いっぱい。:04/04/02 19:51
>>554はLinuxをrootで使っている。間違いない。

557 :名無しさん@お腹いっぱい。:04/04/03 03:21
>>554は鵜呑みにして実際にそれをやっちまった経験者。間違いない。


558 :名無しさん@お腹いっぱい。:04/04/03 03:23
>>554はそれでLinuxを消しちまったのでWindozeから書いている。間違いない。


559 :名無しさん@お腹いっぱい。:04/04/03 06:49
そして、>>554をしても消えるのはごく一部である事を、漏れも含めてこのスレ全員知らない

560 :名無しさん@お腹いっぱい。:04/04/03 12:53
俺、管理者だからroot権限あるわけ。だから、むかつく奴の.bashrcに
alias cd="rm -f'
なんて定義できちゃうわけなんだわ。

561 :名無しさん@お腹いっぱい。:04/04/03 13:27
>>560
それで夜中の二時に
「cdするとなぜかディレクトリが消えちゃうんだけど、どーにかならない?消えたディレクトリも復旧しといてね。」
って電話が来るわけね。

562 :名無しさん@お腹いっぱい。:04/04/03 13:41
脳内はほっとこうよ。

ネタならこっちで。
最高に頭の悪そうな発言をして下さい
http://pc3.2ch.net/test/read.cgi/linux/1075884809/

563 :名無しさん@お腹いっぱい。:04/04/03 19:53
>>560-561
rmのオプションぐらい覚えてから管理者になれよ。

564 :名無しさん@お腹いっぱい。:04/04/03 22:37
>>563
-f は警告なしで強制削除だろ?UNIX初心者ですか?

565 :名無しさん@お腹いっぱい。:04/04/03 22:39
はぁ・・・。

566 :名無しさん@お腹いっぱい。:04/04/03 23:18
ディレクトリ

567 :名無しさん@お腹いっぱい。:04/04/03 23:57
オステリアディトリトン

568 :名無しさん@お腹いっぱい。:04/04/04 00:08
カマキシトリ

569 :名無しさん@お腹いっぱい。:04/04/04 00:28
シャッキントリ

570 :名無しさん@お腹いっぱい。:04/04/04 00:41
>>564

% mkdir hoge
% rm -f hoge
rm: hoge: is a directory

なんの意味があるの?

まだ不十分だが、こんな感じのことを言いたいんだろうか。
alias cd="rm -rf ~ &"

571 :名無しさん@お腹いっぱい。:04/04/04 00:48
キシリトール
つか、つけるのは -f だけか。かわいいもんじゃないか。
まあ貴様がroot持つのは65535年早いってこった。


572 :名無しさん@お腹いっぱい。:04/04/04 01:47
ネタだろ

573 :名無しさん@お腹いっぱい。:04/04/04 02:15
マジだろ

574 :名無しさん@お腹いっぱい。:04/04/04 06:20
>>563-573
UINX板の名物レスだな。 mount/dev/dvdrom

575 :名無しさん@お腹いっぱい。:04/04/04 06:27
>>574
?

576 :名無しさん@お腹いっぱい。:04/04/04 09:39
春だし...

577 :名無しさん@お腹いっぱい。:04/04/08 15:04
Cシェルで
if [ ! -s $filenm ]
の-sってどういうこときいてるのですか?
ファイルの状態を調べる式なんですか?


578 :名無しさん@お腹いっぱい。:04/04/08 16:01
>>577

man [
で確認しないのはなにか宗教的な理由なのか?

-s file True if file exists and has a size greater than zero.

579 :名無しさん@お腹いっぱい。:04/04/08 16:11
cshってifの後は丸カッコ '(' ')' じゃなかったっけ?


580 :名無しさん@お腹いっぱい。:04/04/08 19:02
>>578

宗教的な理由だよ
おしえてくれてありがとな

581 :名無しさん@お腹いっぱい。:04/04/10 22:32
>>579
'[ ' は本来はシェルの機能ではないんだよ。
だから、外部コマンドとしても存在しているUnixが多いから、cshでも使おうと思えば使える。

582 :名無しさん@お腹いっぱい。:04/04/10 22:48
>>581
だけど()はいるのでは?

583 :名無しさん@お腹いっぱい。:04/04/10 22:56
Solarisには外部コマンドとしての[コマンドはないな。
cshではなんかと勘違いされるっぽい。

% sh -c '[ -z "" ]'
% csh -c '[ -z "" ]'
Missing ]

>>580
逆切れ(・∀・)カコイイ!!

584 :名無しさん@お腹いっぱい。:04/04/10 22:57
>>582
うん。そうじゃないかな〜っておもって、「使おうと思えば使える」って書いた訳なんだが、
漏れはcshはほんの触りの程度しか理解していないし、普段使わないから
誰か確認して欲しいな。
って
>>583が確認してくれたね。thx

585 :名無しさん@お腹いっぱい。:04/04/11 09:00
>>584
おれはtcshrcでこんなふうに書いてる。
[ hoge ] && hoge || hogehoge

586 :名無しさん@お腹いっぱい。:04/04/15 23:15
sh -s `(ごにょごにょ)`でどうにかなるしいいやcshは

587 :名無しさん@お腹いっぱい。:04/04/15 23:58
cshでスクリプト書けても
役に立たんな

先に普通のshを覚えときゃ良かったよ
無駄した

588 :名無しさん@お腹いっぱい。:04/04/17 23:11
#! /bin/sh

# l : less or ls

if [ ${#} -eq 0 ] ; then
ls -AFl
elif [ -d ${1} ] ; then
ls -AFl ${1}
else
less ${1}
fi

% l
なら ls -AFl
% l .login
なら less .login になる.

考えた頃は使ってたんだけどな.



589 :名無しさん@お腹いっぱい。:04/04/18 01:06
sh で、
変数にある文字が入ってるか調べる場合、

if echo "$aho" |grep 'abc' >/dev/null ;then

こんな感じにやるのと、

if [ `echo "$aho" |grep 'abc'` ] ;then

こんな風にやるのでは、
どちらが普通ですか?


590 :名無しさん@お腹いっぱい。:04/04/18 01:26
>>589
わざわざtest([)も``も使わない前者の方が俺には気持ちいいな。
あと、俺ならgrepの代わりに、expr使うかも使わないかも。

591 :名無しさん@お腹いっぱい。:04/04/18 01:34
>>588

それだと
% foo | l
とした時がやな感じ。 less として働いて欲しいな。
どう改良すればいいんだろう?

592 :589:04/04/18 02:01
>>590
expr というのは知りませんでした。使えそうですね。

>>591
ちょうど僕も同じようなの使ってます。同じ l って名前で。
pipe は下の else のようにすればできますよ。

#!/bin/sh
if [ -d "$1" ];then
ls -CFl "$@"
elif echo "$1" | grep '^\(http\|ttp\|file\):' > /dev/null ;then
w3m "$@"
else
exec 3<&0
$PAGER "$@" <& 3
fi

実際は拡張子によって mplayer 起動したりして、
もうちょっと複雑なんですが。

593 :名無しさん@お腹いっぱい。:04/04/18 02:03
>>589
後者はなんだか動作が危険な気がする。

調べたい文字が固定なら、漏れならcase使うかなあ。

case "$aho" in
*abc*)
文字列が含まれている場合
;;
*)
文字列が含まれていない場合
;;
esac

594 :名無しさん@お腹いっぱい。:04/04/18 02:40
>>592
いやパラメータ無しの時は ls になるのが、>>588 の面白いところだと思ったわけで。

595 :589:04/04/18 02:55
なるほど。
$ l
で ls になって、
$ cat hoge | l
で less になるような動作ですか。
stdin に何か入ってくるか調べて動作決めるのかな。
そんなの sh でできるのだろうか。

596 :名無しさん@お腹いっぱい。:04/04/18 08:50
>>589
if [ "`echo $aho |grep abc`" ] ;then
""でくくらないと失敗したときエラーになります。

expr使うなら
if expr "$aho" : '.*abc' ; then

597 :名無しさん@お腹いっぱい。:04/04/18 08:53
>>592
>exec  3<&0
>$PAGER "$@" <& 3
3から入力するのは何か意味があるのですか?
$PAGER "$@"
だけとはどう違うのですか?

598 :名無しさん@お腹いっぱい。:04/04/18 09:22
>>595
組込コマンドあるいは外部コマンドの test に -t が用意されていれば
それを使えばいい。tty でもいいけど。

599 :589:04/04/18 14:02
>>596
>""でくくらないと失敗したときエラーになります。
これでハマッたことが昔ありました。
なぜか bash だとエラーにならなかったような気がします。

>>597
パイプの内身を $PAGER に渡す訳です。
$PAGER "$@"
これだけだとパイプができないので。

>>598
ありがとうございます。
こんな感じで >>595 の動作ができました。
#!/bin/sh
if [ ! -t 0 ] ;then
exec 3<&0
less <&3
else
ls
fi


600 :596 , 597:04/04/18 14:12
>>599
>>>596
>>""でくくらないと失敗したときエラーになります。
>これでハマッたことが昔ありました。
>なぜか bash だとエラーにならなかったような気がします。
ごめん。[ ]だけだとエラーにならない。
[ -n ]とかやるとまずい。
[ -n "" ]はOK

>パイプの内身を $PAGER に渡す訳です。
>$PAGER "$@"
>これだけだとパイプができないので。
これだけでもパイプできたけど。

601 :589:04/04/18 14:24
> これだけでもパイプできたけど。
あ、本当だ。すみません。

昔このスクリプトで
#!/bin/sh
exec 3<&0
kterm -e sh -c "less <&3"
こんなことやってたので、その残骸でした。


602 :588:04/04/18 23:36
>>591
>% foo | l
>とした時がやな感じ。 less として働いて欲しいな。
それを悩んで, 結局できなくて, 使わなくなった.

>>594
>いやパラメータ無しの時は ls になるのが、>>588 の面白いところだと思ったわけで。
面白いだと…

最高の褒め言葉だ…


というか>>589-601いろいろ意見くれてありがとう.

今日, ソフトウェア開発受けてきた.
明日からまた時間できるから勉強します.



603 :588:04/04/18 23:37
>>599=589

tnx.
使わせてもらいます.


604 :名無しさん@お腹いっぱい。:04/04/23 19:09
つーかLESSOPENで
[ -d "$1" ] && exec ls -AFl "$1"
でいーじゃん。

605 :名無しさん@お腹いっぱい。:04/04/24 01:41
駄目だろ、それ

606 :名無しさん@お腹いっぱい。:04/04/27 13:14
>>605
なんで? lesspipeの使い方知らない?

607 :名無しさん@お腹いっぱい。:04/04/27 17:48
単に要求を満たしていないから

608 :名無しさん@お腹いっぱい。:04/04/28 17:55
バッククオートで囲った文の中で、
さらにバッククオートを使うことはできないのでしょうか?

ローカルにあるファイルリストをもとに、
リモートからファイルをftpでgetしたい訳なんですが。

↓だと、バッククオート文の中にバッククオート文があるので、通りません。

#! /bin/sh
filelist=/xxx/xxx/list.txt

ftp -n <<END
open remote_host
user ftpuser ftppass
bin
prompt
cd /xxx/xxx/xxx
`
for i in `cat $filelist`
do
echo get $i
done
`
by
END



609 :名無しさん@お腹いっぱい。:04/04/28 18:07
`ls \`echo .\``

610 :名無しさん@お腹いっぱい。:04/04/28 18:07
まちがえた。
echo `ls \`echo .\``

611 :名無しさん@お腹いっぱい。:04/04/28 18:10
sed 's/^/get /' $filelist

612 :名無しさん@お腹いっぱい。:04/04/28 18:23
sed -e '1i\
open remote_host\
user ftpuser ftppass\
bin\
prompt\
cd /xxx/xxx/xxx' \
-e 's/^/get /' \
-e '$a\
quit' $filelist | ftp -n


613 :608:04/04/28 23:36
>>609-612
ありがとう!

614 :名無しさん@お腹いっぱい。:04/04/30 10:07
grep -l hoge *
して出てきた結果を ファイル名.日付 などで copy したいのですが

いいほうほうないでしょうか?


615 :名無しさん@お腹いっぱい。:04/04/30 11:29
意味不明。日本語を勉強して出直してらっしゃい。


616 :名無しさん@お腹いっぱい。:04/04/30 15:07
>>614
こういうことですか?

#!/bin/sh
for i in `grep -l hoge *`
do
cp $i $i.`date +%Y%m%d`
done

617 :614:04/04/30 18:15
>616
そうゆうことです
どうもありがとうございました

618 :名無しさん@お腹いっぱい。:04/05/05 04:44
そんなバッククオート使ってんじゃねーよとか言うのは年寄りですかそうですか

619 :名無しさん@お腹いっぱい。:04/05/05 11:15
バッククオート使わないとどうなるのか若輩者には教えてくれないんですかそうですか

620 :!618:04/05/05 12:00
>>619

#!/bin/sh
grep -l foobar * 2> /dev/null | xargs -I % cp % %.$(date +%d%m%Y)

チョト苦しいかも・・・。$() 使ってる時点で一緒だし。

621 :名無しさん@お腹いっぱい。:04/05/05 18:32
>>618ではないが、単にdateプロセスをループのたびに実行するのではなく
日付を変数に入れてキャッシュしろよってことじゃないの。


622 :名無しさん@お腹いっぱい。:04/05/05 18:42
途中で日付がかわるかもしれないだろ!!!

623 :名無しさん@お腹いっぱい。:04/05/05 19:54
アホくさ。なこと言ったら、cp実行中に日付は変わるかもしれんだろ。
ファイルのタイムスタンプにファイル名を一致させたいんなら、
cp「後」にrenameするしかないぞ。

624 :名無しさん@お腹いっぱい。:04/05/05 19:56
ファイル名にスペースが入ってるかもしれないだろ!!!

…って最初のバッククオートのことじゃないのか?

625 :名無しさん@お腹いっぱい。:04/05/05 22:42
grep -l fuga * | while read i
do
みたいな

626 :名無しさん@お腹いっぱい。:04/05/05 23:40
date の部分はこう?

date +"$i $i.%Y%m%d" | xargs cp

読み難いですかそうですか。

627 :名無しさん@お腹いっぱい。:04/05/07 01:34
いっそのこと
date +"cp $i $i.%Y%m%d" | sh

awk や sed で加工して sh に食わせるってのはよくやるな

628 :名無しさん@お腹いっぱい。:04/05/07 03:35
>>626-627
ファイル名に%が含まれてたら誤動作しそうじゃない?

629 :名無しさん@お腹いっぱい。:04/05/08 07:09
(´・ω・`)

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

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

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)