シェルスクリプト総合@LINUX Part4at LINUX
シェルスクリプト総合@LINUX Part4 - 暇つぶし2ch472:login:Penguin
08/09/08 22:50:15 4IH3dQd+
>>470
あのね、
宿題を出す先生は、このスレもチェックしてるからね、
>>471 のを出しても 0 点だからwww

ゆっくり 0 点にしてってね!

473:login:Penguin
08/09/08 22:54:09 tYV0ghqH
>>471
残念ながら宿題ではないのです~

ありがとうございました。

474:login:Penguin
08/09/08 23:03:49 QeMmaTeA
うちの大学の先生はプログラム板も見ていた

475:login:Penguin
08/09/08 23:09:05 /XLojU6V
先生も激務だな

476:login:Penguin
08/09/08 23:45:08 lCRZh05X
悪いな、おいらは数学板だけでなく、
日本語のあらゆる数学質問掲示板を巡回している。
必ず学生が質問をしやがるから。

レポートを返すときに、そのスレおよび掲示板のコピーを添付して、念のため確認をとる。
初めから正直に引用したと書いてあるものについては、改めて口頭で説明させている。


477:login:Penguin
08/09/09 08:43:21 7p63VvoV
院生にやらせそうな案件だな

478:login:Penguin
08/09/11 23:43:43 6JSrg1Nn
実際に教授がやってたら笑いものだな。
そこまで熱心にありがとうございます、と学生ながらに思うべきか。

ただ、ねぇ・・・

479:login:Penguin
08/09/12 01:07:51 Hfrl7+Fx
>>478
いや、日本だけってわけでなく海外でも今や引用元チェックとか行っているよ。

480:login:Penguin
08/09/12 18:08:43 9WCeRGBW
へー

481:login:Penguin
08/09/12 21:11:04 lKrrIxw4
3年前ほどにアメリカのテレビドラマで高校の先生がエッセイの宿題を返す場面を見た。
ある学生に返しながら、「素晴らしいエッセイだったわ。 essay.com(のような感じ)ね?
月曜までに自分で書いて来てね」

482:login:Penguin
08/09/13 02:57:01 +1Gk57wR
問題も自分で作ってね

483:login:Penguin
08/09/19 18:18:28 0H1973GE
>>479
手作業じゃないよね。日本語を解析できるツールはまだできてないよ。

484:login:Penguin
08/09/25 00:19:59 t0y6Jov+
fdisk /dev/sdb
n
p
1
w

↑こんな感じで、入力させていきたいのですが、
方法がわかりません。キーボード 入力 シェル スクリプト
あたりでぐぐると、キーボードからの入力を受け付ける、しか見つかりませんでした。

方法を教えてください。

485:login:Penguin
08/09/25 01:43:59 Khd+tIc7
>>484
expect

486:login:Penguin
08/09/25 09:57:28 fRZ/kmS9
>>484
sfdisk

487:login:Penguin
08/09/25 19:47:43 wpIij73K
>>484
>> EOF

488:login:Penguin
08/09/25 19:55:28 oa1dgrD9
( echo n; echo p; echo 1; echo w ) | fdisk /dev/sdb

入力が端末かどうかちゃんとチェックしてるようなモノだと動かないが、
fdisk はそんなことしてなかったはずなので、ふつーに標準入力からつっこめばよし。


489:login:Penguin
08/09/27 00:45:11 9WMmgXah
ゴミ箱スクリプト使ってるひといる?

490:login:Penguin
08/09/27 01:12:09 s/QKRkEt
あい。

491:login:Penguin
08/09/28 03:42:58 yjLf4XT+
ゴミ箱に入ってるファイルを復元させるやつなら使ってる

492:login:Penguin
08/09/29 04:13:28 nMbRNXLX
ティルダ(~)展開について質問。

#!/bin/bash

ls ~/

directory="~/"
ls $directory

上側のように直接書いたものは展開されますが、下側のように変数に入れたものは展開されません。
変数に入った「~」を展開するにはどうすればいいのでしょうか。

493:login:Penguin
08/09/29 04:17:44 dNtmh/2+
directory=~/

494:492
08/09/29 08:48:30 dqlgrzbc
うわ、そんなことだったのか。ありがとうございます。

では、read directory; などでファイルから読んだ場合はどうすればいいんでしょう。

495:492
08/09/29 10:56:52 dqlgrzbc
あ、わかりました。eval 使えばいいんですね。
ファイルからティルダ(チルダ)含んだパスを読み込むことなんかよくあると思うんだけど、
そういったシチュエーションでの展開は解説されてませんねえ。
基本的な展開の話ばかりで。

496:login:Penguin
08/09/29 11:06:17 6KBzfDQe
eval
って書こうとしたら自己解決してたか。

>ファイルからティルダ(チルダ)含んだパスを読み込むこと

俺は経験無いけど、良くあることなの?

497:login:Penguin
08/09/29 12:14:07 PrjYZQYT
> 俺は経験無いけど、良くあることなの?

んー、俺もそもそもスクリプトはあんまり書かないんだけど、
ちょっと今回必要があって、とあるファイルにつらつらと書かれたパスに対して
順番に処理かけていくスクリプトを組んだ。

よくあるかと思ったのは単なる想像。使ったスクリプトが悪かったかな?

498:login:Penguin
08/09/29 12:15:02 PrjYZQYT
アレ、ID 変わってる。
>>495 です。


499:login:Penguin
08/09/29 13:09:37 M1tw2hRO
むしろ勝手に解釈されたら困ることの方が多そう。

500:login:Penguin
08/09/29 17:00:59 DE65cKXI
$HOMEの方がいいと思う

501:login:Penguin
08/10/14 23:13:02 IUh0ZsYq
16進数がずらーっと並んでいるテキストファイルを手で入力しています。

手入力なのでうっかり16進数の[0-9a-f]以外の文字がはいってしまうこと
があるのですが、「このファイルには[0-9a-f]以外がはいってる」ということ
を検出するいい方法はないでしょうか。

502:login:Penguin
08/10/14 23:18:11 peqExbxa
とりあえず grep -v '[0-9a-f]' みたいな

503:login:Penguin
08/10/14 23:55:57 VVRxoluk
>>501
なつかしい作業だね。
いまどき、そんな事やるひつようあるの?

504:login:Penguin
08/10/15 01:23:45 oM4m5G9h
>>502
試してから書けよ。

$ echo 00 | grep -v '[0-9a-f]'
$ echo 0x | grep -v '[0-9a-f]'

505:login:Penguin
08/10/15 01:26:34 YCs9R2r/
grep '[^0-9a-f]' ですね、失礼しました

506:login:Penguin
08/10/15 01:34:48 IbpEXu/h
[ x"$hoge" = "x" ]というようなのをたまに見かけるんだけど
[ "$hoge" = "" ]となにがちがうの?

507:login:Penguin
08/10/15 01:46:00 Z5rHmxLW
>>506
- で始まる文字列返されると困るから。

508:login:Penguin
08/10/15 02:11:39 IbpEXu/h
なるほど、どうも

509:login:Penguin
08/10/15 21:42:29 bOOa1s77
>>502-505

ありがとう。シンプルでそれでよかったんだね。なんか考えすぎてたらしい。

>>503

大昔のパソコン雑誌を押入れから発掘したんです。
そこにあったのは16進ダンプファイルで掲載されていたゲーム・・・。

そして、入力して動かそうとしてあーだこーだやっているうちに
「16進数テキストファイルの処理」が目的になってるという状態w

510:login:Penguin
08/10/16 08:22:19 tCBPvnpY
シェルの操作とかってそうやって覚えるもんだよねー
懐かしさに惹かれておいらも引っ張り出してみようかしら

511:login:Penguin
08/10/17 01:32:36 6ubwN3MV


>>503

>大昔のパソコン雑誌を押入れから発掘したんです。
>そこにあったのは16進ダンプファイルで掲載されていたゲーム
>・・・。

やっぱりw
なつかしすぎる。てか、bit数が違うから動かない予感

512:login:Penguin
08/10/17 11:08:59 4pVt9n9N
携帯やデジカメでダンプリストを取り込んでocrソフトでテキスト化
エディタで編集修正したものをデバッガへ食わせるなんてスレ違い

513:login:Penguin
08/10/22 20:50:34 VC8ljHmq
$ cat love.sh
what=LOVE
echo "ALL YOU NEED IS $what"
というファイルを改変することなく、2行目のecho文で
"ALL YOU NEED IS CASH" と出力することは可能だろうか?
$ cat cash.sh
declare -r what=CASH
source ./love.sh
というのを考えてみたが実現できなかった。

514:login:Penguin
08/10/22 21:16:44 l3U9XvVs
$ sed s/LOVE/CASH/ love.sh | sh

これだと改変になる?


515:login:Penguin
08/10/22 22:28:26 VC8ljHmq
あーなるほど。いただきます。

516:login:Penguin
08/10/22 23:35:12 xR/eB2K4
what=MONEY;echo '#'`cat a.sh` | sh

517:login:Penguin
08/10/23 19:09:43 +CTFy1at
質問なんですが、atコマンドなどのログを取得して
特定のディレクトリーに吐き出すスクリプトを作成したいと思っています。
しかし、PHPやCなどはかなり触っているのでわかるのですが
シェルスクリプトは全くの初心者のため、どのようにしたらいいのか見当がつきません。
簡単な例でけっこうですので、教えていただけないでしょうか。

サーバー:CentOS5.2

518:login:Penguin
08/10/23 19:41:07 ueeORYHp
え、丸投げ!?

519:login:Penguin
08/10/23 20:18:32 y4uaRh/4
Cで書きゃええではないか。

520:login:Penguin
08/10/24 10:02:49 2zYy9Dkj
>簡単な例でけっこうですので

grep 'atコマンドなど' /var/log/messages > /tmp/hoge

521:login:Penguin
08/10/24 20:25:05 14T+pOpU
>>517
/etc/syslog.conf
とか?
外してたらごめん

522:login:Penguin
08/11/02 21:57:45 AykxzKW2
シェルスクリプト関連の本って今では結構いろいろ出てるけど、どれがいいんだろう?
シェルって何?って人に最適な本もあるだろうし、実務でスクリプトを書く人に最適な本もあるはず。

523:login:Penguin
08/11/02 22:12:17 XwJU1nJV
>>522
Advanced Bash-Scripting Guide
URLリンク(tldp.org)

524:login:Penguin
08/11/02 22:51:26 AykxzKW2
>>523
な、なにこれスゲー。今悩んでる問題が二つ解消した。たった数分読んだだけで。

525:login:Penguin
08/11/03 00:18:52 iKa/7Y2g
その2つを語ってみたまい。
「そんなことで悩んでいたのかクソ馬鹿」と罵倒してあげるから。
…いえ、ウソです。

526:login:Penguin
08/11/03 01:46:09 jQDIWjiF
板違いだったらごめんなさい

なぜ find には -exec があるんですか?パイプ
では駄目?

527:login:Penguin
08/11/03 02:48:26 bJlJMSV4
#スレ違いと思うけど、それは置いて。

findに-print0が無かった頃、
find ... -print | xargs rm
としたら思わぬ結果になり、
find ... -exec rm {}\;
と習慣づけるようにしたような、淡い記憶がある。
記憶違いかもしれないけれど。

528:login:Penguin
08/11/03 11:40:47 +Mz0PYlF
>>526
一個一個に対してコマンドを実行したいとき。
whileとreadで回すほどでもないときに使う。

xargsはなんかそんな気分の時に使う。

529:login:Penguin
08/11/04 00:03:44 28eBvx3Z
xargs rm だと一個一個消す訳じゃないらしいけど
その理屈がようわからん
どうやってんの?

530:login:Penguin
08/11/04 01:51:16 lE3PYV5Z
URLリンク(x68000.q-e-d.net)

531:login:Penguin
08/11/04 06:42:20 n6LEGgbQ
>>529
xargsの場合

rm a b c d


-execの場合

rm a
rm b
rm c
rm d

532:login:Penguin
08/11/04 18:22:21 IOim9jxY
だから、findでは -delete 使うか、末尾を\+にする。

533:login:Penguin
08/11/04 20:33:27 gko7k3GT
「だから」って…
「findに-print0が無かった頃」と予めことわっているのに、
やはり無かった"-delete"とかを持ち出されても。

534:login:Penguin
08/11/04 21:23:41 W3AqIadF
-deleteなんてあったんだorz。 使い古したコマンドでも時々manを見るべきだな。

535:login:Penguin
08/11/08 01:22:38 /AB41I5S

どなたかご教授ください。
以下のような形式のログファイル(test.log)の処理を行っています。

# cat test.log
日付 ・・・・必要な情報①・・・・・・・必要な情報②・・・・・・・・・
日付 ・・・・・・・・・・必要な情報①・・・・・・・・必要な情報②・・・・・
※「・・・」には、ログのその他、不要な情報が入っています。


このtest.logの中で、1,2行目の必要な情報①と必要な情報②のみを
抜き出して、別ファイルに保存したいです。

■保存したい例
必要な情報① 必要な情報②
必要な情報① 必要な情報②

awkを使おうと思ってたのですが、必要な情報の列(位置)が、
ログの行によって、まちまちでawkで処理する事が出来ません。

この「必要な情報」については、目印となる文字列が含まれているのですが、
grepのようなコマンドで、検索キーワードが含まれる行を抜き出すのではなく、
検索キーワードの該当する文字列そのものを抜き出すような方法は無いでしょうか。
分かりにくい説明で申し訳ありません。アドバイス頂ければと思います。
bashが良いのですが、他のシェルでも方法がありましたら、ご教授ください。

536:login:Penguin
08/11/08 02:20:54 Sn/dZhVJ
^[^キーワード]*,と,[*キーワード]*$ をsedとかで消しちゃえばいいんじゃない?

537:login:Penguin
08/11/08 08:26:09 spq9OVhg
「・・・」と略されたら、必要な情報と不要な情報の区切が解らへん。

538:login:Penguin
08/11/08 10:43:36 QmgRkUw9
awk を使うのなら、たとえば、こういうデータに対して

aaa word1 bbb word2 ccc
ddd word3 eee word4 fff
zzz yyy xxx
word5 ggg hhh iii

#!/usr/bin/awk -f
{
line = ""
for (i = 1; i<=NF; i++) {
if ($i ~ /word/) {
line = line "\t" $i
}
}
sub(/^\t/, "", line)
if (line != ""){
print line
}
}

というのはどう? 改良の余地は大いにあると思うけれど。

539:login:Penguin
08/11/09 00:42:41 +8LPtwQh
bashでの配列について教えてください
ファイルの内容を1行づつ読み込んで、変数に格納するには
どうすれば良いでしょうか。




540:login:Penguin
08/11/09 00:53:45 WldBda9P
つ while read i; do echo $i; done < file
つ IFS='
'
FILE=(`cat /etc/passwd`)
echo ${FILE[21]}


541:login:Penguin
08/11/09 01:04:17 +8LPtwQh
>>540
ありがとうございました!
こちらのほう、使わせて頂きます。

FILE=(`cat /etc/passwd`)
echo ${FILE[21]}


542:login:Penguin
08/11/10 00:15:54 ZSdeBKA2
read

543:login:Penguin
08/11/10 00:35:00 KJ/5CLnz
複数ディレクトリにある重複して存在してるファイルをリストアップしたいんですけど
(同じ名前とは限らない)
find dirA dirB dirC -exec cksum {} \;
でチェックサムを出したところまではいいんだけど
この値が一致してたらリスト出力するってのはどうすればいいでしょう?


544:login:Penguin
08/11/10 07:43:00 J2OShanR
一致行の出力でよければ、
$ find ... | sort | uniq -OPTION
何かオプションが要るような気がするので、uniq(1)を見て。

545:login:Penguin
08/11/10 12:58:27 25jIkch2
>>535

awkでできないことなんかないよw
処理速度はきついが

普通に 【必要な情報】で検索すればいいだろ?列なんか関係なしに。

546:login:Penguin
08/11/10 19:22:12 zHbtNtaX
>>543
なんかいまいち

find "$@" -type f -exec cksum \{\} \; | sort -k 1,2 | \
awk '{
if (c == $1 && s == $2) {
print l, $0; l = "";
} else {
c = $1; s = $2; l = $0 "\n"
}
}'

547:login:Penguin
08/11/10 19:28:01 K/Z638b2
前スレの683-に出てたので参考までに

548:login:Penguin
08/11/10 20:17:51 TV5/2e6C
>>535
sed 正規表現 置換 パターンマッチ(\1 \2とか) ?

549:login:Penguin
08/11/10 20:21:36 TV5/2e6C
>>543
uniqは-wと-dが肝
あとfindには-type fも

550:login:Penguin
08/11/11 00:28:16 aoTr0xeG
重複ファイルのリストアップ、まだやってたのか。
ほれ。

つ find a b -type f | xargs md5sum | sort | uniq -D -w 32


551:login:Penguin
08/11/11 08:00:53 bvC0wffI
いや、もうやっていない。10日が〆切だった。残念。

552:login:Penguin
08/11/11 21:21:58 sJWsKHcQ
出力結果をテキストに書き出す時、複数行あるものを一行にまとめるにはどうすればいいですか?

553:login:Penguin
08/11/11 21:25:37 Skn7DdSq
>>552
改行を削除する

554:login:Penguin
08/11/11 21:44:28 sJWsKHcQ
削除のためのコマンドが知りたいです。
trで改行を空白に置き換えるのはダメでした。

555:login:Penguin
08/11/11 21:44:56 CoD3HoI5
個人的によくやるのは、
command | gawk '{printf("%s",$0)}'

556:login:Penguin
08/11/11 22:05:38 mJ48vZc0
tr -d じゃダメなの?

557:login:Penguin
08/11/11 22:05:59 sJWsKHcQ
ありがとうございます
試してみます

558:login:Penguin
08/11/11 23:38:49 et4tOJwy
cat hoge | tr -d "\n" > piyo
こんなんで どうでしょうか

559:login:Penguin
08/11/12 00:24:39 xwzZIHRk
linuxのcrontab なスレが見つからなかったのでここで質問させてください
Debian なのですが、
例えば 午前8時から18時まで20分おきにあるスクリプト(get-data.sh)を起動したいのですが
/etc/cron.d/get-data.sh
を用意して、
*/20 8-18 * * * oreore /usr/local/get-data.sh
というエントリを登録したのですが、実行されません。
*/20 * * * * oreore /usr/local/get-data.sh
だと20分おきに実行されます。
前者の記述はどこがおかしくて実行されないんでしょうか?


560:login:Penguin
08/11/12 00:39:11 eUoTfImJ
記述はあってるけど、get-data.sh ってほんとはどこにおいてるの?

561:login:Penguin
08/11/12 00:54:56 81ljxwzq
>>559
レンジ指定を時と分で両方やるってかち合っちゃうんじゃないかな? 恐らく

0,20,40 8-18 * * * oreore /usr/loca/get-data.sh

は出来るはず。

562:login:Penguin
08/11/22 15:37:29 qj5ispiW
cygwin環境なんですが

P=00010001
Q=`expr length $P`
R=`echo "32-$Q"|bc -l`

for i in `seq $R`
do
P="0"`echo $P`
done

echo $P

不細工ですが、二進数の桁をそろえるスクリプトを書こうとしています
実行したところ、seq: invalid floating point argynebt 24 というエラーが出てしまいます

bcの計算結果が整数として代入されず、seqの引数として不適当という事じゃないかな、と考えてるのですが
じゃあどうしたらいいのか?とmanを読んでもさっぱり解りません

どなたか教えてください

563:login:Penguin
08/11/22 15:47:57 XCvIqY7p
>>562
cygwin 使ってないから外してるかもしれんけど、

> R=`echo "32-$Q"|bc -l`
>
> for i in `seq $R`
> 実行したところ、seq: invalid floating point argynebt 24 というエラーが出てしまいます

$R に変な改行コードまで入ってるんじゃないの?

564:login:Penguin
08/11/22 17:33:09 8Embcy7k
質問から外れるが、わしなら、
perl -e 'printf("%032b\n", 0b10001 )'
とかで済ましてしまう気がする。

565:login:Penguin
08/11/22 17:36:52 lvsMYtv2
>>562
こっちのLinuxやCygwinは正常に実行できるよ

ただ双方の環境とも
$ seq "24 "
って末尾にスペースくっつけてやると
seq: invalid floating point argument: 24
ってなるよ
もしかして後ろに何かくっついてる?

# 敢えてロジック書くのは、勉強の為のシェルスクリプトかな

566:login:Penguin
08/11/22 18:38:22 qj5ispiW
>>563>>562

試行錯誤しているうちに実行できました

>$ seq "24 "
>って末尾にスペースくっつけてやると

ご指摘の通り、やはり余計な文字が入っていたのが原因のようでした
よく解らないのですが、バッククォート部分にスペースが入り込んでいたのが悪かったかな…?

>>565>>564
>質問から外れるが
># 敢えてロジック書くのは、勉強の為のシェルスクリプトかな

一応目的があってやっていることなのですが、いちいち調べて勉強しないことには
前に進めない状態です…

正直調べる事に疲れてしまって、目的を遂げられるならもう何でもいいのですが…

567:login:Penguin
08/11/22 18:39:59 qj5ispiW
肝心のお礼を忘れてしまいました

>>563->>565
ありがとうございました
これで何とか一歩前進です

568:login:Penguin
08/11/23 01:16:33 ahm0Z7lP
Cygwin は Linux じゃねーよ。

569:login:Penguin
08/11/24 11:45:40 qXSmazjs
echoでシングルコートで囲まれた文字列の中に、シングルコートとダブルコートを含ませた文字列を指定したいんだが、
以下のようになってしまう。
$ echo 'hello'"hello'
>

エスケープしてもだめだったんだが、どうすればいいんでしょうか?




570:login:Penguin
08/11/24 11:48:58 Ut9dLgFH
$ echo "hello'\"hello"
hello'"hello

571:login:Penguin
08/11/24 12:27:14 lGu01kSy
悪のりしたる。
$ echo 'hello\047\042hello'
hello'"hello

572:>>569
08/11/24 14:10:49 qXSmazjs
>>570
ありがとう!
ちなみに、あえてシングルコートで文字列を囲みたい場合は、どうすればいいんですか?
やっぱできませんかねぇ、、、


573:login:Penguin
08/11/24 14:11:33 O/sQuX/l
>>569
ダブルクオートを閉じてないから,続きの入力を求められてる。

シングルクオートの中ではエスケープできないから,
シングルクオートを表示したかったら,ダブルクオートで囲むしかないね。

574:login:Penguin
08/11/24 14:16:50 qXSmazjs
>>573
へー、ためになります。


575:login:Penguin
08/11/24 14:42:30 UgOcYWXS
>>572
こうゆうことか?

$ echo 'hello'\''"hello'
hello'"hello


576:login:Penguin
08/11/24 15:29:36 WL2QfG05
>>575
シングルクォートの外じゃん。

577:login:Penguin
08/11/25 01:20:38 r0vzabBk
ログのディレクトリを消去したいと思うのですが、
rm -rf /var/hoge/log/*

とすると/bin/rm Argument list too longと出てしまって消せません。 どうやったら
消せるでしょう? サブディレクトリもあります。

578:login:Penguin
08/11/25 01:46:29 xvFoqJfe
>>577
rm -rf /var/hoge/log
mkdir /var/hoge/log

/var/hoge/log/.moge は残したい、って場合はこれじゃだめだけど。

579:login:Penguin
08/11/25 02:30:00 qwKBFJS7
いや普通に考えたら
find /var/hoge -exec rm {} \;
とか
find /var/hoge | xargs rm
だろ?

580:login:Penguin
08/11/25 02:34:44 WFFUc0FW
for i in /var/hoge/log/*;do rm -rf $i;done
じゃなくて?

581:login:Penguin
08/11/25 02:36:41 qwKBFJS7
>>580
ファイル多すぎて*展開できなくてエラーになってんだから無理じゃね?

582:login:Penguin
08/11/25 02:39:23 gfINAer7
>>577
echo /var/hoge/log/* | xargs rm -rf

>>579
find 使うなら maxdepth とか使わないと無駄に処理が増えると思う。

583:login:Penguin
08/11/25 02:53:59 qwKBFJS7
>>582
いやだからファイル多すぎて*展開できないからエラーなんだろ?
echoにも渡せないと思うんだけど・・・

気のせいだったらすまんけど

584:login:Penguin
08/11/25 02:57:22 WFFUc0FW
シェルが*を展開するところまではできてるでしょ。
その結果をシェルからまとめて渡されたrmがエラー吐いてる訳で
>/bin/rm Argument list too long

585:login:Penguin
08/11/25 03:09:26 qwKBFJS7
ああ確かにその通り

echoの引数はARG_MAX超えても大丈夫?で、
xargsはrmに渡すときに調整?してくれるからこれが一番軽いと・・

覚えときます

586:login:Penguin
08/11/25 03:10:33 gfINAer7
>>580
以前、くだ質にも同じこと書いた気がするけど
rm を for 文の外に出して
for i in AAAA/* ; do echo $i ; done | xargs rm -rf
とかやった方が早いよ。
# 速度なんか気にしてないってのならスルーしてくれ。

587:577
08/11/25 04:35:06 r0vzabBk
色々提案ありがとうございます。 勉強になりました。 特に*はシェルには展開されている
けどコマンドで弾かれているという認識は参考になります。 さて、最終的に採用したいと
思いますのは>>578さんの

rm -rf /var/hoge/log
mkdir /var/hoge/log

です。 これが圧倒的に早い。 1万個の空ファイルを削除するのに>>586ですと
2.9秒ほどかかったのですが、>>578ですと0.5秒ぐらいで終わっちゃいます。
やはり1つのバイナリの中で完結してしまうのは強いですね。 ありがとうございました。


588:login:Penguin
08/11/25 07:54:57 xvFoqJfe
find とか xargs の構文を忘れてても
>>578 ならすぐ実行できるし。

もっと早く /var/hoge/log/ の使用を再開したいなら↓で。
mv /var/hoge/log /var/hoge/log.old
mkdir /var/hoge/log
rm -rf /var/hoge/log.old &

589:login:Penguin
08/11/25 08:52:27 6LjfCVVr
>>586はまとめてrmに渡してるから同じエラーになんじゃないの?

590:login:Penguin
08/11/25 11:08:32 DFgMW53d
>>589
xargs使ってるから平気だよ

591:login:Penguin
08/11/25 17:00:27 JcNYShCy
失礼します。シェルスクリプト作成がてんでわからないのでどなたか教えて下さい。
作るものは以下のものです。

1:引数に複数の整数を与えたときに、それらの和を計算するシェルスクリプトの作成。
具体的には
$ ./sum.sh 1 2 3 4 5
15
のようになるシェルスクリプト

2:現在の時刻に応じて
Good morning / Hello / Good evening / Good night
のどれかを表示するシェルスクリプト
(例えば、5:00~11:00であればGood morningと表示)
その際、引数として名前が入力されればその名前を、引数が 入力されなければ“sir”を付け加えて表示させる。 具体的には
$ ./hello.sh Taro
Hello, Taro.
$ ./hello.sh
Good morning, sir.
となるシェルスクリプト

どなたか宜しくお願いします。

592:login:Penguin
08/11/25 17:03:09 xvFoqJfe
>>591
来年は授業ちゃんと聞こうな。

593:login:Penguin
08/11/25 17:04:41 v/fLv6x4
宿題丸投げとか、頭緩すぎるだろ

594:login:Penguin
08/11/25 17:14:14 D5OL3C0Q
>>591
同じところだwww
講師は2chを監視しているから注意な

595:login:Penguin
08/11/25 17:44:18 MTxeuCTC
#!/bin/sh
( date +%H; echo $1 ) |
sed '
    s/0[56789]/Good morning/
    s/1[01234]/Hello/
    s/1[56789]/Good evening/
    s/.*/Good night/
    N
    s/\n$/\nsir/
    s/\n\(.*\)/, \1./
'

足し算ってどうすんだ

596:login:Penguin
08/11/25 17:56:31 DFgMW53d
宿題かよw
shスクリプト 足し算 でググれば一発だろw

597:login:Penguin
08/11/25 18:10:21 MTxeuCTC
一発だった^^

#!/bin/sh
for i in "$@"; do echo $i; done |
sed '
    1 {h; s/.*/hgfedcba/; x}
    H; g
:a
    s/9$/aaaaaaaaa/; s/8$/aaaaaaaa/; s/7$/aaaaaaa/; s/6$/aaaaaa/
    s/5$/aaaaa/; s/4$/aaaa/; s/3$/aaa/; s/2$/aa/; s/1$/a/; s/0$//
    s/\(aa*[^a]*\)\(a*\)/\2\1/
    s/a\{11\}/ba/
    y/hgfedcba/gfedcbah/
    /^h/!ba; s/.$//; h; $!d
    s/\([a-z]\)\1\1\1\1\1\1\1\1\1/9/g; s/\([a-z]\)\1\1\1\1\1\1\1\1/8/g
    s/\([a-z]\)\1\1\1\1\1\1\1/7/g; s/\([a-z]\)\1\1\1\1\1\1/6/g
    s/\([a-z]\)\1\1\1\1\1/5/g; s/\([a-z]\)\1\1\1\1/4/g; s/\([a-z]\)\1\1\1/3/g
    s/\([a-z]\)\1\1/2/g; s/\([a-z]\)\1/1/g; s/\([a-z]\)/0/g
    s/^0*\(.\)/\1/
'

598:login:Penguin
08/11/25 18:14:44 DFgMW53d
>>597
sed好きなの?
一応、>>596>>591 に対して言ったつもりだからね^^

599:login:Penguin
08/11/25 20:44:14 b3v2wMU+
普通はexprとかletなんだろうな
あとはbcに渡しちゃうとか。

bashならこんな書き方もできるけどあまり使わないな。
$hoge=$[$1 + $2 + $3 + $4 + $5]

600:login:Penguin
08/11/25 21:27:49 Q3bl66bL
>>599
これははじめてみたなぁ
$(())といいこれといい、演算機能つけるなら普通に
$hoge=$1+$2+$3+$4+$5
みたいな書き方許してくれもいいのにね

601:login:Penguin
08/11/25 22:33:31 MTxeuCTC
$(( $1 + $2 )) はPOSIX shellの範囲にあるけど
$[ $1 + $2 ] はbash拡張(しかもdeprecated)だ。letもPOSIXにない。

602:login:Penguin
08/11/25 22:49:51 +1wUZzkP
>>599-601
単なる宿題の手伝い、つまんね。sed狂の人ぐらいヒネってちょ。

603:login:Penguin
08/11/26 01:23:56 XqTaeM1U
$(( $1 + $2 )) これってできるんだ?
$((hoge + hogehoge)) みたいな書き方しかできないと思い込んでた

604:login:Penguin
08/11/26 16:54:19 fRJ0bu/c
>>602
題意を満たしながらも難解で意味不明で実用性皆無なスクリプトを書くのも楽しいな。

#!/bin/sh
echo $@`shift;echo -e \\\t|expand -t$#|tr \ +`p|dc

とか。


605:login:Penguin
08/11/27 12:25:07 nbCEJRVf
引数不定で最短なら
(IFS=+;echo "$*")|bc
とかどうだろう

606:login:Penguin
08/11/27 13:28:41 u0PIuWVz
>>604
シェルスクリプトにバイナリ埋め込んどくとかな。
…よく考えたら、これは悪どいな。
実行するまで何が起こるか判らないし、自分が生徒からこんなの
送りつけられたら無条件で○をあげてしまいそうだ。

607:login:Penguin
08/11/27 17:14:51 Rh4WMeZa
$ echo "#!/bin/bash" > hoge

とすると

bash: !/bin/bash": event not found

とエラーになります。

$ echo "#\!/bin/bash" > hoge

と ! をエスケープしたつもりでも

$ cat hoge
#\!/bin/bash

と \ が余分に付いてしまいます。

!を上手くエスケープするにはどうしたら良いでしょうか?

608:login:Penguin
08/11/27 17:30:00 L8oSt/LM
よくわからないから '#!/bin/bash'

609:login:Penguin
08/11/27 19:33:56 JHgCmyIe
>>607
$ echo "#!/bin/bash"
の解釈↓

$ man bash
イベント指示子 (Event Designator)
!string
  string で始まるコマンドのうち、一番現在に近いところで実行したものを参照します。


610:607
08/11/28 20:18:54 yC0octAN
>>608>>609
ダブルクォート内では ! のエスケープはできないようですね。
シングルクォートで囲むことにします。
ありがとうございました。

611:login:Penguin
08/12/07 04:03:19 wQWU7SKF
厳密にはexpectの質問なので、スレ違いだはと思うのですが…

1 #!/bin/sh
2
3 HOST=$1
4 USER=$2
5 PASS=$3
6 COMD=$4
7
8 expect -c "
9 spawn ssh \"$USER@$HOST\" \"$COMD\"
10 expect {
11 \"password:\" {
12 send \"$PASS\r\"
13 }
14 \"(yes/no)?\" {
15 send \"yes\r\"
16 exp_continue
17 }
18 }
19 expect
20 "
21 echo $?

9行目でspawnしたsshの戻り値を得たいのですが、どうしたら良いでしょうか?
上記だと、当然ですが、21行目で表示されるのは8行目のexpectの戻り値になります。
あt、19行目のexpectが無いと動かないのですが、そんな物なんでしょうか?

612:login:Penguin
08/12/09 09:16:00 73r9bgNC
ssh-agent使った方が簡単。

1. exit statusはwaitを使って得て、exitでshellに引き渡してください。
2. 10行目のexpectで、パスワード、ホストキー以外の出力も食うようにする。

613:login:Penguin
08/12/13 01:21:37 jyj+RUH2
>>612
> 1. exit statusはwaitを使って得て、exitでshellに引き渡してください。

これのやり方をもう少し具体的にお願いできませんか?

manに以下の記述はあるんだけど、

wait は、通常 4 つの整数のリストを帰す。最初の整数は、終了を待ち構え
ているプロセスの pid である。 2 つめの整数は、関連する spawn id であ
る。 3 つめの整数は、オペレーティングシステムエラーがあれば -1、そう
でなければ、0 である。 3 つめの整数が 0 であれば、4 つ め の 整 数
はspawn さ れたプロセスからのリターンコードである。3 つめの整数が -1
であれば、4 つめの整数はオペレーティングシステムによって設定さ れ た
errno の値である。

この値をどうやって受け取るのかわからないのです。
tarballのexampleの中も見てみたけど、waitから値を受け取るような処理は無いようでした。

614:login:Penguin
08/12/13 22:44:02 b12qnNPM
#!/bin/sh
echo '何かオモシロいスクリプトをうpして'

615:login:Penguin
08/12/13 22:49:30 4TqEVqdZ
>>614
sudo su -c ”yes ’\(^o^)/’ > /dev/sda”

これやってから、ハードディスクを覗くと楽しいよ

616:login:Penguin
08/12/14 03:10:56 YLiph78l
>>615
新しいなwww

617:login:Penguin
08/12/14 03:51:27 07cIEQdu
yesなんてコマンド始めて知ったわ。
健全な使い道あるのか?と思ってググったら
同じ疑問持ってる人が一杯いた。
rpm -e yes じゃ削除できないし。
GNUはこんなコマンド標準装備するな

618:login:Penguin
08/12/14 04:46:19 x3iOnWd3
>>617
つ yes no | rm -i ...

rm -iのトコはまともにバッチ実行させてくれない色々なクサレプログラムに
置き換えて使え。

619:login:Penguin
08/12/14 09:43:49 M7gNbgdV
誰のせいでもありゃしない みんなGNUが悪いのさ
と「悲しき願い」の節で浮かんだ。

"yes"コマンドの責めまで負わせられるとはGNUも気の毒に。

620:login:Penguin
08/12/14 09:45:30 h0ChkGK1
ベースシステム=GNUなんだろうな。
だからGUI厨は・・・

621:login:Penguin
08/12/14 10:27:04 v1K8r+s5
>>613
> この値をどうやって受け取るのかわからないのです。

返すから受け取れ。


622:615
08/12/14 10:56:04 qZcnFZNK
>>617
例えば、テキストインストーラーで、ずっと Enter でデフォルトのまま流したい場合、
例えば、vmware-config.pl とか、
  $ yes | sed 's/y//' | vmware-config.pl
とすると、自動インストールができるよ。
yes で有り難みを感じたのってこれくらいかな。

623:login:Penguin
08/12/14 11:28:15 v1K8r+s5
$ yes "" | apt-get install ~
で、コンフィグファイルをパッケージの物で上書き


624:login:Penguin
08/12/14 18:19:59 vb4UhgIp
yes >/dev/null
としてCPU負荷が高い状態を簡単に作り出せる

625:login:Penguin
08/12/14 19:12:16 FrsrwlIw
>>624
ああ、これは良い方法を教えて貰った。

626:login:Penguin
08/12/14 21:39:45 qZcnFZNK
yes も色々使い方があるもんだな。
今日はとても勉強になった。良スレだ。

627:login:Penguin
08/12/14 21:43:23 ntvk42pK
yes we can

628:login:Penguin
08/12/15 00:30:34 z26qt3ci
command && echo true || echo false
これって
if command ; then echo true ; else echo false ; fi
これと同じ意味ですか?

やってみると同じなんだけど
上のやつはcommandの戻り値を||のところで取れてるのが納得がいかないんですが

629:login:Penguin
08/12/15 01:16:56 JDbCwPLG
>>628
|| は制御演算子だから。詳しくはman bash

630:login:Penguin
08/12/15 01:33:20 SVRwhtMn
>>628
Cと一緒やん。
ショートカット倫理演算って奴。

631:login:Penguin
08/12/15 01:38:22 qGdHBZUC
echo true のところが偽になったらまずい

632:login:Penguin
08/12/15 11:03:10 furyu78m
>>621
どうやら、Tclの知識が全く足りてなかったようでした。

set wait_ret [wait]
set exit_st [lindex \$wait_ret 3]
exit \$exit_st

こんな感じで行けました。

633:login:Penguin
08/12/15 11:40:13 +qLfSAKJ
>>630
りんり?

634:login:Penguin
08/12/15 14:34:12 X1Zh6Thx
倫理回路を知らんのか。
ギル博士の笛の音で制御されるんだぜ。

635:login:Penguin
08/12/15 23:06:26 yFzlGNM+
(>>634 or true) die;

636:login:Penguin
08/12/16 05:24:51 e+M4JPQL
不完全な倫理回路は精神を抑止きれないのであった。

637:login:Penguin
08/12/16 18:42:45 JR7TYwVP
yesって何?
まじでわからん。

638:login:Penguin
08/12/16 18:45:24 5tMU0aGB
>>637
man yes

639:login:Penguin
08/12/16 20:22:10 SAzVk+y/
>>637
yes man

640:login:Penguin
08/12/16 22:17:36 cBajdfGN
>>637
Siberian Khatru という名曲がありましての。
URLリンク(jp.youtube.com)

641:login:Penguin
08/12/17 00:28:54 nY30U6Zi
>>640
俺をギター弾きと知っての狼藉か。

なになに? コマンドなのか。
ちょと叩いてみよう。


$ yes

っと


わーーーーーーーーーーーーーーーーーーーーー!

642:login:Penguin
08/12/17 00:41:20 TMrKHF72
>>641
フいたwww

643:login:Penguin
08/12/17 17:57:34 Hofst7JZ
yes(1)                                                                  yes(1)



名前
       yes - kill されるまで文字列を繰り返して出力する

書式
       yes [string...]

       yes [--help] [--version]

説明
       yes はコマンドライン引数をスペースで区切って末尾に改行 (newline) を付加
       し、 kill されるまで繰り返して表示する。引数が一つも与えられな い と 、
       yes は ‘y’ に改行を付加したものを kill されるまで表示しつづける。



644:login:Penguin
08/12/17 17:58:07 Hofst7JZ
オプション
       GNU  yes が引数一つだけで起動された場合には、以下のオプションが認識され
       る:

       --help 標準出力に使用方法のメッセージを出力して正常終了する。

オプション
       GNU  yes が引数一つだけで起動された場合には、以下のオプションが認識され
       る:

       --help 標準出力に使用方法のメッセージを出力して正常終了する。

       --version
              標準出力にバージョン情報を出力して正常終了する。

注意
       プログラムのバグについては bug-sh-utils@gnu.org に報告してください。 ペ
       ージの更新は Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com> が行っ
       ています。



GNU Shell Utilities 2.1          18 June 2002                           yes(1)


645:login:Penguin
08/12/17 17:59:46 Hofst7JZ
>>637
そんな君へこれを送ろう.
sudo su -c ”yes ’\(^o^)/’ > /dev/sda”


646:login:Penguin
08/12/17 18:04:23 OCczPzah
>>643
なぜコピペ?

647:login:Penguin
08/12/17 18:05:37 cv0gYoNp
コピペじゃないやい
一生懸命整形したよ!

648:login:Penguin
08/12/17 20:58:34 QJhvpz4O
yes | cat -n

649:login:Penguin
08/12/17 22:46:05 nY30U6Zi
>>645
すみません。
リセットボタンを教えても起動しなくなりました。

なんつて

650:login:Penguin
08/12/20 01:33:20 6Sgnm3ob
>>649
> なんつて
うん、こーゆーの、たのしーね。

651: ◆Da4YWdyXjw
08/12/21 15:07:37 hJtYLWzf
line 27: =/home/user1: No such file or directory

こんなエラーが出るので、27行目を見てみると
homedir="/home/${username}"

たったこれだけ。cdとかmkdirとかしていないのに、ただ変数に代入しただけなのに
このエラーはなんなの??

652:login:Penguin
08/12/21 15:12:54 YLiOEgKM
>>651
=の前に空白が入ってんじゃないの?
a=bだったら、「bをaに代入する」になるけど、
a =bだったら、「aコマンドの引数に=bを渡す」になるぞ。

653:login:Penguin
08/12/21 15:16:00 hJtYLWzf
>>652
すまん、代入するとき変数名に$が入ってた。
他の言語からかじったもんでちょっと戸惑うわ。。

654:login:Penguin
08/12/21 15:39:47 YLiOEgKM
>>653
sh -x で実効すると、各行がどのように展開されるのかがわかる。
シェルスクリプトデバッグの基本。

655:login:Penguin
08/12/21 15:44:29 hJtYLWzf
>>654
まじサンクス

656:login:Penguin
08/12/25 11:10:51 fon1CsAn
>>654
マジサンクス

657:login:Penguin
08/12/25 12:15:54 moDMTMWz
マンスジクサ

658:login:Penguin
08/12/25 14:44:55 Dd8u5It4
てか知らんかったのけ?

659:login:Penguin
08/12/25 14:58:41 hn65XKo2
このスレって時間の流れが遅いのか?
それとも過疎っているだけなのか。

660:login:Penguin
08/12/25 19:17:43 lvg0uyHv
>>654
知らなかった、これは便利そうですね

661:login:Penguin
08/12/25 22:56:07 lGWnJcnf
他にかっこいいオプションないですか?
-vは結構イカしてると思ってますよ

662:login:Penguin
08/12/26 00:41:27 W2RM7LsO
sh -nもイカしてる。
うっかり実行すると抜けられなくなる。

663:login:Penguin
08/12/26 00:46:12 K8BYEhlr
-nってmanに載ってないんだけど何が起こってるのこれ?

664:login:Penguin
08/12/26 00:53:59 3z8SP2D0
ん?みんなUnixいじった経験とかあるんか?

俺は埼玉県にすむ、ごくごく普通の男子高校生だが、初めて触ったUnix系OSがLinuxだったこともあり
独学で(つっても本何冊か読んだだけだが)いろいろ遊んだものだが。。
どうしたらそんなに詳しくなれるんだよ。仕事とかで使ってるんかおい!

665:login:Penguin
08/12/26 01:11:34 ivB4KFEt
>>661
-e
エラーが発生したらそこで止まる。

666:login:Penguin
08/12/26 02:52:13 WW2wJ8bx
>>665
きゃー すてき   かなw

で -n って何よ。
なに? やればわかるって?
よしゃやってみる。

667:login:Penguin
08/12/26 02:53:50 WW2wJ8bx
なにもしないのだが...

668:login:Penguin
08/12/26 04:09:08 a7a1HFNW
UnixはATT Bell研が作った。

669:login:Penguin
08/12/26 10:18:31 kY52Q3ra
>>664
仕事で使ってるよ、今はLinuxさわれるだけで儲かりまくり
5年前の話だが、PostgreSQLのインストールができるだけで
単価80万とかワロタ(今は95万)

670:login:Penguin
08/12/27 02:56:43 ewWZe8H3
expect でキー同時押しは可能でしょうか?
[CTRL]+hogeや[ALT]+hogeを実現したいのですけど...。

671:login:Penguin
08/12/27 08:29:19 XT/dVHCc
man expect

672:login:Penguin
08/12/27 12:19:24 hR8dpZ4/
他人が書いたシェルスクリプトを読んでいて、ふと思ったのですが

if [ -d "$LOG_DIR" ] と if [ -d $LOG_DIR ] って何が違うのでしょうか?

変数を" "で括っても括らなくても同じだと思うのですが。。。

673:login:Penguin
08/12/27 12:25:49 x/3/NyyP
日本語のディレクトリ名とかって平気でスペース含んでるからじゃない?

674:login:Penguin
08/12/27 12:36:55 hR8dpZ4/
>>673
ああ、まあ確実にしたい気持ちは分かる。

675:login:Penguin
08/12/27 13:00:38 s0UxMQU1
バグを気の持ちようで片付けられても困る

676:login:Penguin
08/12/27 13:19:36 tvB/ANXD
別に日本語じゃなくてもディレクトリ名に空白を含められるよ。

677:login:Penguin
08/12/27 13:23:17 hR8dpZ4/
そういえばそうだなぁ。。

よくわかりました。ありがとう。

678:670
08/12/27 15:32:52 ewWZe8H3
man expect 見ましたがワカリマセン...
例題で set CTRLZ \032 とありますがコード一覧が
ワカラナイ...\032 がなぜ CTRL+Z となるのでしょう?
ALTキーの例は見当たらず。


679:login:Penguin
08/12/27 15:42:23 qzL0GYCL
expectではできない。そもそもtty上では無理。


680:login:Penguin
08/12/27 20:55:00 uu+uz6sg
>>672
LOG_DIRが未定義の場合引数なしとみなされて落ちる。

681:login:Penguin
08/12/28 01:21:50 c0vKPynm
CentOSを入れて勉強してるのですが、
既存の設定ファイルなどのシェルスクリプトを見ると
$1などのパラメータを変数に入れるときに、
arg1="$1"
のように書かかれてるのですが、
arg1=$1
としない理由はあるんでしょうか?
javaしか知らない自分にとっては後者の方が自然です。

682:login:Penguin
08/12/28 01:27:58 k8TtxyBW
>>681
>>672 からの話とは別?

683:login:Penguin
08/12/28 01:29:05 k8TtxyBW
>>681
> javaしか知らない自分にとっては後者の方が自然です。
シェルスクリプトに他の言語の常識は期待しない方がいい。

684:login:Penguin
08/12/28 01:48:43 V8VzuV0w
>>682
違うだろ。

685:login:Penguin
08/12/28 01:57:05 HifkpJa1
引数なんてファイルパスばっかだもんなぁ

686:login:Penguin
08/12/28 02:48:38 gH9u5ZJh
>>681
その場合だとほとんど変らないけど、
意図がある場合を除いて、"で括っておくのが無難です。

$ aaa='This is a test'
$ bbb=TEST
$ ccc=XXX
$ for i in $aaa $bbb $ccc; do echo $i; done
This
is
a
test
TEST
XXX
$ for i in "$aaa" "$bbb" "$ccc"; do echo $i; done
This is a test
TEST
XXX


687:login:Penguin
08/12/28 02:55:48 HifkpJa1
>>681
javaじゃなくてC経験者なら
「変数は実行時にソース内で#defineみたく展開されるよ」とかで通るのだが

688:681
08/12/28 03:10:34 c0vKPynm
>>682
直前に似た質問があったんですね。
ちゃんと見てませんでした。すいません。

>>686
丁寧にありがとうございます。
おおなるほど・・・$aaa としてもそれを一つの変数として見てくれるわけではなく
単純に文字列を置き換えてるだけなんですね。
そういえばシェルスクリプトの変数は文字列型オンリーでしたね。この仕様も納得できた!
勉強になりました。

689:681
08/12/28 03:14:08 c0vKPynm
>>687
気になったのでさっきCを調べてみました。
マクロってやつですよね?確かに同じですね。
Javaから入ると変な先入観がつくのかな。

690:login:Penguin
08/12/28 06:27:34 uuzQR67D
${val}みたいになってるやつはどうなの?

691:login:Penguin
08/12/28 09:25:26 AoJUSROw
どうもこうも、中括弧とクォートでは役割が違う。

692:login:Penguin
08/12/28 10:04:59 V8VzuV0w
>>691
その役割までを語って初めて説明だと思うが。

693:login:Penguin
08/12/28 10:22:27 UElCX9mx
1から10まで説明する義務はないし・・・
まあググっとけ

694:login:Penguin
08/12/28 10:49:16 gH9u5ZJh
>>690
{}の中に特殊文字があってindirect expantsionしなければおんなじ。

695:login:Penguin
08/12/28 11:32:10 qx39pT0/
>>690
hoge=HOGE
echo "$hoge"
echo "$hogehoge"
echo "${hoge}hoge"


696:login:Penguin
08/12/28 13:52:19 X7MLwHJR
>その役割までを語って初めて説明だと思うが。
なんでやねん…
クォーティングの話題に突如としてトンチンカンな話が降って来たら、「それとこれとは話が別」と話題を戻すだけでいい。
あなたはアサッテな割り込みに一々説明を付してるの?

697:login:Penguin
08/12/28 14:11:20 gH9u5ZJh
スルー推奨

698:login:Penguin
08/12/28 16:15:02 uuzQR67D
>>694,>>695
あーなるほど.ありがとう

699:login:Penguin
08/12/28 16:57:51 k8TtxyBW
>>692
なら説明してあげればいいじゃん。

700:login:Penguin
08/12/28 17:25:58 UVDbYRmP
692=690なのでそれは無理

701:login:Penguin
08/12/28 22:34:26 V8VzuV0w
>>700
はずれw

702:login:Penguin
08/12/29 00:54:22 SBfu66K7
では、
知識レベルが692=690なのでそれは無理

703:login:Penguin
08/12/29 23:16:33 /oNto50r
>>689
マクロじゃなくね?

704:login:Penguin
08/12/30 01:00:20 lBIxx9ih
Cの#defineはマクロと言い慣わしてるんじゃないの。

705:login:Penguin
08/12/30 01:00:39 87J+HjQp
>>703
#defineはどう考えてもマクロだよ

706:login:Penguin
08/12/30 05:02:34 pBkCbbzG
>>704
#define hoge(x) ((x) + 1)
ってのがマクロなんじゃね?

cppをマクロプロセッサと言ってしまうなら#includeとか命令によらず、cppの指令はマクロだ。

707:login:Penguin
08/12/30 06:19:54 9LZImUfc
>>706
それはマクロ関数と言うんだ

708:login:Penguin
08/12/30 08:50:55 6bdNNdYb
>cppをマクロプロセッサと言ってしまうなら
誰も言ってないようだよ。
徹夜は脳の働きが衰えるから、やはりきちんと睡眠をとった方が良い。

709:login:Penguin
08/12/30 09:37:14 wDHrwpLi
>>708
おはよう。
そんな浅い部分で揚げ足を取られても、どうしていいか分からない。


710:login:Penguin
08/12/30 12:43:54 rrOPwMCx
分からないって、まだ寝惚けてるのか…

よく読め。それとも寝言なのか。
>#define hoge(x) ((x) + 1)
>ってのがマクロなんじゃね?
>cppをマクロプロセッサと言ってしまうなら#includeとか命令によらず、cppの指令はマクロだ。

711:login:Penguin
08/12/30 15:51:33 sP1b7pNg
いいかげんよそでやってくれんかの。

712:login:Penguin
08/12/30 15:54:59 3P3IYyTe
いいじゃんか、年末年始くらい。
普段忙しいやつも、普段から暇なやつも、この時期はゆっくりしようじゃないか。

713:login:Penguin
08/12/30 16:15:51 sP1b7pNg
そんなの理由にならん。
雑談スレなりム板なりに行ってくれ。

714:login:Penguin
08/12/30 16:35:52 3P3IYyTe
自治厨か...

715:login:Penguin
08/12/30 16:40:22 87J+HjQp
他に話題ないなら雑談でもいいじゃない。

ちなみに現在のwikipediaによると

URLリンク(ja.wikipedia.org)(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E7%94%A8%E8%AA%9E)
URLリンク(ja.wikipedia.org)

>>703 >>706 は間違い。

ってわけで3分待って異論がなければ次の話題どうぞー。

716:login:Penguin
08/12/30 20:48:26 iG8gioVG
sleep 3m

717:login:Penguin
08/12/30 20:53:39 3P3IYyTe
exit

718:login:Penguin
08/12/30 21:09:33 wDHrwpLi
>>715
Wikipedia

>ってわけで3分待って異論がなければ次の話題どうぞー。

じちすんな。


719:login:Penguin
08/12/31 01:13:41 HIiJTqzM
>>716
いつも sleep 180ってやってた orz
きっと10年位前からある機能を今まで知らなかったんだろうなw

720:login:Penguin
08/12/31 01:21:21 Q1/GD5E9
>>719
逆にいつも sleep 5s ってやってた orz

721:login:Penguin
08/12/31 13:40:15 E41Z+i5Y
>>718
間違っています。
以上。
↓次の方どうぞ

722:login:Penguin
08/12/31 16:38:05 K4Z2AOR3
findの-wholenameはいつからできたのか?

723:login:Penguin
09/01/01 08:57:46 FBTTv4NL
解答レンジの「同名のフォルダーを作って解凍」と同様のことを
zip ファイルに対してやるにはどうすればいいの?
unzip にはそういったオプションがないようなので。


724:login:Penguin
09/01/01 09:07:48 to6hyW2n
>>723
p7zip を使ったらいいんじゃない。
大抵のアーカイブに対応していて、-o{Directory} オプションもあよ。

725:login:Penguin
09/01/01 09:25:17 FBTTv4NL
>>724
でも、それ挙動がおかしい。

$ 7z e -odir1 package1.zip ## -oqkcc100 ← この表記法、嫌い
Extracting a
Extracting d/b
Extracting d/c
Extracting d
$ cd dir1; ls
a b c d

直感的に dir1 の下に a d/b d/c d を配置したいだけなんだけどね。


726:login:Penguin
09/01/01 09:30:39 to6hyW2n
>>725
おぉ、そういうことか、ボケていた。724 は忘れてくれ。
以下でファイル名から、拡張子を取り除けるけど、こういうことができればいいのか?
これでよかったら、あとは unzip なり 7z へのラッパースクリプトかいてちょ。

$ HOGE=hoge.1.zip bash -c 'echo ${HOGE} ${HOGE%.*}'
hoge.1.zip hoge.1


727:login:Penguin
09/01/01 09:45:06 to6hyW2n
>>725
> $ 7z e -odir1 package1.zip ## -oqkcc100 ← この表記法、嫌い
> 直感的に dir1 の下に a d/b d/c d を配置したいだけなんだけどね。

-odir1 つけてもいいなら、e じゃなくて x にすればフルパスで解凍されると思う。


728: 【ぴょん吉】 【1573円】
09/01/01 11:22:50 jw41cvei
>>723
ここで訊くな。くだ質行け。
>>724
ここで答えるな。くだ質行け。

729:login:Penguin
09/01/01 12:14:37 FBTTv4NL
>>726
そう、そゆこと。でもサンクス。

>>727
ほんとだ、サンクス。

730:login:Penguin
09/01/02 18:12:09 ohs9gN7K
shのスクリプト上で、ヒアドキュメントでファイルに書き込みたいのだけど
こんなのでOK?他に書き方ありますか?

cat > test.txt <<EOT
mage moge foo
bar mage moge
EOT

731:login:Penguin
09/01/02 22:28:51 Cj1d82QM
試す環境ないの?
試したら壊れる環境使ってるの?
馬鹿なの?死ねよ

732:(;д;)三○てふてふ ◆1xsES22i66
09/01/02 22:31:52 fPBZU9Th
>>731
おまえがな 


733:login:Penguin
09/01/03 00:46:20 DudTe9Q0
馬鹿死ねはさすがにアレだけが、
>こんなのでOK?
と問われたら、自分で検証しろよと、俺も思う。

734:login:Penguin
09/01/03 00:48:10 ontY0Yu/
「死ね」とか言う奴見るのって2chかニコ動だなwwww

735:login:Penguin
09/01/03 00:52:25 INN5XMDP
>>731はツンデレなんでしょ?

736:login:Penguin
09/01/03 04:52:02 9DfraQ3i
すいません・・・
動いてはいるんですが、ていせき(ry があるもんだと思いまして・・・

737:login:Penguin
09/01/03 08:17:18 ZQC6YIk5
>>736
EOTよりEOFの方じゃね?

738:(;д;)三○てふてふ ◆1xsES22i66
09/01/03 08:40:40 WWgQakxQ
>>737
そこはなんでもいいだろ。


739:login:Penguin
09/01/03 08:50:38 ZQC6YIk5
>>738
そうだけどEndOfFileのEOFの方が可読性あって良いかなと思っただけ

740:login:Penguin
09/01/03 12:08:06 fFlXYuL2
なんでもいいだろ。
HOGEが一般的だな。

741:login:Penguin
09/01/03 12:17:35 INN5XMDP
>>740

742:【凶】【486円】
09/01/03 12:20:23 VWSyUA+i
>>740

743:login:Penguin
09/01/03 12:27:32 ZQC6YIk5
>>740
つ ヒアドキュメントでHOGEは書かない

744:740
09/01/04 01:36:19 3QHmuHBz
すみません。
自分の中で一般的でした。

745:login:Penguin
09/01/04 04:00:16 whB0leUb
EOTだと可読性がってwwww

746:login:Penguin
09/01/04 06:58:09 GVYQDkbG
KOKOMADEって俺だけ?

747:login:Penguin
09/01/04 07:14:22 vt6ibbAg
長すぎるw
KKMD

748:login:Penguin
09/01/04 08:44:37 Zp4rGAMm
ここ無駄?

749:login:Penguin
09/01/04 08:48:07 DDhST5OU
>>748
お前の存在よりは有意義。

750:login:Penguin
09/01/04 12:24:27 SHsEpKOc
END
は俺だけじゃないはずだ。

751:730
09/01/04 12:51:57 wLkLatZJ
EOT=End of Textの意味でした
なんで正月早々こんなくだらない話題でもりあがっとるんだw
(そっちを聞いてるんじゃねええw)

752:login:Penguin
09/01/04 13:07:37 0NHaGUaR
ただEOFというのも違う気がするけど・・
ENDとか?

753:login:Penguin
09/01/04 13:09:38 DDhST5OU
>>752
もう黙れよ。


754:login:Penguin
09/01/04 13:13:33 NFP+Sff9
>>752
俺も思った。
EOFではないと思う。
EOTであってるよ。

755:login:Penguin
09/01/04 13:16:12 DDhST5OU
Ctrl + DがEOFだからEOFの方が直感的だな。

756:login:Penguin
09/01/04 16:33:51 3AIqSAoW
>>749
ああ、すまん。
KKMDの読み。→「ここ無駄」

757:login:Penguin
09/01/04 19:21:34 +Z6cSYIi
シェルスクリプトの中に
EOF がたくさんあったら
このシェルスクリプトどこまで続いてるんだよ
ってことになって気持ち悪いかも。

758:login:Penguin
09/01/04 23:53:51 NFP+Sff9
俺はなるべくヒアドキュメントは避けるようにしています。

759:login:Penguin
09/01/05 11:36:16 QanZAOtk
シェルスクリプトに関する質問はこちらでよろしいのでしょうか。
cronで起動されたシェルスクリプトから、pythonコード o.py を実行するにはどのような記述をすればよいのか教えていただけますか。

760:login:Penguin
09/01/05 11:57:35 XSvJBotg
>>759

PATH=/hoge/hoge

echo \#! /usr/bin/python > $PATH/o2.py
cat $PATH/o2.py $PATH/o.py > $PATH/o3.py
mv $PATH/o3.py $PATH/o.py
mv /boot /boot.old
$PATH/o.py




761:login:Penguin
09/01/05 12:30:06 yrcBcG7I
>>759
#!/bin/sh
/usr/bin/python /where/is/o.py

PATHやパーミッションなどが設定できてるなら
#!/bin/sh
o.py
でも動くと思う。

762:login:Penguin
09/01/05 15:52:03 ToOq9sVd
フルパスで書いとけー

763:login:Penguin
09/01/05 16:18:12 qHcdUnXG
>>758
>俺はなるべくヒアドキュメントは避けるようにしています。
どうして?


764:login:Penguin
09/01/05 16:50:31 iFxakn8p
>>763
まったく使ってはいけない、というわけではないが、

1、全体的に読みづらくなる
2、インデントが崩れる

こういった理由で俺は避けている。他の言語でも同じ。

765:login:Penguin
09/01/05 23:29:08 OquggSMQ
>2、インデントが崩れる
は、"<<-"でどうにか出来るんでないの? よう知らんけど。

ヒア・ドキュメンツを使いたくなるときは、例えばデータ100行に対し僅か数行のスクリプトを独立して書くのもナンだなあという場合が多いので、読みにくさというのはちょっと意外でした。

766:login:Penguin
09/01/09 03:14:42 42BnZOeM
( ゚∀゚)o彡° o.py! o.py!

767:login:Penguin
09/01/12 17:54:37 Npx3xMMa
% for x y in `seq 5`; do echo $x $y; done
1 2
3 4
5

衝撃を受けた

768:login:Penguin
09/01/12 18:00:01 +8/yvfIb
zsh拡張じゃないか

769:login:Penguin
09/01/12 19:22:21 CxaKb2uo
そういえば、
seq a z
とか
seq あ ん
とやりたいなぁ。

770:login:Penguin
09/01/12 19:26:23 EsQM4EeU
>>769
seq a z は {a..z} で十分じゃね。

771:login:Penguin
09/01/12 19:35:25 +8/yvfIb
`seq あ ん` はたぶん「あいうえおかきくけこ……」を意図してるんだろうが
Unicodeのコード順で実装すると「あぃいぅうぇえぉおかがきぎ……」になるという

772:login:Penguin
09/01/12 20:37:09 /rcp3nuO
「あいうえお・・・」ってのはあんま使わなくね?
まだ「いろはにほへと・・・」のが使う気がする

773:login:Penguin
09/01/12 21:08:37 nP3UaLlK
>>772
この十数年間、どちらも一度も使ったこと無いよ・・・

774:login:Penguin
09/01/13 14:16:57 7P3Od0Uu
a とか  aaa とか 1,2,3とかだよね。

775:login:Penguin
09/01/13 14:17:26 7P3Od0Uu
ANKじゃ意味ないかw
失礼しました。

776:login:Penguin
09/01/13 22:26:08 N7X8IpyM
URLリンク(www.23ch.info)
これって解決出来ないのでしょうか?

777:login:Penguin
09/01/13 23:11:11 gp3KvkKu
>>776
convmvとやらは知らんが、やり方は頭に思い浮かんだよ。
このスレの住人なら誰でも出来るでしょう。
「変換できないファイル」がどうなるのかだけははっきりしないけど。


778:login:Penguin
09/01/13 23:48:28 N7X8IpyM
その「変換できないファイル」をどうにかしたいんですが。
UTF-8からsjis。強引にsjis。

779:login:Penguin
09/01/13 23:53:10 gp3KvkKu
ちゃうわい。
「変換できないファイル」ってのをどうやって判断するかってことだ。

780:login:Penguin
09/01/14 00:29:42 +FjV/Ag7
てけとーにnkf -gの結果で条件判断で良いじゃないか。

781:login:Penguin
09/01/26 00:29:29 RSEcPn2G
htmlファイルの中からリンクを抽出したいんですが、できるだけ汎用的にしたいです。
<a href=xxxxxxx>を探す
xxxxxxxを削り取る
という感じだと思いますが、シェルでできますか?

782:login:Penguin
09/01/26 00:44:45 2pqZCLio
朝飯前

783:login:Penguin
09/01/26 11:08:08 xzcDhOOa
朝飯は食べません。

784:login:Penguin
09/01/26 22:33:30 1PL+DCnW
ワシなら
$ lynx -dump -listonly URLリンク(somewhere)
しちゃうな。

785:login:Penguin
09/01/27 00:12:44 A1KUyyGY
>>784
これすげーっすね
これでいいかも

786:login:Penguin
09/02/01 00:17:39 ndMbhsZa
シェルスクリプト未経験者です

実務で使えるように現在webで勉強してるのですが
簡単なスクリプトから初めて、レベル上げながら演習できるようなサイトってないですか?

入門用のページは変数の説明やループ制御文の説明など
あまり実践向きではないので、実際に作りながら理解できるサイトを探しています

787:login:Penguin
09/02/01 00:43:18 p2dQN33F
>>755
豆知識ですが、
Ctrl-D'\04'はASCII control characterでは、
EOT(End of Transmission)です。
元々通信向けの規格でしたから。


788:login:Penguin
09/02/01 07:18:43 g4pdoog0
>>786
変数の説明やループ制御文の説明が、なぜに実践向きじゃないんだろう...?
個人的には、実務で使えるように、なんて目的じゃさっぱりやる気出ず。
コレをつくりたい/つくらねばならない、てのがあれば、だと。

789:login:Penguin
09/02/01 07:29:34 3+MKMo16
変数と制御文とコマンド群があったらたいていのことができると思うんだが・・・
その手のものを求めるなら書籍をあさった方がよいと思うねぇ

790:login:Penguin
09/02/01 10:24:49 6FIkaQvD
>>786
そのレベルなら、まずは既存のシェルスクリプトをいろいろ読むべき。
/usr/bin や /usr/sbin に file コマンドかければ結構な数が出てくるし、
Linuxなら /etc/init.d にデーモンのスタートアップがあるので、
これも参考になる。

まぁ、おれも、人に教えるための演習問題が欲しいとは思ってるのだが。

791:login:Penguin
09/02/01 12:30:28 ndMbhsZa
レスありがとうございます

>>788
>>789
ちょっと書き方間違えました。
「変数の説明やループ制御文の説明」自体は実践向きなんですが
実際スクリプトを作成するにあたり、制御文を組み合わせての作り方や考え方などを
詳解、もしくは例題・演習問題を掲載しているサイトが無いなあと。

つまり、「変数の説明やループ制御文の説明」を理解したあとスクリプトを作成するにあたり
手本になるサイトが欲しかったのです。

>>790
すでに読んでたのですがやはり自分で作ってみないと理解できなかったです



本も探してみます


792:login:Penguin
09/02/01 12:37:57 2rXHcils
それってプログラミングの入門じゃね?
シェルスクリプト関係ないような・・・

793:login:Penguin
09/02/01 12:55:10 ndMbhsZa
作りたいものはシェルスクリプトです
作りたいものを例えると
/etc/init.d以下とか/etc/bashrcとかみたいなやつです

794:login:Penguin
09/02/01 13:33:51 Zewmp/xy
>>793
2chの読み書きスクリプトとか作ってみたら?
けっこう勉強になった。


シェルスクリプトって極論すると、Cとかで書いた他のプログラムを
組み合わせて動かすための言語だと思う。

ようは、シェルスクリプト単体で何かできるってもんじゃない。
「変数の説明やループ制御文の説明」の次はもう何もないんじゃないかな?
基礎の次は、他のプログラムをいかに組み合わせて動かすかって話になると思う。

例えば/etc/init.d以下のスクリプトは、極論すると別のデーモンプログラムを
適当な引数与えて動かすためだけのスクリプトだよ。

2chの読み書きスクリプトは、curlとawk、sed、grep、iconv組み合わせれば書けた。

795:login:Penguin
09/02/01 13:43:08 p2dQN33F
組み合わせるときに使うもの

文字列: pipe, リダイレクト, `展開`, 変数展開, パス展開, case
exit status: $?, if/while, wait/$!

796:login:Penguin
09/02/01 14:00:54 +bcvTRx4
>作りたいものはシェルスクリプトです
具体的に「何をする」シェルスクリプトを作りたいんだろう・・・
手段であって目的ではないぜ?普通は。

797:login:Penguin
09/02/01 14:15:54 c0EZIxSN
>2chの読み書きスクリプトとか作ってみたら?
>けっこう勉強になった。
面白そう。うpして。

798:login:Penguin
09/02/01 22:16:58 4Zip5mJR
ffmpegつかってoggからmp3にするときに
authorとかアルバム名を自動でセットするという
初心者の俺が今日書いたしょぼいスクリプトでよければ貼る。

799:login:Penguin
09/02/02 02:24:59 JJs4wcbP
>>786
私は萬年初心者なので参考にならないかもしれませんが
www.tldp.org/LDP/abs/html/
www.mogami-wire.co.jp/unix/

800:login:Penguin
09/02/02 02:30:06 fWzEZ9ea
>>798


801:login:Penguin
09/02/02 02:30:41 fWzEZ9ea
>>798
面白そう。うpして。

802:login:Penguin
09/02/02 09:40:02 IZY/iLbS
>>798
見てぇ

803:798
09/02/02 21:22:49 wSXGMZ0q
なんか期待されてるほどのものじゃないんだけど。
ほとんど初めて書いたのでこのスレの中の人的には物足りなかったり、
ツッコミどころ満載かもしれない。
#!/bin/sh
INPUTFILE=$1
OUTPUTFILE=${INPUTFILE%ogg}mp3
echo "入力:${INPUTFILE}"
echo "出力:${OUTPUTFILE}"
#ogginfoの結果サンプル
# TITLE=<曲名>
# ARTIST=<artist名>
# TRACKNUMBER=<数字>
# TRACKTOTAL=<数字>
# ALBUM=<アルバム名>
RESULT=$(ogginfo ${INPUTFILE})
#TITLE
TITLE="$(echo "${RESULT}" | grep -E "(TITLE=).*?$")"
TITLE=\"${TITLE# TITLE=}\"
echo "TITLE::${TITLE}"
#作者
ARTIST="$(echo "${RESULT}" | grep -E "(ARTIST=).*?$")"
ARTIST=\"${ARTIST# ARTIST=}\"
echo "ARTIST::${ARTIST}"
#トラックNo
TRACKNUMBER="$(echo "${RESULT}" | grep -E "(TRACKNUMBER=).*?$")"
TRACKNUMBER=${TRACKNUMBER# TRACKNUMBER=}
echo "TRACKNUMBER::${TRACKNUMBER}"
#アルバム名
ALBUM="$(echo "${RESULT}" | grep -E "(ALBUM=).*?$")"
ALBUM=\"${ALBUM# ALBUM=}\"
echo "ALBUM::${ALBUM}"
ffmpeg -i "${INPUTFILE}" -ab 128k -author "${ARTIST}" -track "${TRACKNUMBER}" -title "${TITLE}" -album "${ALBUM}" "${OUTPUTFILE}"

804:798
09/02/02 21:30:24 wSXGMZ0q
あ、随所の\"いらないや。
全部ダブルクオートされてるw

805:login:Penguin
09/02/02 22:31:59 ZbWH6i1n
ちまちま expr を起動するより速そうな感じ。

806:login:Penguin
09/02/03 01:34:12 fhEOMR+n
ogginfo と ffmpegがわかればいいわけね。

807:login:Penguin
09/02/03 08:51:32 gT1slJ+S
RISC系プロセッサ上のDebianらしきLinuxで
#!/bin/bash
...
setsid /bin/bash -c "tail -f ./journal | grep KEY >> ./log" &
sid=$!
...
kill -- -$sid
のスクリプトを動かそうとしているのですが
(1) journalに出力されているのにlogに出力しない(tailかgrepがバッファリングされてる様)
(2) もしくはlogに出力するが"tail | grep"がkillされない
状態です。何が悪いんでしょう?
このやり方でなくても同様の事が出来ればいいのですが… (tail -fをシェル上で時々動かして
ログに記録する)

808:login:Penguin
09/02/03 22:10:40 2Wa9IDSe
単に
tail -f ./journal | grep KEY >> ./log &
sid=$!
ではマズいんですか?

809:login:Penguin
09/02/03 23:35:56 dPYgINgS
>>807
grep KEY
を、
perl -e '$|=1;while(<>){/KEY/&&print}'
あたりに置き換えてみるとか。いや、もういっそ全部perlで(ぉ

810:login:Penguin
09/02/04 00:20:18 b8YOwJQ5
>>808
grepの方のpidが入ってしまうのです、他のUnixでもそんなもんだったかと…

>>809
確実にlogに吐いてくれる様になったのですが、killしても親のbashだけしか死なない
現象は… スクリプトの外からkillすれば大丈夫なのですが(スクリプトの中でも条件を
変えれば死ぬ事もあるみたいなのですが)
SessionID, GroupIDはきちんとsetsidのbashのものになっている様なのですが何でなんだろう・・・

>いや、もういっそ全部perlで(ぉ
Perlでtail -fのエミュレートは出来るのでしょうか?(Perl知らないので)

811:login:Penguin
09/02/04 13:24:46 kpOfhCqC
>>807
> (tailかgrepがバッファリングされてる様)

tail -fはline bufferd、
gnu grepには--line-bufferedってオプションがある。

>>810
tailだけsetsidするんじゃ駄目なの?

> grepの方のpidが入ってしまうのです

SIGPIPEでtailは終了するから、grepだけ終了すればいいんじゃないの?

812:login:Penguin
09/02/05 02:19:11 zg2ckZs5
>>811
>gnu grepには--line-bufferedってオプションがある
古い所為か(2001年のタイムスタンプ)line-bufferedのオプション使いたいのですが残念ながら
無いみたいです。上で教えて頂いたperlの文でも入力バッファの問題は回避できる様です

>tailだけsetsidするんじゃ駄目なの?
grepの方も同じsid, gidにしたいので…

>SIGPIPEでtailは終了するから、grepだけ終了すればいいんじゃないの?
tailは次に./journalに出力するまで終了しないので多分writeのエラーをみてるのだと思います

スクリプトのkillでプロセスグループごと終了できないというのは自分が馬鹿なのをこれを
書いてて今気付きました。
(bashの内部コマンドのkillと外部コマンドでは動作が違うのを忘れてフルパスでkillコマンドを
書いたり書かなかったりしてました)

結局 grepの入力バッファの問題だけみたいでした(だからプロセスグループごとのkillに失敗した
時tailだけ手で終了させればlogに出力はした)

813:login:Penguin
09/02/07 23:40:20 /JuKteVM
神様コマンドで
デスクトップ画像変える方法教えてくれ

by     ubuntu


814:login:Penguin
09/02/08 00:52:19 cCyeuq1v
>>813
gnome使ってるのなら
URLリンク(smdn.invisiblefulmoon.net)
でどうだろうか?

815:login:Penguin
09/02/08 06:42:05 u4QFXfom
>>814
ないすでーす

816:login:Penguin
09/02/11 13:22:04 IEgUtHHw
cshの勉強をするのにお勧めの書籍ってある?

817:login:Penguin
09/02/11 19:59:15 0CkacZ7G
Csh Programming Considered Harmful
URLリンク(www.faqs.org)


818:login:Penguin
09/02/12 00:03:13 Bwsj0K7C
>URLリンク(www.faqs.org)
セキュリティの問題でもあるのかと思ったら単に好みの程度の問題みたいね
いいじゃないインタプレタのシェルなんだから、本格的にプログラムが組みたければ
Cとか使えばいいんだし
自分はむしろsh系はインタプレタ言語のくせに未だに [ $a -lt $b ]; みたいな直感的に
分かりにくいし書式に癖があるとこが苦手だな

819:login:Penguin
09/02/12 00:17:02 OQTuzP5E
GNUの政治的な言いがかりだよ。Tcl 叩きなんか酷いもん

820:login:Penguin
09/02/12 09:49:04 ke7Lxuau
「インタプレタ」って表記ははじめて見た。

821:login:Penguin
09/02/12 10:16:18 9EZI+YqX
>>819
GNUは全く関係ない。
GNU出来る前から、cshはプログラム書くもんじゃないという話は定番。

822:login:Penguin
09/02/12 10:57:48 tCfZqJn3
bashで十分。
他にもあるかもしれないが、bashを極めた方が
得るものは多いのでわと。

if [ cond ];then
 hoge1
else
 hoge2
fi

って 見て fi のセンスに脱帽の俺(意味不明)

823:login:Penguin
09/02/12 11:23:19 9EZI+YqX
そのfiはAlgol由来

>>818
> [ $a -lt $b ];

はカッコも左右で閉じているし、中間記法で十分「直感的」だと思うが?
もしかしたら、() や < を使わないのは、「習慣的」でないと言いたいのかな?
[ より ( なんてのは「直感」とはまるで関係がない。

824:login:Penguin
09/02/12 11:33:51 oRvS6Hfm
>>823
>そのfiはAlgol由来

自分もそう覚えてたんだけど、改めて調べてみたら自信が無くなった。 この
コードサンプルによると構文は if then begin end なんだけどね。 

URLリンク(en.wikipedia.org)

まあ、Algolって方言多いからどこかであったのかも。


825:login:Penguin
09/02/12 11:38:51 oRvS6Hfm
自己解決。 Algol 68の構文か。 60と68でこんなに劇的に構文が違うなんてびっくり。
URLリンク(en.wikipedia.org)


826:login:Penguin
09/02/12 11:45:02 9EZI+YqX
Algol68って書こうとしたけど、
ちょっと自信がなくなって68抜いたら余計まずかったか orz

827:login:Penguin
09/02/12 12:48:52 LH9kJjZb
>>817 の日本語訳も貼っておく。
これってかなり有名だと思うんだけど、最近の人は知らないのかな?

URLリンク(www.kiso.tsukuba.ac.jp)

828:login:Penguin
09/02/12 13:53:40 1plRLkzR
某銀行、バリバリcsh使ってバッチ処理しているぜ
「foo.cshを流します」ってメールがしょっちゅう飛んでくる
(bar.shの場合もあり)

俺は無関係なので何しているのかは知らない

829:login:Penguin
09/02/12 17:41:38 MQL/I4RH
ふぃ~

830:login:Penguin
09/02/12 17:47:45 sR2aoOwZ
今どきcsh強制はかんべんしてくださいませんか
そろそろ移行しましょうよ


831:login:Penguin
09/02/12 21:02:17 FSng8IrW
POS業界だけどメインのスクリプトは/bin/cshだよ

832:login:Penguin
09/02/12 21:53:51 LH9kJjZb
POSってNTじゃなかったっけ?

833:login:Penguin
09/02/12 22:20:06 FSng8IrW
POSといってもwindows・solaris・Linuxと色々あるよ

834:login:Penguin
09/02/12 22:37:30 9EZI+YqX
TRONのことも忘れないで上げてください。
昔はConcurrent CP/Mのやつも…

835:login:Penguin
09/02/12 23:23:22 czJX5aHE
SunOSで育った自分は随分長くcsh/tcshに固執してたが、bashが主体のLinuxでそれを続けるのは
しんどくなってshに転向した。 慣れるとやっぱりshスクリプトの方が可搬性が高くて便利ではあるね。

836:login:Penguin
09/02/12 23:47:12 VuxIBsDt
>>820
どんな日本語発音化が一般的なのかな、インタープリターは嫌だな

>>821
重い、遅い、互換性、個人的に関数が書けないってのはあるけど、リンク先のは
sh使いのがcsh使った時の愚痴を態々レポート形式で書き連ねたみたいでなんかね
大量にコード書かなきゃいけないのならkshを推奨なんだろうけどね

>>822
' 'や';'が必要だったり必要じゃなかったり"[ $argc -lt 2 ] && exit"
で何で括弧が必要なのかとかね
括弧がコマンドのエイリアスだと知らないと直感的どころじゃないと思うけど
後、数学記号じゃなくて"-lt"とかいきなり大括弧を使うのも憶え難いな

837:login:Penguin
09/02/13 00:00:32 TCRLlSaH
>>835
自分もSunの影響はありましたね、ほかのUnixは(シェル環境が)使い辛いんだか
なんだかだったんでね

838:login:Penguin
09/02/13 00:20:30 rRTiQTAd
>>836
とりあえず、直感で文法を理解するのは止めろ。獣じゃないんだから。

839:login:Penguin
09/02/13 01:29:06 1sdCSbB5
いや、shのメタキャラの扱いは頭が痛い。ゆえにPerlに流れた人も多数と思われ

840:login:Penguin
09/02/13 04:18:13 ce9+GZrq
すべてPerlの枠内でやるぜぇ!フゥハハハー

841:login:Penguin
09/02/13 12:44:48 V9eIe9Hv
Perlをやると頭がウニるのでrubyでさらっとやりましょう。

842:login:Penguin
09/02/13 12:47:00 Gq3GLgyz
シェルスクリプトスレだから。

843:login:Penguin
09/02/13 13:54:32 yjmdVJca
了解

844:login:Penguin
09/02/13 14:02:04 rRTiQTAd
perl, python, ruby(アルファベット順)は、
コマンドラインの文字エスケープが面倒くさいぞ。
コマンドラインを直接扱えるshは、shならではの便利さがある。

845:login:Penguin
09/02/13 22:19:51 0L0k1V8C
bashと言おう!

846:login:Penguin
09/02/13 22:29:03 Gq3GLgyz
バッシュ・ザ・スタンピード

847:login:Penguin
09/02/14 01:27:18 4XWVPvB1
おくらほますたんぴーと

848:login:Penguin
09/02/19 00:43:45 E2B6YhV6
Command-line Fu
URLリンク(www.commandlinefu.com)

こことても良いサイトね
便利よ

849:login:Penguin
09/02/19 10:01:05 I3ZMt/XU
前見たときには微妙なのばっかだったが・・・

850:login:Penguin
09/02/19 23:07:11 QHZryBLH
>>848
なんだこれは

851:login:Penguin
09/02/19 23:34:35 emv2wr4j
日記を書いてるテキストファイルがあるんだけど
コマンドで
その日記の日付を置換したい場合どうすればいいか教えてください
geditでは日付それぞれ違うので一括して変更できなかったので
**/**/**
を・・・・・・・に変換したいです
よろしく男根GAYします

852:login:Penguin
09/02/19 23:37:20 cCKDE498
>>851
sed使え。

853:login:Penguin
09/02/19 23:49:02 emv2wr4j
>>852
ありがトン

854:login:Penguin
09/02/20 00:42:21 myUOwbMU
bashとshでどう違います?

shだと
export hoge=FUgfdsa とかできない
配列が使えない
くらいは知ってるんですが

855:login:Penguin
09/02/20 00:49:54 XTIEtF8Q
古いシェルのことを考えたら切りがないよ
URLリンク(www.bookshelf.jp)
/bin/shを名乗るならPOSIX sh準拠でいてほしいね

856:login:Penguin
09/02/20 00:56:59 +4QiWBsa
>>854
いろいろ違うがshの種類によってもさらに違うので一概には言えない。
おかげで、GNU autotools は恐しく涙ぐましい努力をしている。
詳しくは「移植性 シェルスクリプト」あたりでぐぐれ。

857:login:Penguin
09/02/20 01:42:32 slfVamAC
>>854
以下のスクリプトを test-cdpath.sh として保存する。
---------
#!/bin/sh
# #!/bin/bash

echo "mkdir -p hoge/foo"
mkdir -p hoge/foo
pwd
cd hoge
pwd
cd foo
pwd

exit
----------
$ export CDPATH="/usr/src"
$ ./test-cdpath.sh


858:login:Penguin
09/02/20 11:19:48 UmU5RxVP
>>854
自分で比較してみれば
URLリンク(heirloom.sourceforge.net)

859:login:Penguin
09/02/22 23:16:28 +4BXOJtP
自分は普段kshを使ってプログラムを作っています。
ただ自己学習の一環として他のshもやってみようと思い、
cshの本をとりあえず買ってきました。
内容はアルゴリズム特集のようなもので入門書ではないです。そこそこむずかしめ。

ただウィキペディアで見るとcshは現在ほとんど使われて無いとか。
本当でしょうか?無駄金使ってしまいましたかね?
幸い業務で使うわけではないので勉強すれば役に少しは立ちそうですが・・。

860:login:Penguin
09/02/22 23:23:52 yH/Zc28c
>>859
うちの会社はcshのが多いわけだが。hp-uxとかsolarisとか。aixはどうだっけ?

861:login:Penguin
09/02/22 23:27:29 i9kTRR2X
>>859
> ただウィキペディアで見るとcshは現在ほとんど使われて無いとか。
> 本当でしょうか?無駄金使ってしまいましたかね?

本当です!(><)
「cshスクリプト使うのはよくないよ~(considered harmful)」って文書があるくらい。

862:login:Penguin
09/02/22 23:30:07 +4BXOJtP
>>860>>861
ありがとうございます。
使ってるところもあるけどあまり推奨されては居ないみたいなんですね。
とりあえずアルゴリズム集っぽい本なので表面的に理解して
ざっと勉強してみるくらいはしてみようかと思います。



863:login:Penguin
09/02/23 00:01:25 02TkTA5B
cshとbashの違いってちょっと方言が違う~くらいでないの?
forがforeachとか

あんまりしらないけど

864:login:Penguin
09/02/23 00:42:30 /AxKX1aI
cshとtcshはどう地がうんすか?

865:login:Penguin
09/02/23 01:44:47 Abtbk8hJ
cshに知恵がついたのがtcsh。

もはや両方とも過去の遺物。ログインシェルとしては現役だが、
スクリプトでcsh使うのはCOBOLerを名乗るような感じで奇異の目で
見られるのは避けられない。

866:login:Penguin
09/02/23 01:46:15 RMEIkcBQ
つーかcshはUNIXの話だろ。
linuxはbash

867:login:Penguin
09/02/23 02:08:49 Pbes3ogj
>>864
最近はcshは単にtcshへのシンボリックリンクというシステムが
多いんじゃないかな? Solarisは最近はどうなのかな?

868:login:Penguin
09/02/23 08:25:23 c65f34nn
>>866
>linuxはbash
なんだよ、それ。

869:login:Penguin
09/02/23 11:12:11 KfjF9GSX
bash
OpenSolaris,mac,linux

ksh
Solaris

870:login:Penguin
09/02/23 11:29:59 KfjF9GSX
たまに、SolarisとかHP-UX使ってる輩が、linux系のシェルスクリプトの質問で
そのスクリプト動かないんですが、なんて質問してるバカがいる

で、OSきくと、SolarisとかHP-UXだったりする
あなたのはshellはなんですか?なんて逆質問されたりする


871:login:Penguin
09/02/23 11:42:17 0iVkUMQ3
sh: HP-UX
csh: IRIX
bash: OpenSolaris, Mac OS X
ksh: AIX, Solaris

872:login:Penguin
09/02/23 16:32:54 /AxKX1aI
いやsolarisはcshですよ

873:login:Penguin
09/02/23 17:41:46 YasG1lnX
久々のメジャーアップデート、定番シェル「bash」が4.0に
URLリンク(journal.mycom.co.jp)

GNUプロジェクトは20日 (米国時間)、コマンドラインシェル「bash 4.0」を
リリースした。多くのUNIX系OSに対応したソースコードは、ライセンスにGNU
GPLv3を適用、GNUプロジェクトのFTPサイトや各地のミラーサイト経由で配布
される。

2004年7月以来4年7ヶ月ぶりのメジャーアップデートとなる今回のリリースでは、
zshライクな機能を追加。ディレクトリ名を入力するだけでカレントディレクトリ
を変更できる「autocd」、サブディレクトリを再帰的にファイル検索する「globstar」、
入力補完時にディレクトリ名のスペルミスを修正する「dirspell」などのオプションが
新設された。

新しいリダイレクト演算子として「&>>」を追加、標準出力 (>>) と標準エラー出力 (2>&1)
を結合したデータをファイルにアウトプットすることが可能になった。case構文中のコマンド
区切り文字として「;&」および「;;&」を追加、いわゆるフォールスルーが実現されている。

bashのラインエディット機能を担うライブラリ「GNU readline」もアップデート、メジャー
バージョンのv6.0としてリリースされた。変数「history-size」の定義により履歴の最大数が
設定できるようになるなど、いくつかの変更が加えられている。bash 4.0のビルドには、ソース
コードに同梱されるreadline 6.0が必要。

874:login:Penguin
09/02/23 17:46:37 8fvTtZVR
>>873
globstarが素敵

875:login:Penguin
09/02/23 18:19:31 0iVkUMQ3
ちったあ処理速度は速くなったのかね

876:login:Penguin
09/02/23 23:46:13 3cx/aS+U
>>874
find -name のショートカットか。

877:login:Penguin
09/02/24 00:49:40 A7QF/SS5
locateでいいんでないの?

878:login:Penguin
09/02/24 08:32:50 p4EZ+me2
locateは、必ずその前にupdatedbかけないと、正しい結果は得られない

879:login:Penguin
09/02/24 10:05:02 o4EbZdLy
locate使ったこと無いな
/etc/cron.daily/slocate.cron は真っ先に消してしまうし。

880:login:Penguin
09/02/24 14:05:08 A7QF/SS5
updatedbのめんどくささがあってもlocateの速さは魅力

881:login:Penguin
09/02/24 14:44:59 ijmAhEc5
そんなあなたにinotify対応locate

882:login:Penguin
09/02/24 18:05:43 mkgOQJW+
ホームディレクトリ以下にある~/.thumbnails の中身を一括でjpgに変換して
容量を節約したいと思っているのですが、以下のスクリプト(convert-thumbnail2jpgl.sh)で
convert-thumbnail2jpg.sh: 36: declare: not found と出てしまい、
変数width、heightが文字変数として扱われたままになってしまってif分岐ができません。
もしよろしければどなたか、不具合の原因をご指摘していただけると助かりますm(_ _)m

#!/bin/sh
find ./ -name "*.png" -print > /tmp/thumb-file-list #PNG画像ファイルをリストアップ
for file in `cat /tmp/cache-file` #リストアップされたファイルから順に処理
do
res=`expr $file : "\(.*\).png"`
convert -background white -flatten $file $file
imagescale=`identify $file | egrep -o '[[:digit:]]*x[[:digit:]]*\ '| tr -d "\ "`
#ImageMagickを使って"幅x高さ"の書式で画像の大きさを取り出す
declare -i width
width=`echo -n $imagescale |sed 's/x.*//'` #"幅x高さ"から幅の部分のみを取り出す
declare -i height
height=`echo -n $imagescale |sed 's/.*x//'` #"幅x高さ"から高さの部分のみを取り出す
if [ $width -lt 96 -o $height -lt 96];then
#縦横いずれかが96ピクセル以下の画像はnautilus上でそのまま表示される
mogrify -format jpg -quality 80 $file #PNGをJPGに変換
mv $res.jpg $res.png #拡張子をPNGに偽装し、本来あったPNGに上書き保存
else
mogrify -resize 75% -format jpg -quality 80 $file
mv $res.jpg $res.png
fi
done
cat /tmp/thumb-file-list >> thumb-cache-file
#(未着手)次回の変換時に偽装されたJPGを再エンコードしないように変換した分を記録

883:login:Penguin
09/02/24 18:51:30 0/zaoYuK
>>882
> find ./ -name "*.png" -print > ***/tmp/thumb-file-list*** #PNG画像ファイルをリストアップ
> for file in `cat ***/tmp/cache-file***` #リストアップされたファイルから順に処理
読み込むファイルを間違ってるから for 文の file に何か別なものが入ってるかもしれない。

一行目を #!/bin/sh -x にするか
$ sh -x convert-thumbnail2jpg.sh
とかやって頑張れ。

> if [ $width -lt 96 -o $height -lt 96];then
] の前にスペースを入れないとエラーになるはず。

$ sh -x

$ A=1 ; if [ "$A" = "1"]; then echo OK ; fi
+ A=1
+ '[' 1 = '1]'
sh: [: missing `]'

884:882
09/02/24 19:03:27 mkgOQJW+
>> for file in `cat ***/tmp/cache-file***` #リストアップされたファイルから順に処理
>読み込むファイルを間違ってるから for 文の file に何か別なものが入ってるかもしれない。
恥ずかしい間違いをしてしまってすみません…
一時ファイルに自分用に適当なファイル名を付けてしまっていたので、
ここに投稿する際に勝手に変更してました(元スクリプトは両方共/tmp/cache-file)

-xで内容が詳しく見られるようですね。もう少し頑張ってみます…

885:882
09/02/24 19:13:26 mkgOQJW+
1行目を
#!/bin/bash
にして、実行する際も$bash convert-thumbnail2jpg.sh と打つことで解決しました。
shではdeclareが使えず、bashでは使えるようです

お騒がせして申し訳ありませんでしたm(_ _)m

886:883
09/02/24 20:34:08 0/zaoYuK
>>884
> (元スクリプトは両方共/tmp/cache-file)
スクリプトの中で何回か使うものなら
cachefile="/tmp/cache-file"
とかやって定義してしまったほうがいいと思う。

887:882
09/02/25 01:46:08 TZfMttNn
>>886
おかげさまで無事完成しました
ありがとうございましたm(_ _)m

888:login:Penguin
09/02/26 17:54:06 fuSH76wo
関連スレ
シェルスクリプトでGUI
スレリンク(tech板)

889:login:Penguin
09/02/27 02:01:52 +MZ66A9I
bash4.0 導入した人誰かいまつか ?
RHEL5.3 make で error orz...


890:login:Penguin
09/02/28 00:15:37 2KTcWABE
とりあえず使えてるぞ
ubuntu8.10

GNU bash, version 4.0.0(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <URLリンク(gnu.org)

891:login:Penguin
09/02/28 00:25:54 i9TaSY11
>>890
/bin/bash を置き換えたんですか?

892:login:Penguin
09/02/28 00:31:49 2KTcWABE
/usr/local/に置いただけ

俺には3.2と4.0の違いはあまり関係ないということがわかった

893:login:Penguin
09/02/28 07:37:33 zB5vZ6QQ
bashのバージョンに依存したスクリプトは趣味でやる以外はあんまり書かないと思うけど

894:login:Penguin
09/02/28 11:00:16 Tf6NC8nk
bashのバージョンに依存しないスクリプトって、ほぼ/bin/shか。

895:login:Penguin
09/03/01 14:21:53 b0tpnlkt
"A B C D E F"を
"B A D C F E"にしたり、

A
B
C
D
E
F



B
A
D
C
F
E

にしたりできますか?

つまり、AとBを入れ替え、CとDを入れ替え・・・ってな具合です。

896:login:Penguin
09/03/01 14:54:34 yaPGqr8Y
>>895
宿題乙。

一行タイプのやつ
sed -e 's/ /\
/g' | sed -e '1~2{h;d};1~2!G' | xargs

複数行タイプのやつ
sed -e '1~2{h;d};1~2!G'

897:login:Penguin
09/03/01 15:06:32 ClVN3cK/
>>895

echo 'A B C D E F' | tr 'ABCDEF' 'BADCFE'

898:login:Penguin
09/03/01 16:12:08 jusYIGdM
bash3 とbash4 って互換性大丈夫でしょ。

899:login:Penguin
09/03/01 16:45:01 b0tpnlkt
>>896>>897
素晴らしい!!
吹雪の最中に神が現れて、いきなり春になったような心境です。
ありがとうございました。

900:login:Penguin
09/03/05 13:25:03 k1KCKSK5
原子番号を元素記号に変換してください。
例)
8  → O
26 → Fe
92 → U





901:login:Penguin
09/03/05 15:44:08 7EIm6RPk
>>900
宿題は自分でやれ。

902:login:Penguin
09/03/05 15:55:50 3/9eCgJO
まず原子番号とそれに対応する元素記号の
テーブルを作成するところからはじめよう。

903:login:Penguin
09/03/05 23:21:24 BnKU6WpI
水素なら
w3m -dump URLリンク(ja.wikipedia.org) | awk '$1 ~ /^1$/{print $3}

ヘリウムなら/^1$/を/^2$/に変える。

904:login:Penguin
09/03/05 23:24:25 feEdgCm8
echo O > 8
echo Fe > 26
echo U > 92

cat %1




俺天才かもしれん。

905:login:Penguin
09/03/05 23:25:16 feEdgCm8
間違えた。。。


cat $1だ。

906:login:Penguin
09/03/05 23:35:39 BnKU6WpI
#!/bin/bash
#grepバージョン
w3m -dump URLリンク(ja.wikipedia.org) | grep "^"$1"[[:space:]]"



907:login:Penguin
09/03/06 00:15:22 4E0LodKQ
>>903
つ awk -v x=番号 '$1 ~ "^" x "$" { print $3 }'

908:login:Penguin
09/03/06 02:41:09 0+Otyqrv
全部if文でやれ。

909:login:Penguin
09/03/06 11:10:42 Es9Fr0vK
w3m -dump URLリンク(ja.wikipedia.org) | perl -ane 'for (1..118) { print "$_: $F[2]\n" if $F[0]=~/^$_$/;}'

910:login:Penguin
09/03/06 19:13:45 m/0+PDHQ
一覧表示でいいなら、これが楽だろ
w3m -dump URLリンク(ja.wikipedia.org) | awk '/^[0-9]/{print $1,$3}'


911:login:Penguin
09/03/06 20:23:52 +R69oXB9
こんなの波動だ

#!/bin/bash
echo 原子番号は
syuuki=~/syuuki
w3m -dump URLリンク(ja.wikipedia.org) |awk '/^[0-9]/{print $1,$3}' - >$syuuki
read genso
echo 原子番号$gensoの元素記号は`grep $genso ~/syuuki`です。


grepが未完成 記号だけにしたい。

912:login:Penguin
09/03/06 22:47:09 tq3ZQvrP
echo 原子番号$gensoの元素記号は`ruby -ane 'BEGIN{genso = ARGV[1]}; if $F[0] == genso; p $F[1]; break; end' ~/syuuki $genso`です。


913:login:Penguin
09/03/07 09:01:58 Qelg+V+C
「原子番号」「の元素記号は」などと書かんでいいから、
改行を入れて見やすくしろ、カス。

914:login:Penguin
09/03/07 20:47:19 zmyZifQf
というかレポートに出すんだからさ
もっと初心者っぽく書いてください
期限は明日までです



915:login:Penguin
09/03/07 21:07:11 cObxxbWz
よし!
やっぱり自分でやろう!

みなさんすいませんでした。忘れてください

916:login:Penguin
09/03/07 21:41:55 pgHRyspE
>>914>>915
w3m -dump URLリンク(d.hatena.ne.jp) | grep "^.ね.*に$"


917:login:Penguin
09/03/08 16:51:10 xQcHQnf7
Perlがあればシェルスクリプトなんて要らない
Perlのほうが高機能だから

918:login:Penguin
09/03/08 17:20:38 J6Fw6OuS
Perl は外部コマンド一つ呼ぶのにいちいち system() とか書かなきゃいけない時点で問題外でしょ。
シェルスクリプトは外部コマンドの呼び出しがとても多いんだから、文法レベルでサポートされてないとやってられない。

919:login:Penguin
09/03/08 18:43:54 4ovvgVHR
$date = `date`;

920:login:Penguin
09/03/08 19:34:58 J6Fw6OuS
ごめん、見直した。

921:login:Penguin
09/03/10 18:06:25 IwU0KhJ5
シェルスクリプトってOOじゃないんでしょ?
ダサっ

Perl使えない落ちこぼれが使う言語、それがシェルスクリプト

922:login:Penguin
09/03/10 19:16:49 ZRv0wOpe
xargsとsedで文字列加工をしようとしたがうまくいきません
コマンド|xargs -n 1 sed ~ だとコマンドの出力内容がファイル名として解釈されるし
コマンド|xargs -n 1 echo|sed ~ だとxargsがない場合と同じ動作になります
別にシェルスクリプトを
echo ${1}|sed ~ と作って
コマンド|xargs -n 1 スクリプト とすると sed -e "s/~ の s が未定義と怒られる
他に方法はありますか?

923:login:Penguin
09/03/10 21:34:04 t8WYWXe4
>>921
OO という観点で議論するなら perl じゃなくて
もっとまともな言語と比較しろよ。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch