[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 01:32 / Filesize : 243 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合@LINUX Part4



1 名前:login:Penguin mailto:sage [2008/05/17(土) 13:44:57 ID:9hFWtCOD]
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。

perlやらPythonやらの話が混ざっても良いんでない?

Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/
Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/
Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/

>>2-5あたりに色々と。

136 名前:login:Penguin mailto:sage [2008/06/12(木) 21:41:49 ID:JqmZrOtu]
>>133
awkにあるmktime, strftime関数を使うのが一番手軽かな。


137 名前:133 mailto:sage [2008/06/12(木) 23:39:42 ID:mOwz8//t]
>>134-136
実現できました!
即レス助かりました。ありがとうございます。

138 名前:login:Penguin mailto:sage [2008/06/13(金) 08:03:49 ID:TrNV+QBw]
>>126 は解決したのだろうか。
俺には意図が解らなかったが。

139 名前:126 [2008/06/13(金) 09:47:03 ID:j8pwVaea]
>>138
心配していただきありがとうございます。まだ未解決です。
簡単にいうと
aaa.txtが
[100]
201
202
203

[200]
301
302
303
となっている場合に
[100] 201
[100] 202
[100] 203

[200] 301
[200] 302
[200] 303
としたいんです。(スペースのところはタブ区切りを入れたいです)
お願いします。

140 名前:login:Penguin mailto:sage [2008/06/13(金) 10:12:43 ID:+c/4qhZ/]
#!/usr/bin/perl
my $i = '';
while (<>) {
chomp;
if ($_ eq '') {
$i = '';
print "\n";
} elsif ($i eq '') {
$i = $_;
} else {
print "$i\t$_\n";
}
}

141 名前:126 [2008/06/13(金) 10:25:54 ID:j8pwVaea]
>>140
それを今試してみたら
[100]
[100] 201
[100] 202
[100] 203
[100]
[100] 301
[100] 302
[100] 303
みたいになっちゃいました。
せっかくコードを書いていただいたのですがちょっと
結果が違いました。すみません。

142 名前:login:Penguin mailto:sage [2008/06/13(金) 10:28:27 ID:5MIbjJC0]
> 126

awk 'BEGIN {OFS = "\t";}; $0 != "" {if ($0 ~ /^\[/) section = $1; else print section, $1}' aaa.txt

多分もっと格好よくできるはずなんだけどなぁ

143 名前:login:Penguin mailto:sage [2008/06/13(金) 10:38:47 ID:obeusV/U]
>>139
gawk '{if(match($0,/^\[[0-9][0-9]*\]$/))t=$0;else{if(length)$0=t "\t" $0;print;}}' aaa.txt

sed -e '/^\[[0-9][0-9]*\]$/{h;d}/^..*/{x;G;s/\n/\t/;p;s/\t.*//;h;d}' aaa.txt

まだ短くならないかな。

144 名前:login:Penguin mailto:sage [2008/06/13(金) 10:43:39 ID:+c/4qhZ/]
>>141
203 の次の行は空行じゃないの?



145 名前:login:Penguin mailto:sage [2008/06/13(金) 10:45:41 ID:+c/4qhZ/]
>>126
> #変数eeeにxxx.txtの2行目から15行目を代入します
> #xxx.txtの行の先頭が20から始まる場合
最初と言ってることぜんぜん違うじゃねーか。

146 名前:126 [2008/06/13(金) 11:04:27 ID:j8pwVaea]
>>142
おおおっ。すごいです。ありがとうございます。
で、あまりにも簡単に説明しすぎたせいで少し動作が違いました。
実際にはaaa.txtは複数の列でできています。
[100]
201 100 200
202 100 200
203 100 200
""

[200]
301 100 300
302 100 300
303 100 300
""

あと先頭が数字では始まらないけど文字列が入っている場合もあります。
その列は何も処理をしたくないんです。もちろん空白の列にも何も処理をしたくないです。
説明が不足していてすみません。お願いします。

147 名前:login:Penguin mailto:sage [2008/06/13(金) 11:08:06 ID:+c/4qhZ/]
どんどん条件変わるな。
もう付き合いきれん。

148 名前:login:Penguin mailto:sage [2008/06/13(金) 11:09:51 ID:+c/4qhZ/]
>>140 を好きに改造して使ってくれ。

149 名前:login:Penguin mailto:sage [2008/06/13(金) 11:57:53 ID:5MIbjJC0]
>>126

#!/usr/bin/awk

BEGIN {
OFS = "\t"
}

{
if ($1 ~ /^\[.+\]$/) {
section = $1
} else if ($1 ~ /^[0-9]/ ) {
sub(FS, OFS) # これがいるかどうか分からない
print section, $0
} else {
print
}
}

まぁ暇だし,自分の勉強にもなるしな

150 名前:126 [2008/06/13(金) 12:12:09 ID:j8pwVaea]
>>147
ごめんなさいごめんなさい。許して下さい。
>>148
ありがとうございます。今から試してみます。感謝してます。

151 名前:126 [2008/06/13(金) 12:24:52 ID:j8pwVaea]
>>149
^ syntac error
^ 正規表現が終端がされていません
って出ます。
そのコードを2.awkとして保存してchmod 755 で
./2.awk < aaa.txt > bbb.txt
としたんですけど僕のやりかたが悪かったんでしょうか。
もうちょっと試してみます。すみません。

152 名前:login:Penguin mailto:sage [2008/06/13(金) 13:34:55 ID:frtx8yVp]
シェルとかプログラミング言語よりも,ちゃんと説明できる日本語を習得するのが先だとしみじみ思う.

153 名前:126 [2008/06/13(金) 13:45:24 ID:j8pwVaea]
awk -f ./2.awk < aaa.txt > bbb.txt で実行できました。すみません。
でも結果としては数字のところにタブが挿入されただけでうまくいきませんでした。
また時間がある時にで結構ですので教えてくださると助かります。よろしくお願いします。

154 名前:126 [2008/06/13(金) 14:31:16 ID:j8pwVaea]
あれれ。すみません。aaa.txtを作って試してみたらうまく動作してました。
元データのほうに何か問題があるようです。確認してみます。



155 名前:126 [2008/06/13(金) 14:57:25 ID:j8pwVaea]
>>149
ありがとうございます。感謝感謝です。
if ($1 ~ /^\[.+\]$/) {

if ($1 ~ /^\[.+\]*$/) {
にして無事動作しました。[]の後ろに文字列が入っているのが原因でした。
本当にありがとうございます。

156 名前:login:Penguin mailto:sage [2008/06/15(日) 03:39:35 ID:sc6xQlic]
#!/bin/sh
n=`cat text.txt`

で読み込んだ$nに対して
一行ずつ処理を行いたいのですがどうしたらよいでしょうか

for a in $n

を使おうと思ったのですが、スペースでも分割されてしまい
理想の動作をさせることができません
よろしくお願いします

157 名前:login:Penguin mailto:sage [2008/06/15(日) 04:58:13 ID:wo2EqLas]
cat text.txt | while read line;
do
echo "$line";
done

while read line;
do
echo "$line";
done < text.txt

ダブルクオート

158 名前:login:Penguin mailto:sage [2008/06/15(日) 07:24:02 ID:Wqtu/af2]
done < text.txt はbash依存だったような

159 名前:login:Penguin mailto:sage [2008/06/15(日) 09:18:42 ID:sc6xQlic]
>>157
できましたありがとうございます!
whileの中でreadを再び使えば同時に何行まとめて、という処理が出来るんですね

160 名前:login:Penguin mailto:sage [2008/06/15(日) 09:44:47 ID:riPFD/ci]
>>158
Linux板的にはいいんでないの。 Unix板だったら気にしたほうがいいかもしれんが。


161 名前:login:Penguin mailto:sage [2008/06/15(日) 10:19:04 ID:+vOR/R57]
>>158
/bin/shでも動くからおk

162 名前:login:Penguin mailto:sage [2008/06/15(日) 10:47:11 ID:Wqtu/af2]
dashもOKだから、まぁいいのか

163 名前:login:Penguin mailto:sage [2008/06/15(日) 12:04:09 ID:MYPOmB3X]
そのあたりってPOSIXでちゃんと規定されてるものなの?
単にbashをまねて取り込んだshなのか、真のshからサポートする機能か
どうしたら見分けつけられるのかよくわからない。

164 名前:login:Penguin mailto:sage [2008/06/15(日) 12:33:26 ID:+vOR/R57]
www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html



165 名前:login:Penguin mailto:sage [2008/06/15(日) 12:43:50 ID:cU/mpVoU]
bash や dash があるなら、cash もあるのかな。
Csh-Again SHell とか。

166 名前:login:Penguin mailto:sage [2008/06/15(日) 12:53:50 ID:MYPOmB3X]
>>165
生まれ変わらなくていい。そのまま墓場で寝ててくれ>*csh


167 名前:login:Penguin mailto:sage [2008/06/15(日) 12:56:31 ID:MYPOmB3X]
>>164
トン。$(command)とか$((expr))って標準だったんだとか色々勉強になるな。




168 名前:login:Penguin mailto:sage [2008/06/15(日) 18:20:40 ID:ue0hzIrD]
bashで文字列の最後尾が / にあたるものをヒットさせたいのですが、どのようにしたら宜しいでしょうか?

169 名前:login:Penguin mailto:sage [2008/06/15(日) 18:49:35 ID:LSl6/nZ+]
bashにそんな機能はない

170 名前:login:Penguin mailto:sage [2008/06/15(日) 18:53:49 ID:aTr7Cyki]
bash()笑

171 名前:login:Penguin mailto:sage [2008/06/15(日) 18:54:17 ID:2ND6A6mz]
grepで$を使うって話?

172 名前:login:Penguin mailto:sage [2008/06/15(日) 19:14:12 ID:AOTtbX65]
エスケプすればなんとでも。

173 名前:login:Penguin mailto:sage [2008/06/15(日) 19:23:37 ID:lWrIWsAm]
>>168
case "$str" in
*/)
  echo "match."
  ;;
*)
  echo "unmatch."
  ;;
esac


174 名前:login:Penguin mailto:sage [2008/06/16(月) 02:02:05 ID:irk9chgy]
>>168です。仕事が入ってしまいレス遅れました、すいません。
bashにそのような機能はありませんか・・・。
grepでは無く条件式で文字列の末尾を判定させたかったのですが
何も知らない自分としては>>173さんの書いて頂いたのを参考に
しようかと思います。助かりました、有難うございます。



175 名前:login:Penguin mailto:sage [2008/06/16(月) 08:11:50 ID:JECOF4SI]
>>169に対する皮肉としか読めない。

176 名前:login:Penguin [2008/06/16(月) 11:27:24 ID:1Ms3xCVR]
#!/bin/csh -f

set s=$1
set t=$2
set f=$3

cat $f | tail +$s | head -$t

exit 0
echo ------------------

以上を改良しろ、と言われました。みなさんならどうしますか?どなたか教えて下さい。

177 名前:login:Penguin mailto:sage [2008/06/16(月) 11:28:31 ID:/AfhYEBu]
>>176
*csh を使うのをやめる。まずそれからだ。

178 名前:login:Penguin mailto:Sage [2008/06/16(月) 12:44:56 ID:qvjZYD3V]
>>176
速度面で改善ならアセンブリで書き直してやれ

179 名前:login:Penguin mailto:sage [2008/06/16(月) 13:59:17 ID:6AAfiJB4]
>>176
とりあえずマルチをやめること

180 名前:login:Penguin mailto:sage [2008/06/16(月) 23:26:05 ID:gSPrzSdg]
>>176
次に日本語を勉強すること

181 名前:login:Penguin [2008/06/17(火) 07:40:56 ID:AmqP2Db0]
abc
bcd
cde
<abc> hoge hoge
(スペースはタブです)
となっている場合、<abc>の列を削除したい場合
sed 's/\t//g' | sed "s/<abc>*//g" > hoge
だとうまくいかないんですけどどこかおかしいんでしょうか。
ご指摘お願いします。

182 名前:login:Penguin mailto:sage [2008/06/17(火) 08:11:56 ID:+a7Qx5aV]
>>181
sed 's/^<abc>.*//'

* は「前のものの0回以上の繰り返し」。
シェルの glob と違って「任意の文字列」ではない。

183 名前:login:Penguin [2008/06/17(火) 08:57:44 ID:AmqP2Db0]
>>182
ありがとうございます。試してみます。

184 名前:login:Penguin [2008/06/17(火) 10:01:29 ID:AmqP2Db0]
先程はありがとうございました。今度はまた問題が出ました。
aaa
bbb
ccc
ddd
eee
となっているファイルに例えばcccの行にだけ行頭にタブを二ついれたいんですけど
どうすればいいでしょうか。検索してみたんですけどそんなことをする例がないので
わからないです。お願いします。



185 名前:login:Penguin mailto:sage [2008/06/17(火) 10:12:39 ID:+a7Qx5aV]
>>184
sed 's/^ccc$/\t\tccc/'

186 名前:login:Penguin [2008/06/17(火) 11:07:44 ID:AmqP2Db0]
>>185
ありがとうございます。
でも僕の例の出しかたが悪かったです。正確には英語じゃなくて日本語なんです。
あああ
いいい
ううう
えええ
おおお
となってて「ううう」の先頭行に処理をしたいんです。
本当にすみません。

187 名前:login:Penguin mailto:sage [2008/06/17(火) 20:22:32 ID:RyDH/vmA]
同じ人が、ここ10日ぐらい似たような質問を繰り返しているような気がしてならない。

188 名前:login:Penguin mailto:sage [2008/06/17(火) 21:23:10 ID:yjVz7+7h]
>>187
わわわ
たたた
ししし
ももも
そそそ
ううう
おおお
ももも
いいい
ままま
すすす

189 名前:login:Penguin mailto:sage [2008/06/18(水) 07:36:46 ID:U0oDy3CU]
>>186

$ cat aiueo.txt
あああ
いいい
ううう
えええ
おおお

$ sed 's/^ううう/\t\tううう/' aiueo
あああ
いいい
ううう
えええ
おおお

>>185の例と全く同じにできるんだが、お前は試しもせずに文句ばっかりたれとんのか。
いい加減にしろデコスケ!

190 名前:login:Penguin mailto:sage [2008/06/18(水) 21:41:14 ID:wntHkGxD]
>>189
うっせえよ秋葉原殺傷事件予備軍。

191 名前:login:Penguin mailto:sage [2008/06/18(水) 22:06:13 ID:POz9Y1nl]
Debian etch使ってるんだが初期設定のスクリプトって作れたりする?

例えば・・
/etc/apt/sources.list
OS全体のフォント設定
必要なツールなどインスコ

などなど・・

複数台にインスコするのはいいけど初期設定がマンドイ・・


192 名前:login:Penguin mailto:sage [2008/06/19(木) 00:14:33 ID:syeq8gZ9]
>>191
やれば作れるんじゃね?
がんばれ。

193 名前:login:Penguin mailto:sage [2008/06/19(木) 01:01:28 ID:x+K2/T6V]
>>191
一番簡単なのはapache走っているサーバーにディレクトリ作り、そこの設定ファイルのテンプレとかを
置いておく。 そして新しいシステムの基本インスコをしてネットに繋がったら:

wget hoge/~me/install-etch
./install-etch

で、そのスクリプトの中でapt-getしたり設定ファイルを書き換えたり、必要なファイルをwgetで持って来て
置き直したりとかごちゃごちゃ書いておく。

RH系だったらkickstartがお薦め。 sargeでdebianのカスタムインストーラー作りも一時したけど
えらくめんどくさかった。 最近はもっと優しくなったのかな?


194 名前:login:Penguin mailto:sage [2008/06/19(木) 01:15:35 ID:ETqS5qxr]
>>192
おう

>>193
ようはコマンドラインを書けばいいわけだよね。とりあえずこれやってみる。
Kickstartをググってみたら簡単そうだけどローカル鯖必要そうだね。

どうもでした。



195 名前:login:Penguin mailto:sage [2008/06/19(木) 01:32:21 ID:JFsnEc1J]
すいません エスケープの使い方で質問させて下さい。
下みたいなスクリプトで

#!/bin/sh
A=tama
B=mike
for i in $A $B
do
tmp=`eval perl -e \'\$\a \= \"$i\"\; if \( \$\a \=\~ \/\^\\\S\+\(\\\S\{1\}\)\$\/ \) \{ print \"s\$\{ 1 \}x_player\" \}\'`
echo "$tmp"
done
exit 0

一応こうすれば動くのですが、
perlの行のところにあるエスケープを減らしてすっきりさせたいのです。
良い方法を教えて下さい。

196 名前:login:Penguin [2008/06/19(木) 01:45:49 ID:syeq8gZ9]
>>195
perl スクリプトを別ファイルに追い出す。

197 名前:login:Penguin mailto:sage [2008/06/19(木) 08:19:04 ID:k7GKeo3u]
シェルに評価されてはいけない部分をシングルクォートする。
i=tama
perl -e 'printf( "%s: nya-\n", '"$i"' )'

198 名前:login:Penguin mailto:sage [2008/06/19(木) 17:34:35 ID:qZMvy29K]
shの質問です
スクリプトがCtrl+Cなどで終了させられた時に特定の動作を持たせたいのですが
どのようにすれば実装できるでしょうか?

199 名前:login:Penguin mailto:sage [2008/06/19(木) 17:37:01 ID:syeq8gZ9]
>>198
trap

200 名前:login:Penguin mailto:sage [2008/06/19(木) 18:08:53 ID:qZMvy29K]
>>199
ありがとうございますm(_ _)m

201 名前:login:Penguin mailto:sage [2008/06/19(木) 23:30:35 ID:JFsnEc1J]
>>196
 なるべく一つのファイルにまとめたいんで。。。アドバイスありがとうございます。
>>197
197さんのアドバイスを参考にして、perlの行を下のように書くと動きました。
tmp=`perl -e '$a = "'"$i"'"; if ( $a=~ /^\S+(\S{1})$/ ) { print "s${ 1 }x_player" }'`

 しかし、こう書くと$aの前のシングルクォーテーションがバッククォーテーションで
perlを実行した時に消えると思うのですが、sh -x で確認して見ると消えてません。
これで正しく書けているんでしょうか?勉強不足ですみませんがよろしくお願い致します。

202 名前:login:Penguin mailto:sage [2008/06/20(金) 08:28:49 ID:PYgL06kk]
evalに渡すと消えるという意味なら。

tmp=`eval perl -e "'"'$a = "'"'""$i""'"'"; if ( $a=~  /^\S+(\S{1})$/ ) { print "s${ 1 }x_player" }'"'"`

203 名前:login:Penguin mailto:sage [2008/06/20(金) 09:48:11 ID:mQhh6bQc]
tmp=$(perl -e 'print "s${1}x_player" if $ARGV[0]=~/^\S+(\S{1})$/' "$i")

204 名前:login:Penguin mailto:sage [2008/06/21(土) 01:08:40 ID:lACEyUp0]
shでスクリプトを走らせている時に
スクリプト内でスーパーユーザの権限を得るにはどうやったらいいのでしょうか

スクリプトにsuを埋め込むとスクリプトが止まってしまって
exitしてから再びスクリプトが動き出すのですが
権限だけ持たせてスクリプトをそのまま走らせたいと思っています
何か手は無いでしょうか



205 名前:login:Penguin mailto:sage [2008/06/21(土) 01:11:38 ID:4k/SNXDG]
>>204
sudo

206 名前:login:Penguin mailto:sage [2008/06/21(土) 01:42:03 ID:EyYhn7dK]
リサ

207 名前:login:Penguin mailto:sage [2008/06/21(土) 01:49:53 ID:lACEyUp0]
>>205
ありがとうございます

(自分にとっては)有用なスクリプトが組めましたm(_ _)m
感謝の極みです

208 名前:login:Penguin mailto:sage [2008/06/21(土) 12:58:15 ID:9C5PYE0l]
ふとした疑問だが、スクリプト内でスーパー・ユーザにスイッチするのと、スクリプト自体をスーパー・ユーザ専用にするのと、どちらが安全なのだろう。

209 名前:login:Penguin mailto:sage [2008/06/21(土) 13:28:05 ID:ESYd9xh6]
>>208
運用の仕方によって変わるでしょ。
一概にどちらが安全とか言えないよ。

210 名前:login:Penguin mailto:sage [2008/06/22(日) 13:34:22 ID:IsXP6W78]
標準出力は標準出力のままで標準エラーだけをパイプしたいのですが
どのようにすればよいですか?(sh)


211 名前:login:Penguin mailto:sage [2008/06/22(日) 13:38:00 ID:aBc+5bz2]
exec 3>&1
(echo stdout; echo stderr >&2) 2>&1 1>&3 | rev

212 名前:210 mailto:sage [2008/06/22(日) 13:59:15 ID:IsXP6W78]
>>211
どうもありがとうございました。

213 名前:login:Penguin [2008/06/22(日) 16:57:49 ID:3HpeFvyL]
あれ?更新されてない


214 名前:login:Penguin [2008/06/22(日) 17:03:12 ID:3HpeFvyL]
rsyncをあえてつかわずローカルでのWEBサイトの更新を別のPCへFTP(put)
したいのですが混乱してきましたどなたかわかりますでしょうか?
#!bin/sh
#pukiwiki内のファイルで更新のあったファイルのあぶりだし。
echo = "`ls --full-time -F`" > fulltime
awk '{print $6$7}' /var/www/html/pukiwiki/fulltime
awk '{print $6$7}' /var/www/html/pukiwikibk/fulltime2
diff=diff /var/www/html/pukiwiki/fulltime /var/www/html/pukiwikibk/fulltime2
#diffの中身が空なら抜ける
if [ "$diff"-eq /dev/null ];then
logout
#diffの内容がディレクトリなら再度中身のファイルの更新がないかを確認。
#diffの中から$10のファイル名を取り出す



215 名前:login:Penguin mailto:sage [2008/06/22(日) 17:04:18 ID:G5GD5xl+]
>>214
lftp使え。

216 名前:login:Penguin [2008/06/22(日) 17:13:28 ID:3HpeFvyL]
わかりました。ありがとうございます。lftp調べてみます。

217 名前:login:Penguin [2008/06/22(日) 17:19:23 ID:3HpeFvyL]
ローカルになく、リモートにのみあるファイルを削除したいときは
mirror -R -e

mirror -e
などできるみたいですが、
ローカルで更新されたファイルのみアップといったこともできるのでしょうか?

218 名前:login:Penguin [2008/06/22(日) 17:47:05 ID:3HpeFvyL]
#!/bin/sh

cd /var/www/html/pukiwiki
lftp -e "mirror -e -vvv pukiwiki; bye" ftp:XX.XX.XX.XX/var/www/html/pukiwiki

これだけでいけますでしょうか?

219 名前:login:Penguin mailto:sage [2008/06/22(日) 18:16:38 ID:7nMjRrut]
n 更新されたのみ

mirror -Rn


220 名前:login:Penguin mailto:sage [2008/06/22(日) 22:21:11 ID:R/kAIh0A]
ubuntu初心者スレから誘導されました。

成形した時刻の文字列をクリップボードにコピーするシェルスクリプトを作りたいのですが
まずdateで時刻を取得出来ることがわかりました。それで日付や時間を成形してみました。
で、その取得した時刻をクリップボードにコピーさせる方法が分かりません。

ubnutuは8.04です。よろしくお願いします。

221 名前:login:Penguin mailto:sage [2008/06/22(日) 22:29:53 ID:G5GD5xl+]
>>220
xclip が使える。ただし日本語が通らない。
ruby がクリップボード操作できるみたい。

222 名前:login:Penguin mailto:sage [2008/06/22(日) 23:37:38 ID:MIeLc8tv]
シェルスクリプトで正規表現使いたいのですが、
末尾が .jp のものだけマッチさせたい場合は
$\.jp
でよろしいのでしょうか?

223 名前:login:Penguin mailto:sage [2008/06/22(日) 23:55:19 ID:iLaxDbCt]
シェルだけで正規表現って扱えるの?

224 名前:login:Penguin [2008/06/23(月) 00:09:49 ID:xSXSaj7v]
>>223
[[ 'www.example.jp' =~ '\.jp$' ]] && echo OK



225 名前:login:Penguin mailto:sage [2008/06/23(月) 00:26:20 ID:bFQcdw6C]
>>223
man expr

226 名前:login:Penguin [2008/06/23(月) 07:14:57 ID:xSXSaj7v]
>>225
expr は外部コマンドじゃね?

227 名前:login:Penguin mailto:sage [2008/06/23(月) 07:23:33 ID:/dfygF5Q]
bash 3.2.33だが>>224だとOKと表示されない件について

228 名前:login:Penguin mailto:sage [2008/06/23(月) 07:55:06 ID:xSXSaj7v]
quote しちゃだめになったのか。

[[ 'www.example.jp' =~ \.jp$ ]] && echo OK

229 名前:login:Penguin mailto:sage [2008/06/23(月) 08:04:56 ID:E3xyu4wD]
>>221
そうですか。日本語通らないですか。
rubyがいけるならPythonもいけるのかな。探してみます。ありがとうございます。

230 名前:login:Penguin mailto:sage [2008/06/23(月) 13:11:35 ID:R4pyjC2R]
>>229
xselでおk

231 名前:login:Penguin mailto:sage [2008/06/23(月) 20:44:19 ID:E3xyu4wD]
>>230
さっそく入れて使ってみました。
中クリックで文字列を選択した内容をそのまま貼り付けれてものすごく便利でした!
いいものを知りました。ありがとうございます。

で本題
スクリプトはこんな感じまで書きました。
#!/bin/bash

y=`date +%Y`
m=`date +%m`
d=`date +%d`
t=`date +%T`
DATE= $y/$m/$d/" "$t
echo $DATE

これで、chmod -x で権限を与えて実行すると、現在の時間を返してくれるようになりました。
が、xselを使って$DATEをクリップボード(かプライマリ)にコピーする方法が分かりませんでした。--inputは変数が代入出来ないようですし。
xsel -p  < $DATE ではうまくいきませんでした(ファイルじゃないので当たり前ですか)

232 名前:login:Penguin mailto:sage [2008/06/23(月) 20:57:33 ID:II3EglSV]
>>231
>xsel -p < $DATE ではうまくいきませんでした

echo $DATE > xsel -p


233 名前:login:Penguin mailto:sage [2008/06/23(月) 21:41:12 ID:t++FsyID]
echo $DATE | xsel -i

234 名前:login:Penguin mailto:sage [2008/06/23(月) 21:51:30 ID:E3xyu4wD]
>>232
どうもうまくいきませんでした。
修正したものを実行すると、〜.shと同じディレクトリに xsel という中身が"-p"の入ったファイルが作成されてました。



235 名前:login:Penguin mailto:sage [2008/06/23(月) 21:54:47 ID:eV6dG77Y]
>>234 look asap >>233

236 名前:login:Penguin mailto:sage [2008/06/23(月) 22:05:35 ID:E3xyu4wD]
>>233
こちらもうまくいきませんでした。

実行すると、以下の結果が表示されました。

./date_clipboard.sh: 7: 2008/06/23/ 21:52:49: not found

/が入っていると、ディレクトリと認識してしまうのではないかと思って、/を外して数字だけ並んだものも作って見ましたが、だめでした。 同じく echoで$DATEの中身とnot foundと出されました。

>>235
こういうことでしょうか?

#!/bin/bash

y=`date +%Y`
m=`date +%m`
d=`date +%d`
t=`date +%T`
DATE= $y/$m/$d/" "$t
look asap
echo $DATE | xsel -i

これを実行しても、同じく、echoで$DATEの中身とnot foundと出ました。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef