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


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

シェルスクリプト総合 その26



1 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/03/20(月) 12:07:26.41 .net]
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
  heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その25
echo.2ch.net/test/read.cgi/unix/1439563321/

469 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/09(火) 20:01:44.41 .net]
Linuxの話ならLinux板で聞いてください

470 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/10(水) 13:12:44.56 .net]
odコマンドって規定で行番号は付くは省略するわでほんとUNIX哲学的じゃねーな
xxdとかのほうが遥かに扱いやすいわ

471 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/10(水) 16:21:53.96 .net]
行番号ちゃうし

472 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/11(木) 12:57:39.11 .net]
od -An -v

473 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/13(土) 15:24:43.34 .net]
規定がっていう話でしょ
それと同じで ls も規定で勝手に表示を整えるのをやめてほしい。
Plan 9のlsは規定でls -1みたいな挙動らしいけど。

474 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/13(土) 15:30:27.80 .net]
規定なら従っといた方がいいじゃん
罰則あるかもしれんし

475 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/13(土) 15:31:53.68 .net]
それは規約じゃ

476 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/13(土) 19:01:27.06 .net]
default = 既定

477 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/13(土) 22:58:37.21 .net]
違反すると罰則あるのは規定じゃなくて規約だろって話



478 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 10:57:30.90 .net]
だから「Default=規定」って書いたんじゃねーの?
規約じゃないって意味で。

479 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 11:45:22.78 .net]
ワケワカメ

480 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 15:52:04.52 .net]
なんだこの流れ
全員頭悪いの?

481 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 16:00:17.68 .net]
流れ?

482 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 16:20:16.87 .net]
全次郎?

483 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 17:49:06.78 .net]
規約じゃなくて規定なら別に従う必要ないって話なだけじゃないのか

484 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 17:50:28.44 .net]
default=既定≠規定

485 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 19:12:18.41 .net]
>>465の誤字を>>466が茶化したのに理解されずにグダグダになった流れ

486 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 19:28:08.33 .net]
すまん誤字に全く気付かなかった

487 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/14(日) 19:34:54.90 .net]
あーなるほどそういうことか。
普通に「既定」に脳内変換してたせいで意味不明な喧嘩に見えてたわ



488 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/15(月) 00:06:01.79 .net]
脳内変換てw馬鹿なだけやんかw

489 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/15(月) 08:02:47.35 .net]
すぐそうやって火種を撒く……

490 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/15(月) 22:28:34.05 .net]
$'\n' こういう $'何か' っていう書き方って bash 限定?
sh でもいける?

491 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/16(火) 12:48:12.73 .net]
bash限定

492 名前:名無しさん@お腹いっぱい。 mailto:age [2018/01/16(火) 15:07:55.74 .net]
POSIX xargs
pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html
には-0オプションがありませんが,どうにかしてxargsにナル文字区切りのデータを渡せませんかね。
もしくは xargs -0 がエラーになるOSをご存知でしたら教えて下

493 名前:さい。
FreeBSD, MacOS, Debian GNU/Linuxともにxargsに-0オプションはありました。
[]
[ここ壊れてます]

494 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/16(火) 16:09:39.07 .net]
Solarisとかあやしそうだね

495 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/17(水) 00:51:10.26 .net]
>>485
そうみたいね
https://unix.stackexchange.com/questions/67193/solaris-xargs-command-for-solaris
https://docs.oracle.com/cd/E19253-01/819-1210/6n3j74k03/index.html

496 名前:481 mailto:sage [2018/01/17(水) 04:46:35.14 .net]
>>485
>>486
ありがとうございます。
ファイルパスに関するシェルスクリプトを作ろうとしており,
ファイル名に改行文字が含まれている場合を考慮してナル文字区切りでデータを扱いたかったのです。
が,もうそんな特殊なファイル名にしている側の責任ってことにします。
仕事だったらもうちょっと考えるところですが個人で扱うので自分が気をつければいいだけなんで。

リンク等ありがとうございました。

497 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/17(水) 08:37:13.99 .net]
pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html
POSIXのfindには+終端もあるみたいだから、
用途によってはxargsを使わずに変なファイル名が扱えることもある。
例によってSolarisにはないが、POSIXに準拠してないということで切れる。



498 名前:481 mailto:sage [2018/01/17(水) 09:45:47.24 .net]
>>488
ありがとうございます。

> 例によってSolarisにはないが、POSIXに準拠してないということで切れる。

恥かしながらSolaisってPOSIX準拠を謳っていないことを今知りました……
よくシステムコールAPIの説明で「SolaisまたはPOSIX」とありますが,
その真意をようやく掴めました。

---
awkのRSにナル文字を指定できればxargsの代替として使えるかもしれないと思ったんですが,
$ printf '%s\0%s\0%s' 'First' 'Second' 'Third' | awk -v RS="$(printf '\0')" '{ print $0 }'
みたいなことをやっても撥ねられる
(シェルがナル文字についての警告を出して,「FirstSecondThird」とだけ表示される)
のでやっぱりナル区切りを扱うのはやめておこうと思いました。
大人しく空白区切り・改行レコードで行きます。

499 名前:481 mailto:sage [2018/01/17(水) 09:55:31.15 .net]
なんかこうすると上手く行った (ように見えます)。

$ printf '%s\0%s\0%s' 'First' 'Second' 'Third' | \
awk ' \
BEGIN {
RS="\0"
ORS="\n"
}
{
print
} \
'

なんでこれが良くて >>489 がだめなのか分からないのが怖いので結局ナル文字区切りはやめることにしました。
連投&スレ汚し失礼しました。

500 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/18(木) 11:41:43.86 .net]
sedでiフラグをdフラグと一緒に使うことはできないのでしょうか。

501 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/18(木) 11:44:10.00 .net]

sed
mevius.2ch.net/test/read.cgi/unix/1085730992/

502 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/18(木) 19:40:41.47 .net]
>>492
誘導ありがとうございます。一応の解決を見ました。

503 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/26(金) 00:50:46.41 .net]
hoge.sh <(cat hoge.txt fuga.txt piyo.txt)

### hoge.sh
#!/bin/bash
wc -l $1 # 正しい行数
wc -l $1 # なぜか0

おせーてエロいひと

504 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/01/26(金) 06:57:46.46 .net]
>>494
つ cat hoge.txt fuga.txt piyo.txt | (wc -l; wc -l)

505 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/01(木) 22:35:58.02 .net]
こういうhoge.shがあったとして
```
#!/bin/bash
set -x
for x in aa bb cc; do
echo $x
done
```
実行するとこうなる
```
$ bash hoge.sh
+ for x in aa bb cc
+ echo aa
aa
+ for x in aa bb cc
+ echo bb
bb
+ for x in aa bb cc
+ echo cc
cc
```
けどこうしたい(forやifが出力されないようにしたい)
```
$ bash hoge.sh
+ echo aa
aa
+ echo bb
bb
+ echo cc
cc
```
どうしたらいい?

506 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/01(木) 22:38:33.65 .net]
つづき。ためしにこうしてみた
```
#!/bin/bash
for x in aa bb cc; do
set -x
echo $x
set +x
done
```
実行したら set +x も表示された(これは

507 名前:いらない)
```
$ bash hoge.sh
+ echo aa
aa
+ set +x
+ echo bb
bb
+ set +x
+ echo cc
cc
+ set +x
```
[]
[ここ壊れてます]



508 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/01(木) 22:40:28.83 .net]
grep -vでもしたら

509 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/01(木) 23:21:30.45 .net]
echo $x
の前に
echo + echo $x
と記述する

510 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/01(木) 23:48:49.07 .net]
bashだからじゃね?

511 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/02(金) 01:26:01.46 .net]
fishてどう?

512 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/02(金) 01:47:58.90 .net]
$ cat hoge.sh
#!/bin/bash
for x in aa bb cc; do
(set -x
echo $x)
done

$ bash hoge.sh
+ echo aa
aa
+ echo bb
bb
+ echo cc
cc

なんつって

513 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/02(金) 08:54:06.42 .net]
>>502
> (set -x
> echo $x)
この方法でできました。ありがとうございます。
もっと簡潔に書けるといいのだけど。

514 名前:名無しさん@お腹いっぱい。 [2018/02/08(木) 16:21:59.61 .net]
すんませんけど 今割り当て端末数からこんな感じでサブネットマスクを出すのを作ったんですけど
i=256;j=0 ; while [ ! $i -eq 1 ] ; do i=$(( $i /2 ));echo $i; j=$(($j + 1)) ; done ;echo ans:$((32 - $j))

もっとてっとり早く出すコマンドはありませんか? できれば256を入れたら8とかさっさと返してくれるような奴を
あとよくわからんけど 計算で256と2を入力したら後ろの8とかを出すコマンドはないですか?
覚えるとか調べるは嫌いなんで、なるべく手間のかからないものを教えてください
 

515 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/08(木) 17:19:18.65 .net]
サブネットマスクぐらい暗記か手計算しろよ

516 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/08(木) 18:06:11.03 .net]
>覚えるとか調べるは嫌いなんで、

生きてる意味あんのか、これで?

517 名前:名無しさん@お腹いっぱい。 [2018/02/08(木) 19:05:19.51 .net]
>>505
手間がかかるから面倒だよ
20万以上やるし

ああ これででるのね うしろに変なゴミが付いてるがどうでもいいか
:echo " l(65556)/l(2)" | bc -l
16.00044020841915062248
:echo " l(1024)/l(2)" | bc -l
10.00000000000000000010
>>506
また努力するするのが誇らしいとか思ってる馬鹿?ww
俺が考えるならこの機械とか利用価値はないよ
ゲーム開発のUNITYのスレに行けば似たような奴が沢山いるよ

まぁしばらくはマシーンを買う金がないからlinuxとイヤイヤ付き合うしかないが
ほんと手間がかかるな



518 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/08(木) 19:20:30.57 .net]
ある意味面白いやつだな

519 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/08(木) 20:11:48.67 .net]
>また努力するするのが誇らしいとか思ってる馬鹿?ww

こんなこと考えたこともないけど
思い込みが激しいっていうか頭腐ってるだろ
ああ死んでるんだったっけ

520 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/08(木) 20:31:31.63 .net]
落ち着け

521 名前:名無しさん@お腹いっぱい。 [2018/02/08(木) 20:57:59.75 .net]
>>509
そういう手間が掛かるのはちょっと…
利用価値がないし

522 名前:名無しさん@お腹いっぱい。 [2018/02/08(木) 21:47:56.46 .net]
バイト雇って計算してもらいましょう

523 名前:名無しさん@お腹いっぱい。 [2018/02/08(木) 23:17:47.05 .net]
>>512
俺自体が無職だよ

さて間抜けからビットコインを盗まんと

524 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/09(金) 01:51:26.42 .net]
>>513
頼むわ
間抜けは存在自体がガンだから

525 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/09(金) 09:19:26.94 .net]
犯罪の予告と教唆かよ

526 名前:名無しさん@お腹いっぱい。 [2018/02/09(金) 22:09:51.06 .net]
>>515
予告と教唆じゃなくて実行中だよ
とろくさいやつだなw
or2.mobi/index.php?mode=image&file=193749.jpg
or2.mobi/index.php?mode=image&file=193750.jpg

3週間たってだいぶリナックスにも慣れてきた
ある程度稼がせてもらったらウインドウズに戻るよ
ライブは少し使いにくい

527 名前:名無しさん@お腹いっぱい。 [2018/02/09(金) 22:12:54.21 .net]
なんかシェルスクリプト総合とか書いてあったから来てみたけど
しょぼそうな連中しか居ないけど…

ここのひとってシステム管理とかで食ってる連中が多いの?



528 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/09(金) 22:39:19.88 .net]
煽ったらなんかもらえるのか?

529 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/09(金) 22:54:21.43 .net]
なんか急に変なの出てきたな
どっかにスレのアドレスでも貼られたのか

530 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/10(土) 00:05:29.76 .net]
いや元々お前らの方がずっと変だけどw

531 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/10(土) 05:51:23.70 .net]
変と思いながら見続けて今さあながら「変だ!変だ!」と言う人って・・・

まあ相手にされるかは別にして居たいなら居ていいと思うよ

532 名前:名無しさん@お腹いっぱい。 [2018/02/10(土) 11:31:48.71 .net]
>>517
面白いネタがあれば食いつくんじゃない?
つまらんネタしか無いから過疎ってる。

533 名前:名無しさん@お腹いっぱい。 [2018/02/10(土) 19:55:51.78 .net]
ほんとに揃いも揃っておまえらは無能な連中だよ
こんな能無し共が良いかねを取って裕福な生活をしてるのに
何で俺がしこしこビットコインを盗まんとならんのか……
よしよしw 今日はあがりはデカそうだな

534 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 20:16:20.69 .net]
1111
2222
3333
という内容のファイルに対して,
• 3333 が見付かれば 3333 を,
• 見付からなければ 2222 を
• ⋮
という操作を施したいです。そして,これをパイプに繋ぎたいです。
私が考えたのは↓のスクリプトですが,
for q in 3333 2222 1111; do
cat <<-'EOF' |
1111
2222
3333
EOF
grep $q && break
done
難点があります。
1. パイプでファイルを渡せない。
2. 順番に依存している (実際のファイルでは 3333 が最後にくるとは限らない)
どうか助言願います

535 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 20:19:41.66 .net]
あ,すいません。期待する動作は,
かりに理想のスクリプトを idea.sh として,
$ cat ./org.txt
2222
3333
1111
$ cat ./org.txt | idea.sh
3333
$ cat ./org.txt | sed -e '/3333/d' | idea.sh
2222
$ cat ./org.txt | sed -e '/3333/d' -e '/2222/d' | idea.sh
1111
という感じです。

536 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 21:01:11.15 .net]
標準入力を受け取れるように作ればいいんじゃないの?

idea.sh
sed -e "/$1/d" < /dev/stdin

$ cat ./org.txt | ./idea.sh ‘3333’ | ./idea.sh ‘2222’ | ./idea.sh ‘1111’

537 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 21:10:36.33 .net]
awk使うのが妥当。
awkが嫌なら、標準入力をファイルにコピーしてから複数回に分けて処理するしかないな。



538 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 21:26:45.83 .net]
やりたい事はシンプルなのに標準入力使おうとしてるせいで妙に面倒になってるな
awkかgrepでよさそうだが

539 名前:名無しさん@お腹いっぱい。 [2018/02/15(木) 21:36:30.68 .net]
事前にソートしたら?

540 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 21:38:59.09 .net]
tacは?

541 名前:名無しさん@お腹いっぱい。 [2018/02/15(木) 21:41:36.03 .net]
$PATHの中身って最初は空じゃないの?
$PATHをechoしてみたら,その中に
~/.bashrcや~/.bash_profileでexportされてるパス以外のモノが含まれてた
でも$PATHに初期値を設定できるならわざわざ~/.bashrcや~/.bash_profileでexportする必要なくない?
どうなってるのか教えてくれ

542 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/15(木) 22:34:13.00 .net]
OSによるけどinit.dの中とかlogin.confとかでデフォルトを設定する。
ここ書き換えると全ユーザに影響が出るので、個別設定は.bash_profileとかに書く。
exportするのは万一PATHなしで起動されてしまったとき用。

543 名前:名無しさん@お腹いっぱい。 [2018/02/16(金) 02:23:59.63 .net]
>>504
> すんませんけど 今割り当て端末数からこんな感じでサブネットマスクを出すのを作ったんですけど

ipcalcコマンドで行けるんじゃね?
知ってるだけで使ったことないけど

他にもiptabとかipcountとかあるらしいな

544 名前:名無しさん@お腹いっぱい。 [2018/02/16(金) 08:44:35.62 .net]
>>525
最初に自身で書いてたようなんで十分じゃないの?
パイプで渡せないというのが何を嫌がってんのかによるけど
テキストなら貯めてechoしたっていいんじゃ
DATA="$(cat -)" && cat $KEYWORDFILE | while read KEYWORD ; do ( echo "$DATA" | grep "$KEYWORD" ) && break ; done

データでかいから捜査対象の方を1パスで捜査したいってことなら
シェルスクリプトでがんばるより別のことでがんばろう

545 名前:名無しさん@お腹いっぱい。 [2018/02/16(金) 20:37:24.42 .net]
>>533
ありがとやっと有益なレスが出たよ
他のやつは揃いも揃って無能な役立たずばっかりだから

546 名前:名無しさん@お腹いっぱい。 [2018/02/16(金) 20:41:32.04 .net]
ショッアーーーーーーーーー!!!
さってビットコインを盗むか

547 名前:名無しさん@お腹いっぱい。 [2018/02/16(金) 21:23:29.93 .net]
アホにレスした俺もアホだった。
やっぱアホはスルーに限る。



548 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/17(土) 02:29:48.74 .net]
>>533
俺も普通は ipcalc 使ってるけど最近は sipcalc というのもあるらしい。

紹介してくれてる iptab とか ipcount 含めて今度試してみようと思う

549 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/20(火) 18:16:48.11 .net]
シェルスクリプトの函数で扱える文字数に上限はないのでしょうか。
pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_05
↑ここが多分公式の文書だと思うのですが,使用可能な文字の種類に言及こそすれ,文字数については触れていないように思いますが……
ファイル名などの上限と同じく255文字でしょうか?

550 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/22(木) 02:57:44.82 .net]
>>539
255文字かどうかは、質問するまでもなくすぐにわかると思いますよ。

551 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/22(木) 05:46:35.30 .net]
ワロタ、試せよwそして調べろよって話だよな

552 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/24(土) 22:51:48.88 .net]
$ :> "$(yes a | head -n 255 | tr -d '\n')"
$ :> "$(yes a | head -n 256 | tr -d '\n')"
sh: 1: cannot create aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: File name too long

553 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/02/25(日) 16:39:26.69 .net]
ファイル名の文字数上限はファイルシステムに依存する

554 名前:名無しさん@お腹いっぱい。 [2018/03/03(土) 23:53:36.62 .net]
シェルスクリプトで有るコマンドを実行した時、
標準出力の内容を緑に、標準エラー出力の内容を
赤にしたいんだけどどうすればいい?

本当に聞きたいことはエスケープシーケンスではなく、
標準出力と標準エラーをそれぞれ別々に加工する方法ね

555 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/03(土) 23:53:52.11 .net]
ちなみにファイルに吐き出さずにやりたい

556 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/04(日) 01:26:00.19 .net]
お前にはなんか教えたくない

557 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/04(日) 01:40:31.82 .net]
なんかググればすぐ出てきそうな



558 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/04(日) 02:21:55.51 .net]
それがないんだよね。標準エラー出力を標準出力に
変えてしまうのは有るけど、それじゃ別々にやるのは不可能だし

559 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/04(日) 16:46:18.09 .net]
条件が厳しいからどうしてもシェルスクリプトでやりたいなら
先ずシェルを作るところから始めないといけない

560 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 00:43:32.66 .net]
bashやzshなら簡単に出来るぞ

561 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 01:06:07.74 .net]
出力を切り離してパイプで別々のコマンドでフィルタする程度じゃ全然駄目だから
こういうのを簡単にできると言い切る人はきっとものすごく優秀な頭脳の持ち主だと思う

562 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 01:28:58.62 .net]
これは書いていなかった俺が悪いんだが、
bashやzshを使わずにposixの範囲でやりたいんだよね。
少なくともdashやashで動くものがほしい

でその方法が実際にあることは知ってるんだけど、
もっとシンプルな方法はないのだろうかと言うのと
俺がその方法をここに書いちゃうと
身バレしちゃうので書かなかった

563 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 12:24:32.78 .net]
>>551
> 出力を切り離してパイプで別々のコマンドでフィルタする
だけやぞ

564 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 18:09:38.99 .net]
POSIXに準拠したい気持は分かるけど,一次ファイルを作らないっていう謎の拘りが理解できない。
両立させるのは厳しいと思う。もうさ,
tempf="$(printf '%s%s%s%s' '/tmp/' "$(date +"%y%m%d%H%M%S")" '.' "$$")"; somecmd 2> "${tempf}" | \
printf '\e[1;32m%s\e[0m\n\e[1;31m%s\e[0m\n' "$(cat)" "$(cat "${tempf}")"; rm -rf "${tempf}"
でいいでしょ。もちろんPOSIX準拠。

あと偉そうなこと言うが,「身バレが怖いから持ってる (有益かもしれない) 情報を明かしません」って,
こっちからするとかなり不快だから,黙って何も知らないふりをしておいたほうがまだマシだよ。

565 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 18:12:03.21 .net]
落ち着け
最初の質問の時点で性格の幼稚さは見え透いてるだろ

566 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 19:58:23.46 .net]
>>550
やり方教えて

567 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 21:20:34.93 .net]
>>554
> 一次ファイルを作らないっていう謎の拘りが理解できない。
書いてなかったのが悪いんだろうけど、一時ファイルを使うと
ストリーミングで処理できなくなるんだよ
つまり前のプログラムの出力が完了しないと次のプログラムが動かない
POSIX準拠はbusyboxで動かす必要があるからこれも必須
この二点は今回の質問には直接関係ないから理由じゃなくて制約として書いた



568 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 21:25:58.36 .net]
そしてこっちの方で回答きたよ

くだらねえ質問はここに書き込め!Part 230
https://mao.5ch.net/test/read.cgi/linux/1515383155/315

同じ文章なのになんでこう反応が違うんだろうね
同じ文章なんだからレスする側の問題があるだろうね
質問する側と回答する側、立場は対等だって言ったら怒りそう

569 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/03/05(月) 21:38:48.22 .net]
>>554
あとmktemp使ったほうが良いよ。
なんでぜったいにかぶらない方法があるのに
自分でなるべくかぶらないように努力するんだろう
結構多いよね。mktemp使ったほうがコード短くなるのに






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

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

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