2006年12月05日
シェルスクリプト総合 その2スレ687〜
687 名無しさん@お腹いっぱい。 sage New! 2005/07/21(木) 20:28:59
windows で sh を実行などというからには
何か勘違いをしてるっぽいので、
詳しく聞きだしてみたい。
688 名無しさん@お腹いっぱい。 sage New! 2005/07/21(木) 20:38:07
>>686
補足は蛇足。コピペ時にはカットよろしこ。
689 名無しさん@お腹いっぱい。 sage New! 2005/07/21(木) 20:59:09
>>686
これ貼るだけでいいよ。
http://myu.daa.jp/osiete/index.html
690 名無しさん@お腹いっぱい。 sage New! 2005/07/21(木) 22:03:52
>>679
ちょとかわいそうなのでマジレス。
シェルの種類は複数あって、拡張子が.shであっても
書式が共通しているとは限らない。
(Cygwin のやつは bash という種類。)
その「公式な配布物」が何なのかを書けば
もう少しまともなレスが得られるかも知れない。
691 名無しさん@お腹いっぱい。 sage New! 2005/07/21(木) 23:01:04
シェルスクリプトファイルの絶対パスをシェルスクリプト自身で
見つけ出すことは出来ますか?
pwdとやってもシェルスクリプトを起動させた時点でのカレント
ディレクトリしか出ないので質問しました。
692 名無しさん@お腹いっぱい。 sage New! 2005/07/21(木) 23:04:28
>>691 $0 とか `dirname $0` とか
693 679 sage New! 2005/07/21(木) 23:22:17
>>684-690
お騒がせしてます;
根本的にはCygwinでbashを使うことで"解決"しております。
アドバイスありがとうございました。
SyntaxErrorは行番号が出ているものの、
その行の記述が間違っていないことがわかったので、
自分が悪いと思って出し辛かった、といいますか
人に聞く前に調べようと思って、あの場では書きませんでした。
エスパーの方,回答お願いします。つうか氏ぬ。
#今回はじめて掲示板のお世話になったのですが、実際>>686のように書かれると嫌になるね。質問1つもちゃんとできない自分が。
694 691 sage New! 2005/07/21(木) 23:23:16
便利なコマンドがあるんですね。
パスが通っている場合や、カレントディレクトリで実行した場合は
絶対パスが出るみたいですが、下のようにディレクトリを指定して実行した場合は
ディレクトリ名しか出ません。つまり、
shtest/shtest.sh
を実行したときは shtest だけが得られる。得られたパスの初めの文字を判定して
/(スラッシュ)でなければ `pwd`/ を付け加えるというようにすればいいと
思うのですが、どうすれば出来るのですか?たびたびすみません。
695 名無しさん@お腹いっぱい。 sage New! 2005/07/21(木) 23:28:21
>>692
$0 いじって呼ばれたらだめだな。
696 名無しさん@お腹いっぱい。 sage New! 2005/07/21(木) 23:57:18
他にも方法はあるけど正規表現を使わない方向で。
#!/bin/bash
if [ "${0#/}" != "$0" ]; then
path="$0"
elif [ "${0#./}" != "$0" ]; then
path=`pwd`"${0#.}"
elif [ "${0#../}" != "$0" ]; then
path=`dirname "$(pwd)"`"${0#..}"
else
path=`pwd`/"$0"
fi
echo $path
697 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 00:36:21
DIR=`dirname $0`
APATH=`cd $DIR; pwd`/`basename $0`
echo $APATH
とか。
698 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 00:40:21
http://www.nurs.or.jp/~asada/FAQ/UNIX/section4.4.html
699 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 00:48:20
本当にFAQですよね。
700 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 00:52:12
リンクとかされてることもあるしね。
701 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 02:02:40
環境によるとは思うんだけど、$0を入れ換えられてる場合をのぞけば、
shellの中で、
realpath $0
か、
readlink -f $0
が、スマートなんじゃないだろうか?
702 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 03:25:52
それがある環境に限れるならね。
703 691 sage New! 2005/07/22(金) 08:39:45
ありがとうございます。いろいろ試してみようかと思います。
704 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 08:50:19
パスを書いておけばおk
705 名無しさん@お腹いっぱい。 New! 2005/07/22(金) 15:33:00
awkスクリプトをperlスクリプトに変換する
a2pコマンドが吐き出すシェルスクリプトについてですが、
2行目、
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
のように、"$@"をわざわざ ${1+"$@"}と書く周到ぶりですが、
その反面、$0 を、"$0"じゃなく裸のまま $0 と書いちゃってます。
今はディレクトリ名にスペースを含むこともあったりするし、
ちゃんと "$0" と記述したものを出力するべきじゃないでしょうか。
逆に、$0で桶なら、${1+"$@"}だけ拘っているのが、
クォリティ的にちぐはぐに思います。
識者の意見求む。
706 名無しさん@お腹いっぱい。 New! 2005/07/22(金) 21:31:01
今はディレクトリ名にスペースを含むこともあったりするし、
707 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 21:36:07
藤岡弘、
708 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 21:44:56
確かに「今は」の意味が分からんな
709 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 22:21:07
Sambaで共有して、エクスプローラーでフォルダーを作ったりもするから、
"/usr/local/Program Files" の下にシェルスクリプトがあったり
するんじゃないの?
710 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 22:41:00
Sambaなんて10年前からあるじゃん
711 名無しさん@お腹いっぱい。 New! 2005/07/22(金) 22:42:03
>>707
http://www.wwwwwwwwww.net/1/soko/VIP00991.JPG
712 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 22:44:46
10年前は今じゃないの?
713 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 22:50:12
10年前と今の区別がつかない老人がいるスレはここですか?
714 名無しさん@お腹いっぱい。 sage New! 2005/07/22(金) 22:53:05
>>705
a2pのバグと思われ。(s2pもそうかな)
所詮perlのおまけソフトなので、
それがperlクオリティー。
715 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 02:08:25
${1+"$@"}の意味がわかりません (><)
716 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 07:42:24
>715 >293-
717 sasasa New! 2005/07/23(土) 12:17:12
別のスクリプトをlsという名前に変えた際に正しいlsが表示されるようにするにはどうすればいいのでしょう?
718 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 12:18:39
command ls
719 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 12:30:13
>>717
その、新しいスクリプトのlsが存在するディレクトリに
先にPATHを通す。
PATH=/home/hoge/bin:$PATH; export PATH
とか。
(csh系は糞なので敢えて説明はしないがrehash等が必要)
>>718 はアフォなので無視。
# commandコマンドの動作を勘違いしてるようだし、
# command自体、Bourneシェルでは使えない
あ、「正しいls」というのが、「元の標準のls」という意味なら、
/bin/ls と、フルパスで実行する。
720 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 12:36:58
>>719
(゚Д゚)ハァ?
721 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 12:38:58
>>719
(゚Д゚)ハァ?
722 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 12:59:06
>>718
lsがシェル関数だとcommand lsで回避できますが、
スクリプトだとだめでした。
>>719
ありがとうございます。
やっぱり絶対PATHしかないんですね。
723 sasasa New! 2005/07/23(土) 13:16:11
あとプロファイルにおいて
"
'
`
の意味って何を意味しているんですか?
724 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 13:20:29
>>723
'"` はクォートという。
質問が基本的過ぎるので、
man shして、クォートの欄を読むか、
シェルスクリプトの参考書のクォートの欄を読め。
ここでの質問はもっと具体的なものでよろしこ。
725 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 13:30:51
>>723
たとえば、
rm -rf /
は危険なコマンドとして有名だが、
' 'を使って、 'rm -rf /' とすると、
スペースを含めて「rm -rf /」という名前のコマンドとみなされるので、
実行しても、
# 'rm -rf /'
rm -rf /: No such file or directory
と、エラーになるので全く安全。
では練習問題。' 'を ` ` に変えて
# `rm -rf /`
をやってみよう。
726 名無しさん@お腹いっぱい。 New! 2005/07/23(土) 13:37:28
>>725
これはひどい練習問題だ。
727 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 13:39:38
しかもプロンプトが#でいやらしいぜ
728 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 14:03:50
>>725
全く安全というか、意味ねーし
729 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 14:04:34
>>728
(゜Д゜)ハァ?
730 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 14:37:16
>>725
お前、意地悪だな
731 名無しさん@お腹いっぱい。 New! 2005/07/23(土) 14:47:26
>>723
課題の内容をここで聞いてるのか・・・・。
ちなみにきっと俺とお前は同じ大学だろう。
732 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 14:54:24
>>717
http://pc8.2ch.net/test/read.cgi/unix/1119703835/573
733 名無しさん@お腹いっぱい。 sage New! 2005/07/23(土) 15:43:56
>>725
ぷげら
734 名無しさん@お腹いっぱい。 New! 2005/07/25(月) 00:07:31
質問させてください。
特定のディレクトリを次々にバックアップするために、
コピー元 => コピー先
のペアをリスト化してループ処理させたいのですが、
どのように記述すればよいのでしょうか。
735 名無しさん@お腹いっぱい。 sage New! 2005/07/25(月) 00:09:40
なにしたいのかいまいちわからんが
find でがんばる、とか?
736 名無しさん@お腹いっぱい。 sage New! 2005/07/25(月) 00:16:59
>>734
なんだいな?backuplistファイルの内容が
source1 dest1
source2 dest2
...
とかなってたら、
cat backuplist | while read source dest
do
cp $source $dest
done
とかでいいじゃん。cpの代わりにtarなりcpioなり、cp -aなり、好きにして。
737 名無しさん@お腹いっぱい。 sage New! 2005/07/25(月) 00:17:07
>>735
えーと、
list={
. { /hoge/hoge1 => /fugo/fugoA }
. { /hoge/hoge2 => /fugo/fugoB }
. { /hoge/hoge3 => /fugo/fugoC }
}
foreach ( pair in list )
. コピー等の処理 pair[0] , pair[1]
みたいなことをしたいんです。
738 名無しさん@お腹いっぱい。 sage New! 2005/07/25(月) 00:18:04
>>736
まさにそれです^^
ありがとうございました。
739 名無しさん@お腹いっぱい。 sage New! 2005/07/25(月) 00:50:55
joinとpasteの違いってなんですか?
740 名無しさん@お腹いっぱい。 sage New! 2005/07/25(月) 01:00:25
man join
man paste
741 名無しさん@お腹いっぱい。 sage New! 2005/07/25(月) 10:19:39
>>725
そんな餌に釣られるクマー!
linuxが起動しなくなったんですけど(><)
742 名無しさん@お腹いっぱい。 sage New! 2005/07/25(月) 21:08:56
>>741
エラーが出るよ。
743 名無しさん@お腹いっぱい。 New! 2005/07/26(火) 01:00:43
すみません、質問があります。
mvコマンドで、一度に移動できるファイル数には上限があるのでしょうか?
最大で99999個のファイルを移動できるのか調査しているのですが・・・・
catコマンドが一度に1000件づつしか処理できないようなのですが。
ご存知の方がおりましたらどうぞよろしくお願いします。
744 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 01:22:27
mv自身はintの上限-2個まで移動できると思う
745 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 01:41:35
>>743
そんな調査するより xargs を使うべきじゃないの。
746 743 New! 2005/07/26(火) 02:21:40
>>744 そうですか、それなら可能ですかね。。。?アドバイスありがとうございます。
>>743 xargsですか。ちょっと知らないコマンドですが、調べてみますね。レス感謝です。
747 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 02:21:47
>>743
find /usr/include -name '*.h'|xargs grep ARG_MAX
748 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 02:40:21
getconf ARG_MAX
749 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 02:46:40
>>743
こういったことの周りの知識を知らないのも問題だが、
知識不足なのにいたずらに限界に挑戦しようとする方も問題。
知識不足なら知識不足なりに秘孔をついてしまわぬよう安全策をとるのが一つの見識。
750 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 07:55:30
>>745
確かに xargs -n で引数を分割して実行できるが、
xargsはスペースや改行等を含んだファイル名を
正しく扱えないという、仕様上のバグがあるので、
xargs自体obsolete or deprecated。
xargs -0 (xargs --null)が使えるのはGNU xargsだけなので、
一般には使えないと考えるべき。
751 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 09:42:40
逆に、ファイル名に問題あるのが確実にない状況なら十分使える。
でなきゃ GNU の入れりゃいいじゃん。
752 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 09:44:18
>>750
だけではない。
753 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 09:47:48
>>752
何が?
754 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 09:59:11
(xargs -0 (xargs --null)が使えるのはGNU xargs)だけではない。
755 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 11:01:49
>>751
「ファイル名に問題ないことが確実」な状況って、
自分の作業用ディレクトリ下で、
書き捨てスクリプトを書く場合くらいしかないぞ。
ユーザー開放のディレクトリ以下を一括処理したい場合、
どういうファイルネームが存在するかの仮定をしちゃいけないし、
GNU物を勝手に入れるのも禁止だから、
結局xargsなんて使えん、のが結論。
756 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 11:03:45
>>755
勝手に入れちゃだめならしかるべき手続きを踏めばいいじゃない。
757 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 11:11:25
ユーザー開放のディレクトリ以下を一括処理したい、と仮定されました。
758 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 12:30:03
まあWindowsユーザは空白含みとか日本語ファイル名は普通に平気で付けるしな
特にSambaサーバにしてるならそういうファイル名は全然珍しくないわな
759 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 16:14:40
自分も windows では日本語空白記号なんでも使うな。
760 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 16:24:47
そこで、zargs ですよ。
761 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 17:55:03
>>750
Solaris 9 だと空白は大丈夫だし、改行も \ でエスケープすれば問題なしですが。
$ /bin/echo 'a b\nc\\\nd' | xargs -L 1 -I '{}' /bin/echo "'{}'"
{a b}
{c
d}
762 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 17:56:12
>>761
いまどきSolaris使っている馬鹿ってpupupu−−−
763 名無しさん@お腹いっぱい。 sage New! 2005/07/26(火) 18:23:08
>>762
「Soralis」と書けばよかったのに
764 名無しさん@お腹いっぱい。 New! 2005/07/28(木) 08:09:48
>>761
xargsの-L 1オプション使ったら、
1行ごとにコマンド(echo)が実行されてしまうから、
元質問の、「まとめて処理」ができないだろ。
それに、「改行を \ でエスケープ」と言っても、
そう都合良く findで出力できないだろ。
さらに、ファイル名に普通の文字として、
" や ' や \ などが含まれていると
やっぱり駄目だろ。
よって、xargsは使えん。
765 名無しさん@お腹いっぱい。 sage New! 2005/07/28(木) 08:23:23
改行文字がファイル名に含まれてるケースって、そんなにあるか?
基本的にそれは考慮せんでもいいと思うんだが
766 名無しさん@お腹いっぱい。 sage New! 2005/07/28(木) 09:24:00
ファイル名にはヌル文字も使えなかったっけ?
だとしたら xargs -0 も完全な解決策にはならないが。
767 名無しさん@お腹いっぱい。 New! 2005/07/28(木) 10:05:15
>>766
ファイル名にnull文字は使えねーよ。
だからxargs -0が最もマトモな解決法なのだが、
Solarisとかで使えないから問題になってるんだよ。
768 名無しさん@お腹いっぱい。 sage New! 2005/07/28(木) 10:10:17
>>765
改行は滅多にないとしても、
ファイル名に ' " \ などが含まれているのは
よくある。
「Don't Cry.mp3」とかね。
xargsが ' " \ を特殊文字扱いするのが問題になる。
769 名無しさん@お腹いっぱい。 sage New! 2005/07/28(木) 11:46:07
>>768
xargsが単純に改行をセパレータとして扱うような
プログラムだったなら、はるかにマシだっただろうね
770 名無しさん@お腹いっぱい。 sage New! 2005/07/28(木) 14:45:33
大学のマシンに xargs が なぜか /usr/local/X11/bin にあったのを思い出した
771 名無しさん@お腹いっぱい。 sage New! 2005/07/28(木) 14:50:42
>770
あっ、そんな記憶ある。
NEWS-OS 4 (3かな?) じゃないかな。
772 名無しさん@お腹いっぱい。 sage New! 2005/07/28(木) 18:31:44
NEWS-OS 4は xargs が付属していないね。
/usr/5binにすらない。
(/usr/5bin/cpioとかならある・・ちなみにunameもない・・)
まあ、xargsは元SysV系ということで、
「使わなくても済むはずのコマンド」の扱いだったのだろう。
773 761 sage New! 2005/07/28(木) 19:56:55
>>764
761 で -L 1 を付けたのは、この例だと 1 行ずつ処理しないと
表示が分かりづらいからです。説明が悪かったですね。
改行の入ったファイル名は (find 的に) 無理ですが、
何とかすれば何とかなります。
$ touch "sp ace"
$ touch "single'quote"
$ touch 'double"quote'
$ touch 'back\slash'
$ find . -type f | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e 's/\(.*\)/"\1"/' | xargs /bin/sh -c 'echo "[$1][$2][$3][$4]"' --
[./sp ace][./single'quote][./double"quote][./back\slash]
ま、そこまでして使いたいかと言えば No ですが。
774 名無しさん@お腹いっぱい。 sage New! 2005/07/28(木) 20:27:47
>>771
たしかにマシンのほとんどはNEWSだった。記憶があやふやだったので
local をつけたけど、やはり/usr/X11/binだったのかな
775 771 sage New! 2005/07/29(金) 00:50:15
>772, 774
記憶違いだったようで、スミマセン。
ひょっとしたら、初心者の私が
「ファイル名が x で始まるのに、どうして/usr/bin/X11にないんだ」
(笑わないでオクレ!)
と思ったのが記憶に残っていたのかもしない。
あっ、 NEWS-OSの X 関係は /usr/bin|lib/X11というのも違うかも。
近くの席にはSUN 3 が有ったなぁ。
776 名無しさん@お腹いっぱい。 sage New! 2005/07/29(金) 03:39:56
>>772
xargs はあった方が良いと思うんだが。
これの代わりをするには、たくさんコマンド組み合わせてやらないといかん希ガス
777 名無しさん@お腹いっぱい。 sage New! 2005/07/29(金) 08:14:57
よくわからんが775は771ではない。772の間違いかな。ただ、X関係の下に
あったという記憶は同じようだけど。NEWSのキーボードのタッチは好きだった。
「~」の位置のせいで痛いミスをしたことがあったが…
xargsはコマンドライン以外で使ったことがないかもしれん。
778 名無しさん@お腹いっぱい。 sage New! 2005/07/29(金) 08:19:04
>>776
xargsは実行時効率とタイプ量減らすためって気がする
たんに機能の話だけで言えば
cmdA | xargs cmdB
は
cmdA | while read i; do cmdB $i; done
でいいし(後者は効率が悪いがIFSで適切なデリミタを設定することもできる)
779 名無しさん@お腹いっぱい。 sage New! 2005/07/29(金) 08:28:34
いつまで引っ張る気だ。
780 名無しさん@お腹いっぱい。 sage New! 2005/07/29(金) 10:04:04
771=775 です。
随分昔の話なので、私の記憶が間違っていたのかと思いました。
>777
コマンドライン以外で使うxargs って、スクリプトの中に書くという事ですよね。
それとも、使いやすいGUIが有るとか? (そんなGUI 想像つかない)
# スレ違いなんで、このくらいにしておきます。 orz
781 名無しさん@お腹いっぱい。 sage New! 2005/07/29(金) 18:23:59
argument が無限に取れるシェルがあれば
xarg はいらないの?
782 名無しさん@お腹いっぱい。 sage New! 2005/07/29(金) 18:26:25
シェルが取れてもコマンドが取れなければあまりい意味が無い
783 名無しさん@お腹いっぱい。 sage New! 2005/07/29(金) 18:37:57
でもそれは xargs でも解決できないよね。
784 名無しさん@お腹いっぱい。 sage New! 2005/07/30(土) 09:24:10
>>783
xargs -i cmd {} でほぼ解決できる。
パフォーマンスは知らん。
785 名無しさん@お腹いっぱい。 New! 2005/07/30(土) 10:19:58
>>784
だからぁー、-iオプション付けると
-l 1も暗黙に付いちゃうから、xargs使う意味がなくなるんだよ。
解決するのはスペースを区切り文字とみなさないことだけであって、
\ とか ' とか " の問題はそのまま未解決。
786 名無しさん@お腹いっぱい。 sage New! 2005/07/30(土) 10:28:10
>だからぁー、-iオプション付けると
>-l 1も暗黙に付いちゃうから、xargs使う意味がなくなるんだよ。
意味不明。
787 名無しさん@お腹いっぱい。 sage New! 2005/07/30(土) 11:01:57
>>785
何を言ってるんだ?w
788 名無しさん@お腹いっぱい。 sage New! 2005/07/30(土) 14:54:36
多数のファイル名を拡張子を付けたファイル名に変換したいのだがrenameはつかえるのかな?
f1 f2 f3 f4 ->f1.jpg f2.jpg f3.jpg f4.jpg
789 名無しさん@お腹いっぱい。 sage New! 2005/07/30(土) 15:00:30
for file in * ; do
mv $file $file.jpg
done
790 名無しさん@お腹いっぱい。 sage New! 2005/07/31(日) 21:14:35
>>789
rename って言ってるってことはMS-DOSプロンプトなんだろうよ
正解は >>791 よろしく
791 名無しさん@お腹いっぱい。 sage New! 2005/07/31(日) 21:20:03
ちょっくらうんこいってくる。
792 名無しさん@お腹いっぱい。 sage New! 2005/07/31(日) 21:22:19
DOSプロンプトだったら、rename * *.jpg
793 名無しさん@お腹いっぱい。 sage New! 2005/07/31(日) 21:37:19
Linuxだとrenameというコマンドがディス鳥標準で付いていて、一応使える。
ただし一般的ではない。
>>789
はダブルクォート付けていないから、減点だな。
794 名無しさん@お腹いっぱい。 sage New! 2005/07/31(日) 21:45:25
そもそも >>788 は「多数のファイル名を」って言ってるんだから、
* はまずいだろ
795 名無しさん@お腹いっぱい。 sage New! 2005/07/31(日) 22:00:17
>>788 が言う「多数」は4つくらいのようだ。
796 名無しさん@お腹いっぱい。 sage New! 2005/08/01(月) 08:28:05
zsh 使ってるなら zmv も便利
797 名無しさん@お腹いっぱい。 sage New! 2005/08/02(火) 12:42:06
tailの逆、つまり先頭から(ファイル最終のn行前)まで表示するにはどうすれば
いいでしょう?
798 名無しさん@お腹いっぱい。 sage New! 2005/08/02(火) 12:42:33
head
799 名無しさん@お腹いっぱい。 sage New! 2005/08/02(火) 13:38:30
>>797
tail -r
800 名無しさん@お腹いっぱい。 sage New! 2005/08/02(火) 23:45:18
>>799
ひねくれ者め(笑)
801 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 00:25:16
liat
802 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 00:56:37
ファイル最終の n 行前までって言ってるんだから、
実際のところ head で実現するのは苦しい気がする。
(head で指定できる行数は限りがあったと思うので。)
てことで
tail - >
comm -23
rm -f
かな。
803 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 02:44:09
ファイル途中にtmp_fileと同一行が出たらおかしくならないか?
804 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 03:14:44
comm はソートされたファイルじゃないと使えない
805 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 03:32:44
んな、ファイル丸ごと何度も読み書きするくらいだったら、たとえば
last=100
rows=`wc -l file | cut -d ' ' -f 1`
head -n `expr $rows - $last` file
とか。
806 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 03:37:55
wc -l file | cut -d ' ' -f 1
は
wc -l < file
でいいだろ
807 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 07:23:57
>>806
??
808 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 10:14:37
tail -r | tail +n | tail -r
GNU tail では -r はないようなのでかわりに tac を。
809 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 12:55:11
tail -rだと全文をバッファに抱えるプロセスを二つ重ねないといけないので、
あんまり嬉しくないんですよね。
というわけで、こうかなあと。(n=4の場合)
ruby -ne '(q||=[])<<$_;q.size<=4||print(q.shift)' file
810 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 13:07:44
echo '1,$-Np' | ed file
811 名無しさん@お腹いっぱい。 New! 2005/08/03(水) 17:21:46
質問させてください。
スクリプトを実行したら
login:
名前を打ち込んで
password:
パスを打ち込む(非表示)
パスはファイルにリダイレクト
っていうのを作りたいんですが。バッシュで。
途中で文字列を入力させるやり方が分かりません。
教えてください。おねがいします。
812 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 17:37:23
read -p 'login: ' NAME
read -s -p 'password: ' PASS
echo $PASS > file
813 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 20:14:02
そんでそんで? 誰のパス盗もうとしてんの?(σ ̄ー ̄)σ>>811
814 名無しさん@お腹いっぱい。 New! 2005/08/04(木) 02:44:04
シェルスクリプトで perl -pe chomp と同じことをしたいのですが、
どのようにやればよいでしょうか?
815 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 08:57:48
#!/bin/sh
exec perl -pe chomp
816 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 13:31:14
readで出来たのか
知らなかった
817 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 13:39:59
cmd1 | cmd2
上記のようなパイプで繋いだコマンドで、cmd1の終了ステータスを拾いたいのですが、
どうしたらよいのでしょうか?
818 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 14:25:13
csh -c 'cmd1 | cmd2'
819 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 14:45:12
出来ました、ありがとうございます。
820 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 14:55:23
(((cmd1; (echo $? >&3)) | cmd2 >&4) 3>&1 | (read x; exit $x)) 4>&1
echo $?
うーん、美しくない。
821 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 22:10:15
一瞬lispに見えたw
822 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 23:58:53
>>814
tr -d '\n'
823 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 00:59:04
>>817
bash の(たぶん)3.0じゃないと使えないと思うけど、
$ echo $PIPESTATUS[0]
とか、出来る。
ちなみに配列だから、
$ echo ${PIPESTATUS[*]}
で、全部見れる。
あと、ちょっと違うけど、
$ set -o pipefail
とかもある。
824 823 sage New! 2005/08/05(金) 01:01:30
PIPESTATUS、bash-2.05bにもあったよ。
pipefailが、3.0からだった。
825 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 02:17:49
今/home/.emacsがあるとして、ユーザディレクトリにそれぞれコピーするには
どう書けばいいですか?所有者ももそれぞれのユーザに設定できますか?
826 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 02:32:28
>>825
/etc/skel に置いとけ
827 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 02:35:58
シェルスクリプトのスレよりもくだ質が似合いの質問者だな。
828 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 02:54:40
>>826 >>827
そんなぁ・・・
そこをなんとか・・・
829 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 03:15:53
くだ質いけって言われたのになんでここで粘るんだ?
だだこねる相手はママだけにしとけよ。
次の方、どうぞ↓
830 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 07:43:52
なんで怒ってるの?
831 名無しさん@お腹いっぱい。 New! 2005/08/05(金) 07:47:09
$HOMEに押し着せの.emacsを強制コピーしてくる
シス管が居て、迷惑してるのですが、
これを拒否するにはどうしたらいいでしょうか?
ちなみに、root権限で上書きコピーしてくるため、
一般ユーザーのパーミッション設定では防げません。
あと、.emacsだけじゃなく、$HOME/.profile
$HOME/.xinitrcとかもコピーで潰されるので大迷惑です。
832 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 08:17:23
.emacs というディレクトリ作っといたら?
833 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 08:34:38
>>831
#!/bin/sh
cat <>831
自分の.emacs を、.my-emacs とかにかえて、
シェルのalias を使って、
alias emacs="emacs -q -l .my-emacs"
とかしとく。
.profile の方も、同じような考え方で、
bash --norc --noprofile の後、自分のprofileを読み込むようなscriptを書いといて、
毎回、loginし直す。(面倒だけど)
zsh 、ksh、tcsh等、対話的に使うshellを他のにするとかでもいいんじゃん?
.xinitrcは、
export XINITRC=$HOME/.my-xinitrc
を設定しといて、startx。
で、どうよ。
>>833 みたく、管理者に一言いうのが早いかもしんないけど。
835 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 11:18:52
ln -s /etc/passwd ~/.emacs
836 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 11:36:49
どういうタイミングでどういう手段で何が上書きされるのか。
ログインシェルは何か。自分の権限でcronやchshは使えるか。
などによっていろいろと対抗手段は考えられるけど、情報不足。
837 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 11:41:59
>>825 に対する皮肉として書いた釣りなのに、
こんなに釣りにつき合ってくれてありがとう。
838 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 11:48:34
釣られすぎだな。
839 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 13:03:52
∧_∧ハゥッ
∧_(Д`; )
( ・∀・)玉 つ
(っ ≡つて ヽ チーン!
して_)_ノw (_)
玉を砕くと書いて「玉砕」と言う。
840 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 13:12:34
835に1票
841 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 13:32:33
>>835 も面白いけど、
ふつー、rm -f してから cpするだろうから効果なし。
842 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 16:40:35
そのふつーが期待できる管理者ならユーザの.emacsを上書きしたりなぞしない。
843 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:32:09
http://makimo.to/2ch/pc5_unix/996/996949546.html
の3の書き込みなんですが、意味は分かるんですが
なぜ {, という書き方なんでしょうか。
そのままぐぐってみてもヒットしないので
展開の書式を解説しているサイトを教えてください。
844 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:35:55
(zsh)Brace Expansion
13.6 Brace Expansion
====================
A string of the form `FOO{XX,YY,ZZ}BAR' is expanded to the individual
words `FOOXXBAR', `FOOYYBAR' and `FOOZZBAR'. Left-to-right order is
preserved. This construct may be nested. Commas may be quoted in
order to include them literally in a word.
845 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:42:34
>>844 は答えになっていない英語スパムだな。
>>843 は、空文字列のカンマに付いての質問と思われ。
ブレース展開自体の質問じゃないよ。
846 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:42:54
>>845
(゚Д゚)ハァ?
847 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:43:46
>>845
自分の理解力不足を棚にあげて、人を批判とはおめでたい人ですね. :-)
848 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:44:25
>>845
> ブレース展開自体の質問じゃないよ。
>>843
> 展開の書式を解説しているサイトを教えてください。
849 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:44:57
>>845
英語が読めないなら、エキサイト翻訳使えよ。
850 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:52:13
>>844 が言っているのは、展開時に左から右へという順序と、
ネスティング可能なことと、
カンマ自体を普通の文字として使うならクォートしろということだけ。
元質問のコマンドラインでは左から右への順序は関係ないし、
空文字列のカンマも許されることは >>844 には書かれていない。
なので、 >>844 は早とちりの外し回答だと思う。
851 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 18:09:45
この、クソチョッパリが!!!!!!!!!!!!!!!!!!!!!!!
百年謝罪しろ!!!!!!!!!!!!!!!!!!!!!!!!!!
852 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 20:29:30
>>850
> 空文字列のカンマも許されることは >>844 には書かれていない。
禁止されていないということは許されているということだろ。
853 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 20:38:18
>>852
元質問は「 {, とは何か?」と聞いているのだから、
「それはブレース展開の最初の文字列が空文字列になっているものだ」
と答えるのが的確。
>>850 はマトはずれ。
854 853 sage New! 2005/08/05(金) 20:43:42
スマソ。レス番間違えた。>>850 は正解。
>>844 はマト外れ。
855 名無しさん@お腹いっぱい。 New! 2005/08/05(金) 21:11:43
別スレで怒られたので、こちらでに移動します。
今/home/.vimrcがあるとして、ユーザディレクトリにそれぞれコピーするには
どう書けばいいですか?所有者ももそれぞれのユーザに設定できますか?
856 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:12:30
誤爆すみません。逝ってきます。
857 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:19:51
$HOMEに押し着せの.vimrcを強制コピーしてくる
シス管が居て、迷惑してるのですが、
これを拒否するにはどうしたらいいでしょうか?
ちなみに、root権限で上書きコピーしてくるため、
一般ユーザーのパーミッション設定では防げません。
あと、.vimrcだけじゃなく、$HOME/.xsessionや
$HOME/.cannaとかもコピーで潰されるので大迷惑です。
858 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:24:00
もういいから。
859 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:26:37
>>857
コミュニケーション能力を磨くといいよ。
860 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:34:21
>>859
コミュニケーション能力じゃなくて、
技術的に回避する方法はありませんか?
上司に言っても、
「シス管は彼に任せているから、彼の方針に従ってくれ」
の一点張りで話が進みません。
861 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:39:23
>>860
> >>859
> 技術的に回避する方法はありませんか?
あるけど、
> 「シス管は彼に任せているから、彼の方針に従ってくれ」
その彼とコミニュケーションはとったの?
862 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:45:48
もういいから。
863 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:46:34
>>862
だれも君がどう感じたかなんて聞いていないよ。
864 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:52:54
>>861
もちろん、とったよ。
「これはシステム管理上必要なことだから」
で話は進まず。
865 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:56:36
横レスすまそ。
>>861
$HOME/.xsession の場合は回避するの難しくないか?
866 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 22:04:22
_,. -−─−-- 、_
,. '´ _ -−ニ二二`ヽ、
/ / _,.−'⌒ヽ,ノ``'ミ,、
,.' / / ,,イ゙\ /入、ヾ,
. / / // -‐''"_ ヽ l l′/`_''l}
' / ,.イii/ /∠´ `ヾ' l lレ''´ ヾ
/ ,.' ii/u i{,_,, ゚ }! l li{,_,. ゚ }
. / /ii i/u uヾく,_,ノ′ l lゞi-rイ
,' /-、 i| u ' ' ` ,__〉〉 |
. /l 「ヾ'i| ,.r‐ `'U'U_,ィ}|
/ | ー}.l| /,r 'T"丁 ̄| ̄ | l|'|
}i iト、}( l! ,イ |__, ⊥ _|__,l|.ト、
`i iiiハ `| i l_/ _,ノノ|| \
. }iij. |. l |Y/ ‐┴''" ||\ \
゙l! | l|. 仁 _,__ || \ \
/ | |l lニレ'´ `ヾ'、 || \ \
/ |. |ヽ 「]、 ヾ>、|| \
/ .| |. ヽ`「ヽ }H|\
| | ヽ`「ヽ、、,__,,ノj‐|| ` ー─
u | | \`'〔`'T''''''T´ ,ノ|
| | \ ` ̄ ̄ ̄ /
| | `−──‐′
867 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 22:05:00
>>865
.xsession って #! みてくれたっけ?
868 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 22:35:33
>>867
見るかどうかは、/usr/X11R6/lib/X11/xdm/Xsession に
どう書いてあるかによって変わる。デフォルト状態の
Xsessionでも、Xのバージョンによって違ったと思う。
というか、root管理者が /usr/X11R6/lib/X11/xdm/Xsession
を編集して、そもそも$HOME/.xsessionを参照しないようにされてしまうと
一巻の終り。それに気づかない程度のアホ管理者と想像するが・・
869 843 sage New! 2005/08/06(土) 00:40:56
すいません、なんかお礼を書くタイミングを逸してしまって
空文字列という意味なんですね
ありがとうございました
870 名無しさん@お腹いっぱい。 sage New! 2005/08/06(土) 13:29:38
diff -u /etc/hosts{.20050801,}とかよく使いますよ。
871 New! 2005/08/07(日) 12:53:34
>>857
そのホストとは別に、LinuxなりBSDなりマシン立ち上げて、
そっちの環境で作業すれば〜
872 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:12:15
(SUM=0;find /lib -maxdepth 1 -type f |xargs ls -lt|grep 'Aug 5'|awk '{print $5}'|while read SIZE;do SUM=`expr $SUM + $SIZE`;echo "$SIZE $SUM";done;echo "SUM=$SUM")
これでなんで最後のSUMがゼロになってしまうんでしょうか?
873 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:17:40
$find /lib/ -maxdepth 1 -type f -mtime -3|xargs wc -c
やりたいこと自体はこれでOKでした。
874 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:18:26
>>872
パイプでwhileにつないだ場合、
この部分はさらに別シェルで実行されるから
その次のセミコロン以降の変数には反映されない。
875 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:22:17
>>872
>>454
876 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:39:50
ある数値をパイプで受け取ったとして、それの合計値を出したいときには
どうするのがいいんでしょうか??
877 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:48:27
>>876
>>455
878 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:53:01
>>877
ありがとうございます。これでなんで上手くいくのか分りませんがとにかくそういうもんだと思っておきます。
879 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 16:11:32
>>872
シェルによって違う。
bourneとbashはパイプからだとサブシェルになる。
kornとzshはパイプからでもサブシェルにならない。
880 名無しさん@お腹いっぱい。 New! 2005/08/08(月) 23:29:21
当方kshを利用しているのですが、whileループを使用して2ファイルを
読み込む処理がうまく行きません。
外側のループが処理されずに抜けてしまいます。
(個人的な推測では内側のループで外側のカーソルも移動している気がします)
どなたか、対処の方法を教えてくだされ。
ソースはこんな感じです。
function funcA
{
while read LINEB
do
処理あれこれ
done <$LINEB
}
while read LINE
do
funcA
done <$FILEA
881 名無しさん@お腹いっぱい。 sage New! 2005/08/08(月) 23:35:21
>>880
ヒント:リダイレクト、ファイル記述子
882 名無しさん@お腹いっぱい。 sage New! 2005/08/08(月) 23:38:46
$LINEBじは$FILEBの間違いって落ちじゃないよな。
883 880 New! 2005/08/08(月) 23:42:58
>>881さん
もうちょっと、ヒントをください。
>>882さん
先ほどのソースは間違ってますが、現実は「FILEB」です。
ご指摘ありがとうございます。
884 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 00:04:59
1 #!/bin/ksh
2 FILEB=$0
3 CNT=0
4 function funcA
5 {
6 while read LINEB
7 do
8 echo $LINEB
9 done <$1
10 }
11 while read LINE
12 do
13 echo ------$CNT------
14 funcA $FILEB
15 CNT=`expr $CNT + 1`
16 done <$0
この例だと、同じファイルを読み込んでるけど、ちゃんと動くがなぁ。
885 880 New! 2005/08/09(火) 00:34:04
>>884さん
ほ、本当ですか?
自宅にはUNIX環境がないため、確かめることはできないのですが…
なんでだろうか。。
886 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 06:20:17
起動したプロセスのプロセスIDをpidファイルに書き込みたいんですが、
どうすればいいでしょうか?
887 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 06:35:34
>>886
echo $$ > pid
念のため言っておくけど、複数個起動すれば当然"pid"というファイルの
内容は書き直されちゃうからね。
888 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 07:14:42
>>887
あざーっす!
参考になります。
ところで、やはりスクリプト内で別のスクリプトを読んでいる場合は
実プロセスIDではなくてスクリプトを実行しているプロセスのIDになってしまいますよね・・
889 名無しさん@お腹いっぱい。 New! 2005/08/09(火) 07:19:22
>>888
スクリプトを実行してるプロセスのIDになりました。
apacheとかはどうやって取得しているんでしょうか・・・
890 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 07:23:10
バックグラウンドで起動した子プロセスのPIDなら「$!」
891 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 07:55:48
>>890
あざーーっす!!!!
取れました!
1 #!/bin/sh
2
3 echo $$
4 ./test.sh &
5 echo $!
という超簡単なものなら行けたんですが・・・・・
実はtomcatの自動起動スクリプトを書いているんですが、
ソース晒して見てもらってもいいでしょうか?
892 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 16:03:39
> あざーーっす!!!!
ってなんだよ?
893 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 16:13:01
オヅラさんの挨拶は「おあざーっす」
894 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 16:14:21
>>892
http://d.hatena.ne.jp/keyword/%A4%A2%A4%B6%A1%BC%A4%B9
895 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 16:15:07
「ありがとうございます」の発音の弱勢部分を崩したんじゃない?
当たってたら、なんかくれ。
896 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 16:59:30
意味不明。
日本語を書くこと。
897 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 17:40:18
いあいあとかふんぐるいとかあざーすとか。
898 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 21:41:09
うがなぐるふたぐんとか
899 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 21:43:31
いあいあはすたー
900 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 09:20:00
sedやawkの使い方知らないから、いつもPerlに頼っちゃうんだけど、
こういうのあんまりよくない?
901 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 10:18:29
どうでもいいよおもうよ
902 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 10:37:29
>>891
自己レスです。
結局
echo $(ps -ewo "%p %c %u %a" | awk "\$2==\"java\" && /catalina/ && \$3==\"$CATALINA_USER\" {print \$1}" | head -n 1) > $CATALINA_PID
こんな強引なやり方でプロセスID取得しました
903 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 12:56:49
そんなことするより、起動スクリプトで echo $$ > pidfile したあと exec すれば?
904 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 14:54:23
fifo つくって通信するとか
905 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 19:16:47
>>902
Tomcatが8080で待ちうけている場合
/usr/sbin/lsof -t -i TCP:8080 -P
シェルスクリプトじゃないけどね。
906 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 19:48:48
>>905
ええー、(環境によっては)lsofをわざわざインスコすんの…。
そりゃあ必要なものは何でもインスコしなきゃならんがの。プロセスidさえ
わかればよいという目的下だと、ちょっとバランスの悪さを感じる。(俺は)
907 名無しさん@お腹いっぱい。 New! 2005/08/10(水) 23:15:45
スミマセン、教えてください。
Kシェルで
count=`cat a.txt b.txt | grep ${検索条件} | wc -l`
というコマンドで検索条件に半角スペースを含む文字列を指定したい場合、どうしたら良いですか?
908 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 23:23:53
count=`cat a.txt b.txt | grep "${検索条件}" | wc -l`
これじゃあかんの?
909 907 New! 2005/08/10(水) 23:39:59
>>908
それだと、なぜかcount=0になっちゃうんですよ。
もちろん、条件には引っ掛かる文字列もあります。
うーん。
910 名無しさん@お腹いっぱい。 sage New! 2005/08/11(木) 01:43:37
>>908
ksh使ってないんで本題はわからんが、grep -c って標準的じゃないの?
スペースの話を別にすれば
count=`grep -c $検索条件 a.txt b.txt`
でよかったんじゃないのかな。
本題も、wc -lを取り払って試せば、なぜなんだかわからないかな。
911 名無しさん@お腹いっぱい。 sage New! 2005/08/11(木) 02:03:08
grep -c -F でどうだろう?
912 名無しさん@お腹いっぱい。 sage New! 2005/08/11(木) 11:13:46
>もちろん、条件には引っ掛かる文字列もあります。
というところからして、検索文字列の正規表現が
おかしくてマッチしないだけというオチじゃなかろうか。
grep を fgrep に変えてみるとか。
913 907 sage New! 2005/08/11(木) 20:04:46
自己解決しました。
検索条件はファイルから読み込んでいるので、
半角スペースに見えているのは特殊文字かと思い、
cat -vしてみたら
行末に^Mの文字が‥
引っ掛からないわけでした。
やさしいunix板の皆様、ありがとうございました。
逝ってきます。
914 名無しさん@お腹いっぱい。 New! 2005/08/14(日) 08:45:19
csh使いのアホはいつになったら死滅するんでしょうか?
915 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 10:05:52
BSDがあるかぎり何度でも甦るさ
916 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 11:04:42
*BSDに関して一つだけ嫌いな点はデフォルトのログインシェルがcshって事だな。
NetBSDにstaticな/bin/bashを突っ込む俺も阿呆だと思うけど。
だってシングルユーザモードでもログインシェルにbashを使いたいんだよもん!
917 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 17:35:45
tcshとかもいらない
918 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 18:04:12
私も要らないんだけど、入ってないと年寄りが。。。
私はbashかksh。
919 名無しさん@お腹いっぱい。 New! 2005/08/14(日) 18:51:36
zsh
920 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 19:41:53
ログインシェルの話はどこかよそでやっておくれやす
921 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 22:12:16
出た自治厨
922 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 23:23:49
>>921
明らかにスレ違いだし。
923 名無しさん@お腹いっぱい。 sage New! 2005/08/22(月) 17:31:43
シェルスクリプトを走らせると
????.sh: xrealloc: cannot reallocate 268435456 bytes (0 bytes allocated)
(????はファイル名)
というエラーがでます。
前同じスクリプトを動かしても何も普通に動いていたのに。。。
パーミッション、ファイルサイズ制限、ログインシェル、メモリ残量
はチェック済みです。。。
このエラーが起きる原因はなんでしょうか?
よろしくお願いします。
924 923 sage New! 2005/08/22(月) 18:14:30
解決できました。すみません(;´ω`)
925 名無しさん@お腹いっぱい。 sage New! 2005/08/22(月) 18:26:41
>>924
原因はなんだったんだよ!
926 名無しさん@お腹いっぱい。 New! 2005/08/23(火) 20:43:34
すいません、質問させてください。
bourne shを使っています。
サーバにある毎日更新されているログファイル(ファイル名に日付入り)にアクセスし、
その中で使用されている2種類の文字列をカウントして、数をエクセルで日ごとに表示させようと思っています。
今考えているやり方は、引数に日付を与えてそれを元にその日のログファイルを検索し、
その中からヒット数をカウントしてテキストかCSV形式で保存し、手作業でエクセルに流し込もうと思っています。
(grep "A" logfile | wc -l ; grep "B" logfile | wc -l) >> hoge.txt
このやり方だとテキスト・CSVどちらの形式でも、
1
2
と改行が入ってしまって、エクセルで
A B
0822 3 5
0823 1 2
0824
という横並びの形で表すことができません。
何か良い方法を教えていただけますでしょうか。
よろしくお願いします。
927 名無しさん@お腹いっぱい。 sage New! 2005/08/23(火) 20:47:49
>>926
とりあえず、その部分の改行を取るだけなら、
echo `grep "A" logfile | wc -l ; grep "B" logfile | wc -l` >> hoge.txt
にすればいいわな。
928 926 New! 2005/08/23(火) 21:26:20
>>927さん
あぁ、なるほど・・・
近いところまで行ってたのに、そこに辿り着けませんでした・・・
ありがとうございます!
これでひとまずはできそうです。
あとは手作業でやる手間を省けるように、表形式(もしくはそれに近い形)で
表示させれるように考えてみます。
もし何かご存知の方がいらっしゃいましたら、ご教授ください。
929 名無しさん@お腹いっぱい。 New! 2005/08/23(火) 21:44:10
bashでお聞きしたいのでつが、
if文で文字列比較する際、
頭の2文字が"/a"に一致する、とか最後の文字列が".jpg"に一致する
と言う条件分は、どうすればいいんでしょうか?
正規表現使わないと出来ないのでしょうか?
930 名無しさん@お腹いっぱい。 sage New! 2005/08/23(火) 21:49:54
>>929
bashじゃなくても同じ。
if じゃなくて case 使え。
case $mojiretsu in
/a*)
hoge;;
*.jpg)
hoge;;
esac
だな。case文のパターンは正規表現ではなく、
単なるワイルドカードなので、混同しないように。
931 929 New! 2005/08/23(火) 21:51:50
>>930
早々のレス、ありがとうございます。
わかりますた。
932 名無しさん@お腹いっぱい。 sage New! 2005/08/23(火) 22:19:21
>>926
まず、そのやり方では文字列を数えていないことに注意してください。
grep| wc -l では、文字列を含む行を数えているのであって、
たとえば1行の中に目的の文字列が複数含まれていても、
1行としか数えられません。それで本当にいいんですか?
933 名無しさん@お腹いっぱい。 sage New! 2005/08/23(火) 22:33:36
>>926
Webサーバのログならanalog使え。
と、勝手な仮定で適当なことを言ってみるテスト。
934 926 sage New! 2005/08/23(火) 23:47:47
>>932さん
確かにおっしゃる通りです・・・
現状では特徴のある文字列でgrepすることで1行ずつで抽出しようと
考えています。
何かこのまま行くとこちらを基準にした名前付けをすることになったりしそうなので、
違う方法を考えてみます。
>>933さん
analogは初めて知りました。
こんなことができるんですね・・・
今回はちょっと学校の環境なので自由には入れられないんですが、
ゆくゆくは自サーバでと考えていたのでその時に参考にさせていただきます。
お二人ともありがとうございます。
935 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 04:45:28
ワイルドカードパターンって
正規表現っていってもいいんですか?
936 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 06:27:37
>>935
ちがう
937 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 06:57:51
よく使われる意味での正規表現とは違うけど、
概念としては正規表現の一種といっていいんですかね?
938 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 07:28:08
>>937
機能だけ見れば正規表現のごく一部の機能のみをもつ
サブセットだと考えても実用上ほとんど問題はないが、
それでも正規表現の一種だと言ってしまうのは間違い。
939 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 07:36:10
>>937
何度も聞き返すのしつこいぞ。
シェルのワイルドカードは、正規表現とは全く違う。
サブセット(部分集合)でもないし、正規表現の一種でもない。
例えば、a*.jpg というのがあったとする。
これがシェルのワイルドカードなら、
ahoge.jpg aHage.jpg asoko.jpg ....
などにマッチする。
一方、 a*.jpg が正規表現だとすると、上記のものにはマッチせず、
aaaaaa.jpg aaaaBjpg sjpg .... などといった文字列にマッチする。
全く違うものだよ。
940 937 sage New! 2005/08/24(水) 07:42:09
僕は >>935 とは違いますよ。
実装がまったく違うのはわかってますが、
学問的な意味での正規表現ではワイルドカードパターンも
正規表現というのかなあと >>935 と同じ疑問を持ったわけです。
有限オートマトンがなんとかとかいうやつ。
941 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 08:11:42
>>940
実装が違うだけじゃなくて、仕様自体が違うの。
だから、「学問的な意味」でも、
ワイルドカードパターンのことを正規表現とは言わない。
もともと、メタキャラクターの表現方法がいろいろあったのを、
sedやgrepで使うために「標準化」して、
"regular expression"と定義したわけ。
で、「正規表現」というのは実は誤訳で、
本来なら「標準表現」と言うべきもの。
(シェルで使っているのは標準以外の表現方法)
sedやgrepで使う表現がシェルのものとは異なるため、
sedやgrepが、「こっちが標準ですよ」と言っているかのごとく、
「標準表現=正規表現」というわけ。
もし、文献などでシェルの * のことを「正規表現」と
書いてあるものがあったら、それは大間違いなので買ってはいけない。
942 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 08:16:38
>>941
> もともと、メタキャラクターの表現方法がいろいろあったのを、
> sedやgrepで使うために「標準化」して、
> "regular expression"と定義したわけ。
それは違うと思うぞ. Unix の正規表現と使ってるメタキャラが違
う正規表現の実装だってあるわけだし...
943 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 08:31:26
しっかし、オートマトン知らずに大きくなったやつがけっこういるのね
ま、受理できる言語の集合がサブセットだってこった
944 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 08:50:52
>>943
> ま、受理できる言語の集合がサブセットだってこった
>>941 のような恥ずかしい奴に言っても意味不明だと思う
945 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 09:33:09
>>940 が、「学問的な意味での正規表現」などという
自己定義用語を持ち出しているのが間違い。
シェルスクリプトスレで、UNIXの世界で
正規表現と言ったらsedなどで使うものの意味にしかならない。
ただでさえ、初心者がシェルのメタキャラクターを
正規表現だと誤解する例があって混乱を招くので、
>>940 のようなカキコは謹んでくれ。
正規表現については sed スレあたりでやってくれ。
946 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 10:00:00
>>945
オートマトンとか言語理論の方から見れば,
シェルスクリプトのワイルドカードも立派な
正規表現だと思うが...
947 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 10:04:25
>>946
本気でそう思い込んでる香具師は
シェルスクリプトを書く素質がないので、
他の板にお帰りください。
948 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 10:10:09
>>940
「実装が違う」というのは、
具体的なプログラム(コーディング)は違うけど
全体の仕様は同じ場合をいう。
たとえば、sendmailとpostfixは、メールサーバーの異なる実装。
実装は違うが、SMTPプロトコルでメールが送れるという
仕様は同じ。
しかし、正規表現とシェルとでは、実装が違うだけでなく、
仕様が違う。
だから、「実装が違うが、同じようなもの」みたいないい方は
それ自体が間違い。
949 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 10:30:12
もともと正規言語とか正則言語とか呼ばれるものを記述するための表現である
ところの「正規表現」を、あたかも Posix/Unix の正規表現をさす固有名詞の
ように扱っているから祖語が起きているんじゃねぇの?
950 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 10:49:54
正規表現(せいきひょうげん:regular expression)とは、文字列の集合を
一つの形式で表現する方法のこと。正則表現(せいそくひょうげん)とも
呼ばれる。
アルファベット A={a1,...,an} 上の正規表現とは
1. 空記号列 ε は正規表現である
2. ai(Aの任意の要素)は正規表現である
3. X と Y が正規表現ならば、
1. X|Y も正規表現である
2. XY も正規表現である
3. {X}* も正規表現である
(以上Wikipedia日本語版)
glob() is a Unix library function that expands file paths according
to a minimal regular expression syntax. The syntax of glob patterns
is not identical with that of regular expressions used by Unix
utilities like grep.
(以上Wikipedia英語版)
後者glob()は要するにシェルのメタキャラクタ展開。ごらんの様に
正規表現の定義上も、glob()の定義上もglobは正規表現であることを
裏付けている。別に混乱も齟齬も起きてないよ。
951 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 11:06:47
そのglobの定義ダメダメじゃん。
ワイルドカードは正規表現の真のサブセットなのに、
これをminimal regular expressionなんて呼ぶのが齟齬なんじゃないか。
どの正規表現にも対応するワイルドカード表記があると証明してくれたら、
その定義を受け入れるよ。
952 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 11:24:40
>>950
そんなことを言い出したら、
「シェルって本当は貝っていう意味ですね。
だから、Bourne shやbashだけでなく、ほら貝やアサリ・シジミも
シェルですね」
と言っているようなもの。
UNIXで正規表現と言ったら、シェルのglobのことは指さない。
わかったら二度と出てくるな、ボケ。
953 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 11:32:25
馬鹿っぽい。 >>952
954 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 11:38:57
>>953
あのようなのは、「ばかまるだし」っていいませんか?
955 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 13:17:45
>>950
globでX|Yや{X}*を表現できるのか?
956 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 13:56:31
たぶん>>935>>937はワイルドカードで記述できるものは正規言語
(http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E)
かって聞きたかったのだろう。
wikipeidaにもある通り正規表現とワイルドカードは全く別物
ワイルドカードで表現可能な言語は正規表現で表現できるが逆は不
可能なので両者は等価ではない。
957 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 14:02:54
>>950
やれやれ、貼っとくか、
man 7 glob より:
NOTES
Regular expressions
Note that wildcard patterns are not regular expressions, although they
are a bit similar. First of all, they match filenames, rather than
text, and secondly, the conventions are not the same: e.g., in a regu-
lar expression `*' means zero or more copies of the preceding thing.
"wildcard patterns are not regular expressions"
と言ってるんだから明白だね。
ワイルドカードパターンと正規表現とは違う、
たとえ少し似てるところがあっても。
958 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 14:13:08
犬っぽい。 >>957
959 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 14:14:02
>>957
本質を理解してなさそう。
マッチの対象がファイル名かテキストかの違いで、
*とかの表記の意味が違う、
といわれただけで納得か?
960 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 14:51:29
>>955でFAだろ。
globが正規表現の一種なら>>950が引用した定義により帰納的に定義される集合を
表現できなければならないが、その能力はない。
>>950は自分が引用したものの意味もわかっておらず自滅してる。
961 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 14:53:42
>>959
本質も何も、UNIXでは、
ワイルドカードパターンのことは正規表現とは定義していない、
というだけのことではないのだろうか。
それ以外の定義を持ち出してUNIX板で議論するなら
板違いというべきもの。
962 950 sage New! 2005/08/24(水) 15:33:14
X|Yは{A,B}という表記で(たぶん)実現できるが
X*はたしかにないなあ。自滅だ。
>>961
sedのいうところの正規表現とegrepの正規表現はかなり異なるが、
どちらも正規表現と言っている。perlやphpはegrepに近いが、
いろいろ違う。だから、「UNIXでは」なんて言っても意味ないよ。
(POSIXのBREとEREは分かっててあえてsed,egrepと言ってるからね、念のため)
963 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 15:42:21
kshとかだと X* も出来る。
964 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:00:42
>>962
だから、Basic RE と Extended RE は 正規表現と言っていいんだよ。
globはBasic REでもExtended REでもないから、
正規表現と言ってはいけない。言うと間違い。
965 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:13:04
>globはBasic REでもExtended REでもないから、
>正規表現と言ってはいけない。
ひどいな。
966 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:17:54
いや、さすがにそこまで行くとただの釣りだろう
967 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:28:34
>>965 >>966
自演乙。
glob を正規表現だと主張しているのはお前一人だけのようだ。
968 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:31:27
だからもういいって。まあ1000近いから続けてもいいけど。
969 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:39:06
>>963
ほんとだ
*(foo|bar)とかできるね、egrep式には(foo|bar)*の意で。
正規表現と言っていいかどうかまでは調べてないから分からんが。
シェルのファイルパターンマッチの場合、. .. / の扱いが正規表現と呼ぶのに
問題になりそうだ。(ファイルシステムの問題だけなら表現として無問題)
970 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:40:29
965は966ではないし、glob を正規表現だとも主張してないぞ。
971 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:42:16
次スレのテンプレには、
「シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(sedスレへ)」
と、明記希盆。
972 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:51:07
>>967
950が撤回してるからもう一人もいないんじゃないか?
今は964の変な理屈(たぶん釣り)に反応してるだけで。
973 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:51:56
ここ何人が自演してるの?
974 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:56:13
1-973まで全部おれが書いたよ
975 1-975 sage New! 2005/08/24(水) 20:48:00
>>974
(゚Д゚)ハァ?
勝手に騙るな、氏ね
976 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 21:41:01
ちょうと切りのよいところで話も落ち着いたし、次スレよろ。
977 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 21:41:54
我煽る、ゆえに我蟻
978 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 22:04:16
>>959
何を言っているのやら。
「マッチ対象」は関係無いでしょう。ファイル名に対してregexpを使うこともできるし、
テキストに対してもワイルドカードパターンを使えるのだから。
実装も違う、仕様も違うものをごっちゃにされても困る。
「経済の世界では、defaultの意味は云々」のレベル。
979 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 22:13:03
980は次スレよろ
980 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 22:15:41
981は次スレよろ
981 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 22:24:43
982は次スレよろ
982 名無しさん@お腹いっぱい。 New! 2005/08/24(水) 22:26:17
勃起age
983 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 22:59:56
>>978
あほか
>>957をすみからすみまで読め
984 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:06:25
では、次スレは >>980 に任せて埋めましょう。
「日常の世界ではメモリーは思い出の意味」
で、同じような例、>>985 どうぞ…
985 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:18:09
とある界隈では「夏祭り」は(ry
986 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:33:10
なぁ、
シェルを実行するときに . を付けるのはなぜ?
$. 2ch.sh
987 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:44:11
>>986
お前さん、何か壮大な勘違いをしてないか?
それともアレか、$PATHの最後に./を入れる派の振りをした壮大な釣りか?
988 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:44:13
>>986
子プロセスを起動させないため
989 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:49:16
くま
990 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:51:56
>>987
勘違い?考えすぎじゃない?
もしかして、カレントディレクトリに対してパスを通す事を行っているの?
でもそれって、本来なら./2ch.shとやるべきでは??
>>988
そうなの?え、いや、でも、子プロセス起動したよ?
$. 2ch.sh で、2ch.shの中からさらに2ch.shを呼び出しますたよ
991 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:53:00
トゥエルはラピュタ語で真
992 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:58:13
ちなみに、何も入力せずにただ . と打つと引数にファイル名を要求してくる。
こいつの正体はいったい・・・
993 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:00:54
>>986
「シェルを」っていうか「シェルスクリプトを」だろ。
>>990
> そうなの?え、いや、でも、子プロセス起動したよ?
どうやって確認したの?
>>992
man sh とか。
bash なら help . とか。
994 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:05:04
>>986
それ、どこで覚えたの?
995 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:08:30
>>993
丁寧にありがとう、お兄ちゃん
英語が出てきてよく理解できなかったけど、
$PATHを読みにいかないでね、ってお願いしてるんだね♪
子プロセスの生成は、プロセスIDとユーザIDをpsコマンドで確認したよ♪無限ループになるからすぐわかるよ
996 sage New! 2005/08/25(木) 00:08:51
カレントシェルで実行する
997 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:09:56
分かってると思うけど、次スレ立ってるよ
シェルスクリプト総合 その3
http://pc8.2ch.net/test/read.cgi/unix/1124889646/
998 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:11:10
>>994
なんかの雑誌のシェルスクリプトの入門記事に書いてあった
いままで漠然と使っていたけど、ふと疑問に思ってネットを調べたら、 . じゃなかなか検索できんわな
999 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:11:24
>>995
「.」を使っても$PATHは見る
1000 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:11:47
man source
おや?
1001 1001 New! Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
comm -23
rm -f
かな。
803 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 02:44:09
ファイル途中にtmp_fileと同一行が出たらおかしくならないか?
804 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 03:14:44
comm はソートされたファイルじゃないと使えない
805 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 03:32:44
んな、ファイル丸ごと何度も読み書きするくらいだったら、たとえば
last=100
rows=`wc -l file | cut -d ' ' -f 1`
head -n `expr $rows - $last` file
とか。
806 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 03:37:55
wc -l file | cut -d ' ' -f 1
は
wc -l < file
でいいだろ
807 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 07:23:57
>>806
??
808 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 10:14:37
tail -r | tail +n | tail -r
GNU tail では -r はないようなのでかわりに tac を。
809 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 12:55:11
tail -rだと全文をバッファに抱えるプロセスを二つ重ねないといけないので、
あんまり嬉しくないんですよね。
というわけで、こうかなあと。(n=4の場合)
ruby -ne '(q||=[])<<$_;q.size<=4||print(q.shift)' file
810 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 13:07:44
echo '1,$-Np' | ed file
811 名無しさん@お腹いっぱい。 New! 2005/08/03(水) 17:21:46
質問させてください。
スクリプトを実行したら
login:
名前を打ち込んで
password:
パスを打ち込む(非表示)
パスはファイルにリダイレクト
っていうのを作りたいんですが。バッシュで。
途中で文字列を入力させるやり方が分かりません。
教えてください。おねがいします。
812 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 17:37:23
read -p 'login: ' NAME
read -s -p 'password: ' PASS
echo $PASS > file
813 名無しさん@お腹いっぱい。 sage New! 2005/08/03(水) 20:14:02
そんでそんで? 誰のパス盗もうとしてんの?(σ ̄ー ̄)σ>>811
814 名無しさん@お腹いっぱい。 New! 2005/08/04(木) 02:44:04
シェルスクリプトで perl -pe chomp と同じことをしたいのですが、
どのようにやればよいでしょうか?
815 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 08:57:48
#!/bin/sh
exec perl -pe chomp
816 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 13:31:14
readで出来たのか
知らなかった
817 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 13:39:59
cmd1 | cmd2
上記のようなパイプで繋いだコマンドで、cmd1の終了ステータスを拾いたいのですが、
どうしたらよいのでしょうか?
818 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 14:25:13
csh -c 'cmd1 | cmd2'
819 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 14:45:12
出来ました、ありがとうございます。
820 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 14:55:23
(((cmd1; (echo $? >&3)) | cmd2 >&4) 3>&1 | (read x; exit $x)) 4>&1
echo $?
うーん、美しくない。
821 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 22:10:15
一瞬lispに見えたw
822 名無しさん@お腹いっぱい。 sage New! 2005/08/04(木) 23:58:53
>>814
tr -d '\n'
823 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 00:59:04
>>817
bash の(たぶん)3.0じゃないと使えないと思うけど、
$ echo $PIPESTATUS[0]
とか、出来る。
ちなみに配列だから、
$ echo ${PIPESTATUS[*]}
で、全部見れる。
あと、ちょっと違うけど、
$ set -o pipefail
とかもある。
824 823 sage New! 2005/08/05(金) 01:01:30
PIPESTATUS、bash-2.05bにもあったよ。
pipefailが、3.0からだった。
825 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 02:17:49
今/home/.emacsがあるとして、ユーザディレクトリにそれぞれコピーするには
どう書けばいいですか?所有者ももそれぞれのユーザに設定できますか?
826 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 02:32:28
>>825
/etc/skel に置いとけ
827 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 02:35:58
シェルスクリプトのスレよりもくだ質が似合いの質問者だな。
828 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 02:54:40
>>826 >>827
そんなぁ・・・
そこをなんとか・・・
829 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 03:15:53
くだ質いけって言われたのになんでここで粘るんだ?
だだこねる相手はママだけにしとけよ。
次の方、どうぞ↓
830 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 07:43:52
なんで怒ってるの?
831 名無しさん@お腹いっぱい。 New! 2005/08/05(金) 07:47:09
$HOMEに押し着せの.emacsを強制コピーしてくる
シス管が居て、迷惑してるのですが、
これを拒否するにはどうしたらいいでしょうか?
ちなみに、root権限で上書きコピーしてくるため、
一般ユーザーのパーミッション設定では防げません。
あと、.emacsだけじゃなく、$HOME/.profile
$HOME/.xinitrcとかもコピーで潰されるので大迷惑です。
832 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 08:17:23
.emacs というディレクトリ作っといたら?
833 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 08:34:38
>>831
#!/bin/sh
cat <
自分の.emacs を、.my-emacs とかにかえて、
シェルのalias を使って、
alias emacs="emacs -q -l .my-emacs"
とかしとく。
.profile の方も、同じような考え方で、
bash --norc --noprofile の後、自分のprofileを読み込むようなscriptを書いといて、
毎回、loginし直す。(面倒だけど)
zsh 、ksh、tcsh等、対話的に使うshellを他のにするとかでもいいんじゃん?
.xinitrcは、
export XINITRC=$HOME/.my-xinitrc
を設定しといて、startx。
で、どうよ。
>>833 みたく、管理者に一言いうのが早いかもしんないけど。
835 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 11:18:52
ln -s /etc/passwd ~/.emacs
836 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 11:36:49
どういうタイミングでどういう手段で何が上書きされるのか。
ログインシェルは何か。自分の権限でcronやchshは使えるか。
などによっていろいろと対抗手段は考えられるけど、情報不足。
837 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 11:41:59
>>825 に対する皮肉として書いた釣りなのに、
こんなに釣りにつき合ってくれてありがとう。
838 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 11:48:34
釣られすぎだな。
839 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 13:03:52
∧_∧ハゥッ
∧_(Д`; )
( ・∀・)玉 つ
(っ ≡つて ヽ チーン!
して_)_ノw (_)
玉を砕くと書いて「玉砕」と言う。
840 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 13:12:34
835に1票
841 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 13:32:33
>>835 も面白いけど、
ふつー、rm -f してから cpするだろうから効果なし。
842 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 16:40:35
そのふつーが期待できる管理者ならユーザの.emacsを上書きしたりなぞしない。
843 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:32:09
http://makimo.to/2ch/pc5_unix/996/996949546.html
の3の書き込みなんですが、意味は分かるんですが
なぜ {, という書き方なんでしょうか。
そのままぐぐってみてもヒットしないので
展開の書式を解説しているサイトを教えてください。
844 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:35:55
(zsh)Brace Expansion
13.6 Brace Expansion
====================
A string of the form `FOO{XX,YY,ZZ}BAR' is expanded to the individual
words `FOOXXBAR', `FOOYYBAR' and `FOOZZBAR'. Left-to-right order is
preserved. This construct may be nested. Commas may be quoted in
order to include them literally in a word.
845 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:42:34
>>844 は答えになっていない英語スパムだな。
>>843 は、空文字列のカンマに付いての質問と思われ。
ブレース展開自体の質問じゃないよ。
846 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:42:54
>>845
(゚Д゚)ハァ?
847 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:43:46
>>845
自分の理解力不足を棚にあげて、人を批判とはおめでたい人ですね. :-)
848 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:44:25
>>845
> ブレース展開自体の質問じゃないよ。
>>843
> 展開の書式を解説しているサイトを教えてください。
849 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:44:57
>>845
英語が読めないなら、エキサイト翻訳使えよ。
850 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 17:52:13
>>844 が言っているのは、展開時に左から右へという順序と、
ネスティング可能なことと、
カンマ自体を普通の文字として使うならクォートしろということだけ。
元質問のコマンドラインでは左から右への順序は関係ないし、
空文字列のカンマも許されることは >>844 には書かれていない。
なので、 >>844 は早とちりの外し回答だと思う。
851 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 18:09:45
この、クソチョッパリが!!!!!!!!!!!!!!!!!!!!!!!
百年謝罪しろ!!!!!!!!!!!!!!!!!!!!!!!!!!
852 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 20:29:30
>>850
> 空文字列のカンマも許されることは >>844 には書かれていない。
禁止されていないということは許されているということだろ。
853 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 20:38:18
>>852
元質問は「 {, とは何か?」と聞いているのだから、
「それはブレース展開の最初の文字列が空文字列になっているものだ」
と答えるのが的確。
>>850 はマトはずれ。
854 853 sage New! 2005/08/05(金) 20:43:42
スマソ。レス番間違えた。>>850 は正解。
>>844 はマト外れ。
855 名無しさん@お腹いっぱい。 New! 2005/08/05(金) 21:11:43
別スレで怒られたので、こちらでに移動します。
今/home/.vimrcがあるとして、ユーザディレクトリにそれぞれコピーするには
どう書けばいいですか?所有者ももそれぞれのユーザに設定できますか?
856 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:12:30
誤爆すみません。逝ってきます。
857 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:19:51
$HOMEに押し着せの.vimrcを強制コピーしてくる
シス管が居て、迷惑してるのですが、
これを拒否するにはどうしたらいいでしょうか?
ちなみに、root権限で上書きコピーしてくるため、
一般ユーザーのパーミッション設定では防げません。
あと、.vimrcだけじゃなく、$HOME/.xsessionや
$HOME/.cannaとかもコピーで潰されるので大迷惑です。
858 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:24:00
もういいから。
859 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:26:37
>>857
コミュニケーション能力を磨くといいよ。
860 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:34:21
>>859
コミュニケーション能力じゃなくて、
技術的に回避する方法はありませんか?
上司に言っても、
「シス管は彼に任せているから、彼の方針に従ってくれ」
の一点張りで話が進みません。
861 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:39:23
>>860
> >>859
> 技術的に回避する方法はありませんか?
あるけど、
> 「シス管は彼に任せているから、彼の方針に従ってくれ」
その彼とコミニュケーションはとったの?
862 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:45:48
もういいから。
863 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:46:34
>>862
だれも君がどう感じたかなんて聞いていないよ。
864 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:52:54
>>861
もちろん、とったよ。
「これはシステム管理上必要なことだから」
で話は進まず。
865 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 21:56:36
横レスすまそ。
>>861
$HOME/.xsession の場合は回避するの難しくないか?
866 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 22:04:22
_,. -−─−-- 、_
,. '´ _ -−ニ二二`ヽ、
/ / _,.−'⌒ヽ,ノ``'ミ,、
,.' / / ,,イ゙\ /入、ヾ,
. / / // -‐''"_ ヽ l l′/`_''l}
' / ,.イii/ /∠´ `ヾ' l lレ''´ ヾ
/ ,.' ii/u i{,_,, ゚ }! l li{,_,. ゚ }
. / /ii i/u uヾく,_,ノ′ l lゞi-rイ
,' /-、 i| u ' ' ` ,__〉〉 |
. /l 「ヾ'i| ,.r‐ `'U'U_,ィ}|
/ | ー}.l| /,r 'T"丁 ̄| ̄ | l|'|
}i iト、}( l! ,イ |__, ⊥ _|__,l|.ト、
`i iiiハ `| i l_/ _,ノノ|| \
. }iij. |. l |Y/ ‐┴''" ||\ \
゙l! | l|. 仁 _,__ || \ \
/ | |l lニレ'´ `ヾ'、 || \ \
/ |. |ヽ 「]、 ヾ>、|| \
/ .| |. ヽ`「ヽ }H|\
| | ヽ`「ヽ、、,__,,ノj‐|| ` ー─
u | | \`'〔`'T''''''T´ ,ノ|
| | \ ` ̄ ̄ ̄ /
| | `−──‐′
867 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 22:05:00
>>865
.xsession って #! みてくれたっけ?
868 名無しさん@お腹いっぱい。 sage New! 2005/08/05(金) 22:35:33
>>867
見るかどうかは、/usr/X11R6/lib/X11/xdm/Xsession に
どう書いてあるかによって変わる。デフォルト状態の
Xsessionでも、Xのバージョンによって違ったと思う。
というか、root管理者が /usr/X11R6/lib/X11/xdm/Xsession
を編集して、そもそも$HOME/.xsessionを参照しないようにされてしまうと
一巻の終り。それに気づかない程度のアホ管理者と想像するが・・
869 843 sage New! 2005/08/06(土) 00:40:56
すいません、なんかお礼を書くタイミングを逸してしまって
空文字列という意味なんですね
ありがとうございました
870 名無しさん@お腹いっぱい。 sage New! 2005/08/06(土) 13:29:38
diff -u /etc/hosts{.20050801,}とかよく使いますよ。
871 New! 2005/08/07(日) 12:53:34
>>857
そのホストとは別に、LinuxなりBSDなりマシン立ち上げて、
そっちの環境で作業すれば〜
872 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:12:15
(SUM=0;find /lib -maxdepth 1 -type f |xargs ls -lt|grep 'Aug 5'|awk '{print $5}'|while read SIZE;do SUM=`expr $SUM + $SIZE`;echo "$SIZE $SUM";done;echo "SUM=$SUM")
これでなんで最後のSUMがゼロになってしまうんでしょうか?
873 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:17:40
$find /lib/ -maxdepth 1 -type f -mtime -3|xargs wc -c
やりたいこと自体はこれでOKでした。
874 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:18:26
>>872
パイプでwhileにつないだ場合、
この部分はさらに別シェルで実行されるから
その次のセミコロン以降の変数には反映されない。
875 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:22:17
>>872
>>454
876 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:39:50
ある数値をパイプで受け取ったとして、それの合計値を出したいときには
どうするのがいいんでしょうか??
877 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:48:27
>>876
>>455
878 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 13:53:01
>>877
ありがとうございます。これでなんで上手くいくのか分りませんがとにかくそういうもんだと思っておきます。
879 名無しさん@お腹いっぱい。 sage New! 2005/08/07(日) 16:11:32
>>872
シェルによって違う。
bourneとbashはパイプからだとサブシェルになる。
kornとzshはパイプからでもサブシェルにならない。
880 名無しさん@お腹いっぱい。 New! 2005/08/08(月) 23:29:21
当方kshを利用しているのですが、whileループを使用して2ファイルを
読み込む処理がうまく行きません。
外側のループが処理されずに抜けてしまいます。
(個人的な推測では内側のループで外側のカーソルも移動している気がします)
どなたか、対処の方法を教えてくだされ。
ソースはこんな感じです。
function funcA
{
while read LINEB
do
処理あれこれ
done <$LINEB
}
while read LINE
do
funcA
done <$FILEA
881 名無しさん@お腹いっぱい。 sage New! 2005/08/08(月) 23:35:21
>>880
ヒント:リダイレクト、ファイル記述子
882 名無しさん@お腹いっぱい。 sage New! 2005/08/08(月) 23:38:46
$LINEBじは$FILEBの間違いって落ちじゃないよな。
883 880 New! 2005/08/08(月) 23:42:58
>>881さん
もうちょっと、ヒントをください。
>>882さん
先ほどのソースは間違ってますが、現実は「FILEB」です。
ご指摘ありがとうございます。
884 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 00:04:59
1 #!/bin/ksh
2 FILEB=$0
3 CNT=0
4 function funcA
5 {
6 while read LINEB
7 do
8 echo $LINEB
9 done <$1
10 }
11 while read LINE
12 do
13 echo ------$CNT------
14 funcA $FILEB
15 CNT=`expr $CNT + 1`
16 done <$0
この例だと、同じファイルを読み込んでるけど、ちゃんと動くがなぁ。
885 880 New! 2005/08/09(火) 00:34:04
>>884さん
ほ、本当ですか?
自宅にはUNIX環境がないため、確かめることはできないのですが…
なんでだろうか。。
886 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 06:20:17
起動したプロセスのプロセスIDをpidファイルに書き込みたいんですが、
どうすればいいでしょうか?
887 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 06:35:34
>>886
echo $$ > pid
念のため言っておくけど、複数個起動すれば当然"pid"というファイルの
内容は書き直されちゃうからね。
888 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 07:14:42
>>887
あざーっす!
参考になります。
ところで、やはりスクリプト内で別のスクリプトを読んでいる場合は
実プロセスIDではなくてスクリプトを実行しているプロセスのIDになってしまいますよね・・
889 名無しさん@お腹いっぱい。 New! 2005/08/09(火) 07:19:22
>>888
スクリプトを実行してるプロセスのIDになりました。
apacheとかはどうやって取得しているんでしょうか・・・
890 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 07:23:10
バックグラウンドで起動した子プロセスのPIDなら「$!」
891 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 07:55:48
>>890
あざーーっす!!!!
取れました!
1 #!/bin/sh
2
3 echo $$
4 ./test.sh &
5 echo $!
という超簡単なものなら行けたんですが・・・・・
実はtomcatの自動起動スクリプトを書いているんですが、
ソース晒して見てもらってもいいでしょうか?
892 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 16:03:39
> あざーーっす!!!!
ってなんだよ?
893 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 16:13:01
オヅラさんの挨拶は「おあざーっす」
894 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 16:14:21
>>892
http://d.hatena.ne.jp/keyword/%A4%A2%A4%B6%A1%BC%A4%B9
895 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 16:15:07
「ありがとうございます」の発音の弱勢部分を崩したんじゃない?
当たってたら、なんかくれ。
896 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 16:59:30
意味不明。
日本語を書くこと。
897 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 17:40:18
いあいあとかふんぐるいとかあざーすとか。
898 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 21:41:09
うがなぐるふたぐんとか
899 名無しさん@お腹いっぱい。 sage New! 2005/08/09(火) 21:43:31
いあいあはすたー
900 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 09:20:00
sedやawkの使い方知らないから、いつもPerlに頼っちゃうんだけど、
こういうのあんまりよくない?
901 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 10:18:29
どうでもいいよおもうよ
902 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 10:37:29
>>891
自己レスです。
結局
echo $(ps -ewo "%p %c %u %a" | awk "\$2==\"java\" && /catalina/ && \$3==\"$CATALINA_USER\" {print \$1}" | head -n 1) > $CATALINA_PID
こんな強引なやり方でプロセスID取得しました
903 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 12:56:49
そんなことするより、起動スクリプトで echo $$ > pidfile したあと exec すれば?
904 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 14:54:23
fifo つくって通信するとか
905 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 19:16:47
>>902
Tomcatが8080で待ちうけている場合
/usr/sbin/lsof -t -i TCP:8080 -P
シェルスクリプトじゃないけどね。
906 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 19:48:48
>>905
ええー、(環境によっては)lsofをわざわざインスコすんの…。
そりゃあ必要なものは何でもインスコしなきゃならんがの。プロセスidさえ
わかればよいという目的下だと、ちょっとバランスの悪さを感じる。(俺は)
907 名無しさん@お腹いっぱい。 New! 2005/08/10(水) 23:15:45
スミマセン、教えてください。
Kシェルで
count=`cat a.txt b.txt | grep ${検索条件} | wc -l`
というコマンドで検索条件に半角スペースを含む文字列を指定したい場合、どうしたら良いですか?
908 名無しさん@お腹いっぱい。 sage New! 2005/08/10(水) 23:23:53
count=`cat a.txt b.txt | grep "${検索条件}" | wc -l`
これじゃあかんの?
909 907 New! 2005/08/10(水) 23:39:59
>>908
それだと、なぜかcount=0になっちゃうんですよ。
もちろん、条件には引っ掛かる文字列もあります。
うーん。
910 名無しさん@お腹いっぱい。 sage New! 2005/08/11(木) 01:43:37
>>908
ksh使ってないんで本題はわからんが、grep -c って標準的じゃないの?
スペースの話を別にすれば
count=`grep -c $検索条件 a.txt b.txt`
でよかったんじゃないのかな。
本題も、wc -lを取り払って試せば、なぜなんだかわからないかな。
911 名無しさん@お腹いっぱい。 sage New! 2005/08/11(木) 02:03:08
grep -c -F でどうだろう?
912 名無しさん@お腹いっぱい。 sage New! 2005/08/11(木) 11:13:46
>もちろん、条件には引っ掛かる文字列もあります。
というところからして、検索文字列の正規表現が
おかしくてマッチしないだけというオチじゃなかろうか。
grep を fgrep に変えてみるとか。
913 907 sage New! 2005/08/11(木) 20:04:46
自己解決しました。
検索条件はファイルから読み込んでいるので、
半角スペースに見えているのは特殊文字かと思い、
cat -vしてみたら
行末に^Mの文字が‥
引っ掛からないわけでした。
やさしいunix板の皆様、ありがとうございました。
逝ってきます。
914 名無しさん@お腹いっぱい。 New! 2005/08/14(日) 08:45:19
csh使いのアホはいつになったら死滅するんでしょうか?
915 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 10:05:52
BSDがあるかぎり何度でも甦るさ
916 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 11:04:42
*BSDに関して一つだけ嫌いな点はデフォルトのログインシェルがcshって事だな。
NetBSDにstaticな/bin/bashを突っ込む俺も阿呆だと思うけど。
だってシングルユーザモードでもログインシェルにbashを使いたいんだよもん!
917 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 17:35:45
tcshとかもいらない
918 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 18:04:12
私も要らないんだけど、入ってないと年寄りが。。。
私はbashかksh。
919 名無しさん@お腹いっぱい。 New! 2005/08/14(日) 18:51:36
zsh
920 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 19:41:53
ログインシェルの話はどこかよそでやっておくれやす
921 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 22:12:16
出た自治厨
922 名無しさん@お腹いっぱい。 sage New! 2005/08/14(日) 23:23:49
>>921
明らかにスレ違いだし。
923 名無しさん@お腹いっぱい。 sage New! 2005/08/22(月) 17:31:43
シェルスクリプトを走らせると
????.sh: xrealloc: cannot reallocate 268435456 bytes (0 bytes allocated)
(????はファイル名)
というエラーがでます。
前同じスクリプトを動かしても何も普通に動いていたのに。。。
パーミッション、ファイルサイズ制限、ログインシェル、メモリ残量
はチェック済みです。。。
このエラーが起きる原因はなんでしょうか?
よろしくお願いします。
924 923 sage New! 2005/08/22(月) 18:14:30
解決できました。すみません(;´ω`)
925 名無しさん@お腹いっぱい。 sage New! 2005/08/22(月) 18:26:41
>>924
原因はなんだったんだよ!
926 名無しさん@お腹いっぱい。 New! 2005/08/23(火) 20:43:34
すいません、質問させてください。
bourne shを使っています。
サーバにある毎日更新されているログファイル(ファイル名に日付入り)にアクセスし、
その中で使用されている2種類の文字列をカウントして、数をエクセルで日ごとに表示させようと思っています。
今考えているやり方は、引数に日付を与えてそれを元にその日のログファイルを検索し、
その中からヒット数をカウントしてテキストかCSV形式で保存し、手作業でエクセルに流し込もうと思っています。
(grep "A" logfile | wc -l ; grep "B" logfile | wc -l) >> hoge.txt
このやり方だとテキスト・CSVどちらの形式でも、
1
2
と改行が入ってしまって、エクセルで
A B
0822 3 5
0823 1 2
0824
という横並びの形で表すことができません。
何か良い方法を教えていただけますでしょうか。
よろしくお願いします。
927 名無しさん@お腹いっぱい。 sage New! 2005/08/23(火) 20:47:49
>>926
とりあえず、その部分の改行を取るだけなら、
echo `grep "A" logfile | wc -l ; grep "B" logfile | wc -l` >> hoge.txt
にすればいいわな。
928 926 New! 2005/08/23(火) 21:26:20
>>927さん
あぁ、なるほど・・・
近いところまで行ってたのに、そこに辿り着けませんでした・・・
ありがとうございます!
これでひとまずはできそうです。
あとは手作業でやる手間を省けるように、表形式(もしくはそれに近い形)で
表示させれるように考えてみます。
もし何かご存知の方がいらっしゃいましたら、ご教授ください。
929 名無しさん@お腹いっぱい。 New! 2005/08/23(火) 21:44:10
bashでお聞きしたいのでつが、
if文で文字列比較する際、
頭の2文字が"/a"に一致する、とか最後の文字列が".jpg"に一致する
と言う条件分は、どうすればいいんでしょうか?
正規表現使わないと出来ないのでしょうか?
930 名無しさん@お腹いっぱい。 sage New! 2005/08/23(火) 21:49:54
>>929
bashじゃなくても同じ。
if じゃなくて case 使え。
case $mojiretsu in
/a*)
hoge;;
*.jpg)
hoge;;
esac
だな。case文のパターンは正規表現ではなく、
単なるワイルドカードなので、混同しないように。
931 929 New! 2005/08/23(火) 21:51:50
>>930
早々のレス、ありがとうございます。
わかりますた。
932 名無しさん@お腹いっぱい。 sage New! 2005/08/23(火) 22:19:21
>>926
まず、そのやり方では文字列を数えていないことに注意してください。
grep| wc -l では、文字列を含む行を数えているのであって、
たとえば1行の中に目的の文字列が複数含まれていても、
1行としか数えられません。それで本当にいいんですか?
933 名無しさん@お腹いっぱい。 sage New! 2005/08/23(火) 22:33:36
>>926
Webサーバのログならanalog使え。
と、勝手な仮定で適当なことを言ってみるテスト。
934 926 sage New! 2005/08/23(火) 23:47:47
>>932さん
確かにおっしゃる通りです・・・
現状では特徴のある文字列でgrepすることで1行ずつで抽出しようと
考えています。
何かこのまま行くとこちらを基準にした名前付けをすることになったりしそうなので、
違う方法を考えてみます。
>>933さん
analogは初めて知りました。
こんなことができるんですね・・・
今回はちょっと学校の環境なので自由には入れられないんですが、
ゆくゆくは自サーバでと考えていたのでその時に参考にさせていただきます。
お二人ともありがとうございます。
935 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 04:45:28
ワイルドカードパターンって
正規表現っていってもいいんですか?
936 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 06:27:37
>>935
ちがう
937 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 06:57:51
よく使われる意味での正規表現とは違うけど、
概念としては正規表現の一種といっていいんですかね?
938 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 07:28:08
>>937
機能だけ見れば正規表現のごく一部の機能のみをもつ
サブセットだと考えても実用上ほとんど問題はないが、
それでも正規表現の一種だと言ってしまうのは間違い。
939 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 07:36:10
>>937
何度も聞き返すのしつこいぞ。
シェルのワイルドカードは、正規表現とは全く違う。
サブセット(部分集合)でもないし、正規表現の一種でもない。
例えば、a*.jpg というのがあったとする。
これがシェルのワイルドカードなら、
ahoge.jpg aHage.jpg asoko.jpg ....
などにマッチする。
一方、 a*.jpg が正規表現だとすると、上記のものにはマッチせず、
aaaaaa.jpg aaaaBjpg sjpg .... などといった文字列にマッチする。
全く違うものだよ。
940 937 sage New! 2005/08/24(水) 07:42:09
僕は >>935 とは違いますよ。
実装がまったく違うのはわかってますが、
学問的な意味での正規表現ではワイルドカードパターンも
正規表現というのかなあと >>935 と同じ疑問を持ったわけです。
有限オートマトンがなんとかとかいうやつ。
941 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 08:11:42
>>940
実装が違うだけじゃなくて、仕様自体が違うの。
だから、「学問的な意味」でも、
ワイルドカードパターンのことを正規表現とは言わない。
もともと、メタキャラクターの表現方法がいろいろあったのを、
sedやgrepで使うために「標準化」して、
"regular expression"と定義したわけ。
で、「正規表現」というのは実は誤訳で、
本来なら「標準表現」と言うべきもの。
(シェルで使っているのは標準以外の表現方法)
sedやgrepで使う表現がシェルのものとは異なるため、
sedやgrepが、「こっちが標準ですよ」と言っているかのごとく、
「標準表現=正規表現」というわけ。
もし、文献などでシェルの * のことを「正規表現」と
書いてあるものがあったら、それは大間違いなので買ってはいけない。
942 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 08:16:38
>>941
> もともと、メタキャラクターの表現方法がいろいろあったのを、
> sedやgrepで使うために「標準化」して、
> "regular expression"と定義したわけ。
それは違うと思うぞ. Unix の正規表現と使ってるメタキャラが違
う正規表現の実装だってあるわけだし...
943 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 08:31:26
しっかし、オートマトン知らずに大きくなったやつがけっこういるのね
ま、受理できる言語の集合がサブセットだってこった
944 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 08:50:52
>>943
> ま、受理できる言語の集合がサブセットだってこった
>>941 のような恥ずかしい奴に言っても意味不明だと思う
945 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 09:33:09
>>940 が、「学問的な意味での正規表現」などという
自己定義用語を持ち出しているのが間違い。
シェルスクリプトスレで、UNIXの世界で
正規表現と言ったらsedなどで使うものの意味にしかならない。
ただでさえ、初心者がシェルのメタキャラクターを
正規表現だと誤解する例があって混乱を招くので、
>>940 のようなカキコは謹んでくれ。
正規表現については sed スレあたりでやってくれ。
946 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 10:00:00
>>945
オートマトンとか言語理論の方から見れば,
シェルスクリプトのワイルドカードも立派な
正規表現だと思うが...
947 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 10:04:25
>>946
本気でそう思い込んでる香具師は
シェルスクリプトを書く素質がないので、
他の板にお帰りください。
948 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 10:10:09
>>940
「実装が違う」というのは、
具体的なプログラム(コーディング)は違うけど
全体の仕様は同じ場合をいう。
たとえば、sendmailとpostfixは、メールサーバーの異なる実装。
実装は違うが、SMTPプロトコルでメールが送れるという
仕様は同じ。
しかし、正規表現とシェルとでは、実装が違うだけでなく、
仕様が違う。
だから、「実装が違うが、同じようなもの」みたいないい方は
それ自体が間違い。
949 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 10:30:12
もともと正規言語とか正則言語とか呼ばれるものを記述するための表現である
ところの「正規表現」を、あたかも Posix/Unix の正規表現をさす固有名詞の
ように扱っているから祖語が起きているんじゃねぇの?
950 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 10:49:54
正規表現(せいきひょうげん:regular expression)とは、文字列の集合を
一つの形式で表現する方法のこと。正則表現(せいそくひょうげん)とも
呼ばれる。
アルファベット A={a1,...,an} 上の正規表現とは
1. 空記号列 ε は正規表現である
2. ai(Aの任意の要素)は正規表現である
3. X と Y が正規表現ならば、
1. X|Y も正規表現である
2. XY も正規表現である
3. {X}* も正規表現である
(以上Wikipedia日本語版)
glob() is a Unix library function that expands file paths according
to a minimal regular expression syntax. The syntax of glob patterns
is not identical with that of regular expressions used by Unix
utilities like grep.
(以上Wikipedia英語版)
後者glob()は要するにシェルのメタキャラクタ展開。ごらんの様に
正規表現の定義上も、glob()の定義上もglobは正規表現であることを
裏付けている。別に混乱も齟齬も起きてないよ。
951 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 11:06:47
そのglobの定義ダメダメじゃん。
ワイルドカードは正規表現の真のサブセットなのに、
これをminimal regular expressionなんて呼ぶのが齟齬なんじゃないか。
どの正規表現にも対応するワイルドカード表記があると証明してくれたら、
その定義を受け入れるよ。
952 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 11:24:40
>>950
そんなことを言い出したら、
「シェルって本当は貝っていう意味ですね。
だから、Bourne shやbashだけでなく、ほら貝やアサリ・シジミも
シェルですね」
と言っているようなもの。
UNIXで正規表現と言ったら、シェルのglobのことは指さない。
わかったら二度と出てくるな、ボケ。
953 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 11:32:25
馬鹿っぽい。 >>952
954 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 11:38:57
>>953
あのようなのは、「ばかまるだし」っていいませんか?
955 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 13:17:45
>>950
globでX|Yや{X}*を表現できるのか?
956 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 13:56:31
たぶん>>935>>937はワイルドカードで記述できるものは正規言語
(http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E)
かって聞きたかったのだろう。
wikipeidaにもある通り正規表現とワイルドカードは全く別物
ワイルドカードで表現可能な言語は正規表現で表現できるが逆は不
可能なので両者は等価ではない。
957 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 14:02:54
>>950
やれやれ、貼っとくか、
man 7 glob より:
NOTES
Regular expressions
Note that wildcard patterns are not regular expressions, although they
are a bit similar. First of all, they match filenames, rather than
text, and secondly, the conventions are not the same: e.g., in a regu-
lar expression `*' means zero or more copies of the preceding thing.
"wildcard patterns are not regular expressions"
と言ってるんだから明白だね。
ワイルドカードパターンと正規表現とは違う、
たとえ少し似てるところがあっても。
958 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 14:13:08
犬っぽい。 >>957
959 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 14:14:02
>>957
本質を理解してなさそう。
マッチの対象がファイル名かテキストかの違いで、
*とかの表記の意味が違う、
といわれただけで納得か?
960 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 14:51:29
>>955でFAだろ。
globが正規表現の一種なら>>950が引用した定義により帰納的に定義される集合を
表現できなければならないが、その能力はない。
>>950は自分が引用したものの意味もわかっておらず自滅してる。
961 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 14:53:42
>>959
本質も何も、UNIXでは、
ワイルドカードパターンのことは正規表現とは定義していない、
というだけのことではないのだろうか。
それ以外の定義を持ち出してUNIX板で議論するなら
板違いというべきもの。
962 950 sage New! 2005/08/24(水) 15:33:14
X|Yは{A,B}という表記で(たぶん)実現できるが
X*はたしかにないなあ。自滅だ。
>>961
sedのいうところの正規表現とegrepの正規表現はかなり異なるが、
どちらも正規表現と言っている。perlやphpはegrepに近いが、
いろいろ違う。だから、「UNIXでは」なんて言っても意味ないよ。
(POSIXのBREとEREは分かっててあえてsed,egrepと言ってるからね、念のため)
963 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 15:42:21
kshとかだと X* も出来る。
964 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:00:42
>>962
だから、Basic RE と Extended RE は 正規表現と言っていいんだよ。
globはBasic REでもExtended REでもないから、
正規表現と言ってはいけない。言うと間違い。
965 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:13:04
>globはBasic REでもExtended REでもないから、
>正規表現と言ってはいけない。
ひどいな。
966 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:17:54
いや、さすがにそこまで行くとただの釣りだろう
967 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:28:34
>>965 >>966
自演乙。
glob を正規表現だと主張しているのはお前一人だけのようだ。
968 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:31:27
だからもういいって。まあ1000近いから続けてもいいけど。
969 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:39:06
>>963
ほんとだ
*(foo|bar)とかできるね、egrep式には(foo|bar)*の意で。
正規表現と言っていいかどうかまでは調べてないから分からんが。
シェルのファイルパターンマッチの場合、. .. / の扱いが正規表現と呼ぶのに
問題になりそうだ。(ファイルシステムの問題だけなら表現として無問題)
970 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:40:29
965は966ではないし、glob を正規表現だとも主張してないぞ。
971 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:42:16
次スレのテンプレには、
「シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(sedスレへ)」
と、明記希盆。
972 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:51:07
>>967
950が撤回してるからもう一人もいないんじゃないか?
今は964の変な理屈(たぶん釣り)に反応してるだけで。
973 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:51:56
ここ何人が自演してるの?
974 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 16:56:13
1-973まで全部おれが書いたよ
975 1-975 sage New! 2005/08/24(水) 20:48:00
>>974
(゚Д゚)ハァ?
勝手に騙るな、氏ね
976 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 21:41:01
ちょうと切りのよいところで話も落ち着いたし、次スレよろ。
977 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 21:41:54
我煽る、ゆえに我蟻
978 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 22:04:16
>>959
何を言っているのやら。
「マッチ対象」は関係無いでしょう。ファイル名に対してregexpを使うこともできるし、
テキストに対してもワイルドカードパターンを使えるのだから。
実装も違う、仕様も違うものをごっちゃにされても困る。
「経済の世界では、defaultの意味は云々」のレベル。
979 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 22:13:03
980は次スレよろ
980 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 22:15:41
981は次スレよろ
981 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 22:24:43
982は次スレよろ
982 名無しさん@お腹いっぱい。 New! 2005/08/24(水) 22:26:17
勃起age
983 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 22:59:56
>>978
あほか
>>957をすみからすみまで読め
984 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:06:25
では、次スレは >>980 に任せて埋めましょう。
「日常の世界ではメモリーは思い出の意味」
で、同じような例、>>985 どうぞ…
985 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:18:09
とある界隈では「夏祭り」は(ry
986 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:33:10
なぁ、
シェルを実行するときに . を付けるのはなぜ?
$. 2ch.sh
987 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:44:11
>>986
お前さん、何か壮大な勘違いをしてないか?
それともアレか、$PATHの最後に./を入れる派の振りをした壮大な釣りか?
988 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:44:13
>>986
子プロセスを起動させないため
989 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:49:16
くま
990 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:51:56
>>987
勘違い?考えすぎじゃない?
もしかして、カレントディレクトリに対してパスを通す事を行っているの?
でもそれって、本来なら./2ch.shとやるべきでは??
>>988
そうなの?え、いや、でも、子プロセス起動したよ?
$. 2ch.sh で、2ch.shの中からさらに2ch.shを呼び出しますたよ
991 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:53:00
トゥエルはラピュタ語で真
992 名無しさん@お腹いっぱい。 sage New! 2005/08/24(水) 23:58:13
ちなみに、何も入力せずにただ . と打つと引数にファイル名を要求してくる。
こいつの正体はいったい・・・
993 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:00:54
>>986
「シェルを」っていうか「シェルスクリプトを」だろ。
>>990
> そうなの?え、いや、でも、子プロセス起動したよ?
どうやって確認したの?
>>992
man sh とか。
bash なら help . とか。
994 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:05:04
>>986
それ、どこで覚えたの?
995 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:08:30
>>993
丁寧にありがとう、お兄ちゃん
英語が出てきてよく理解できなかったけど、
$PATHを読みにいかないでね、ってお願いしてるんだね♪
子プロセスの生成は、プロセスIDとユーザIDをpsコマンドで確認したよ♪無限ループになるからすぐわかるよ
996 sage New! 2005/08/25(木) 00:08:51
カレントシェルで実行する
997 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:09:56
分かってると思うけど、次スレ立ってるよ
シェルスクリプト総合 その3
http://pc8.2ch.net/test/read.cgi/unix/1124889646/
998 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:11:10
>>994
なんかの雑誌のシェルスクリプトの入門記事に書いてあった
いままで漠然と使っていたけど、ふと疑問に思ってネットを調べたら、 . じゃなかなか検索できんわな
999 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:11:24
>>995
「.」を使っても$PATHは見る
1000 名無しさん@お腹いっぱい。 sage New! 2005/08/25(木) 00:11:47
man source
おや?
1001 1001 New! Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/29009868
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
http://blog.seesaa.jp/tb/29009868
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
Wait for feeding...

