[表示 : 全て 最新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/

180 名前:161 mailto:sage [2017/05/07(日) 22:15:23.57 .net]
みなさんありがとう。

>>171
> "$1"と比較するなら grep は要らないはず(12行目)
他ユーザがログインしていても無視してシャットダウンする仕様にしたいのです。
> 一度だけ起動であってる
了解

>>174
> 15分でシャットダウンって考えられない
トイレとかの時、5分ほどかかる自分環境自動バックアップの処理を走らせ
画面ロックして席を立ちます。
席に戻ったらまた作業に戻るのですが、とっさの用事で席に戻れない時は
電源が切れていて欲しいのです。
10分だと下痢の時短いかも。20分もいらない。だから15分。

画面ロック(ログイン状態)の時に電源切断するのは気持ち悪いので
ログオフ状態の時に切れるようにしたいのです。
(そのため、バックアップ処理完了後は自動でログオフされるようにしています)

ちなみにWindowsではそういう自作ServiceをCで書いて走らせています。
Linuxは簡単ですね。

181 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 01:49:41.10 .net]
タイムカードの無い現場で ふらっと早退してやろうって感じなのかね

182 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 05:13:08.30 .net]
そんなんならサスペンドでいいじゃん
久しくシャットダウンしてないや

183 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 07:30:05.34 .net]
Windows簡単だと思うけどな
Cならコンパイルとかの環境が必要だけど所詮慣れだし
Cなんか使わずにVBScript使えばいいんじゃないの

184 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 09:48:57.03 .net]
Windowsは簡単だな諦めるしかすることないから

185 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 19:53:34.22 .net]
>>180
Windowsだと、Cでservice作る以外に>>164を実現する方法ってあるのかな

186 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/08(月) 21:53:34.64 .net]
Windowsできるアピールはいらん
ほかでやれ

187 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/09(火) 20:02:44.75 .net]
そう、マッキントッシュならね

188 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/15(月) 06:37:29.43 .net]
時間のかかるパイプライン処理中に現在の中間処理内容を
メッセージ表示させることはできませんか?
echo で標準出力に表示させようとしてもそれは次のパイプラインに渡って画面に表示されませんよね?
標準エラー出力で表示させるしかないでしょうか?



189 名前:名無しさん@お腹いっぱい。 [2017/05/15(月) 07:04:43.49 .net]
tee

190 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/15(月) 11:20:57.06 .net]
このスレの無駄のなさすぎる回答好き

191 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/15(月) 21:05:16.62 .net]
そう、マッキントッシュならね

192 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/15(月) 23:50:07.04 .net]
でもteeの仕様って、一方をファイルじゃなく、stderrあたりに
しておいてくれれば、もっと汎用性上がったのにね

193 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/16(火) 00:37:43.04 .net]
UNIXでは標準エラーもファイルだから問題ない

194 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/16(火) 06:24:05.92 .net]
teeの出力先をstderrにすると、中間処理をモニタすることしかできなくなるのでは?
ファイルに書けばモニタも出来るし汎用的

195 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/16(火) 07:42:47.01 .net]
>189
デフォルトでstderrに吐くと、teeのエラーを吐く場所がなくなるからでは? (例えば ls | tee --wrongoption とかの場合)
モニタしたければ tee /dev/stderr でよい。

196 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/16(火) 08:32:03.95 .net]
>>192
dev使うのはOS依存じゃね?

197 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/16(火) 10:02:35.57 .net]
>>191
stderrもリダイレクトできるよ

198 名前:名無しさん@お腹いっぱい。 [2017/05/19(金) 20:34:10.11 .net]
シェルってオブジェクト指向で書けないの?
暗黙的ルール多すぎだろ



199 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/19(金) 22:16:49.58 .net]
>>195
>> 暗黙的ルール多すぎだろ
例えば?

200 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/19(金) 23:31:44.94 .net]
>>195
OOPの本質を理解してれば出来る
もし出来ないなら個人の能力に問題がある

201 名前:名無しさん@お腹いっぱい。 [2017/05/20(土) 03:14:17.14 .net]
シェルはパイプで渡していくと
関数型っぽいけど

202 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/20(土) 09:42:17.19 .net]
関数型と見るかメソッドチェーンと見るかの違いだな。

203 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/20(土) 21:59:01.54 .net]
>>195
https://invent.life/project/bash-infinity-framework

204 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/20(土) 22:19:56.29 .net]
>>195
オブジェクト指向で書くと暗黙のルールがなくなるの?

205 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/21(日) 05:34:32.67 .net]
>>195
別にシェルが嫌なら同じ処理をプログラミング言語で作れば良いじゃ無い。
LLならそんな手間じゃ無いし。

206 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/21(日) 18:05:12.85 .net]
>>195 はシェルの開発言語のことを聞いてるんだよね?
確かに、たいていのシェルはCで書かれてるし

207 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/21(日) 19:34:04.56 .net]
だんだん分けわからなくなってきたわ

208 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/23(火) 14:55:53.34 .net]
$ls>hoge.txt
だとカレントディレクトリのリストができますけど、
さらに深堀りして、そこにあるフォルダ(ディレクトリの中身)も表示させるには
どうすればいいのでしょうか?

それから、
フォルダかファイルの名前 ディレクトリ名(/Users/namae/nanntyaca/hogehoge.txt)
のようなふうに二つを並べて吐き出させたいのですがどうすればいいでしょうか?



209 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/23(火) 15:04:02.31 .net]
>>205
find . -type f > hoge.txt

210 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/23(火) 15:30:08.76 .net]
>>206
ありがとうディレクトリのリストができました。
ディレクトリのリストから、htmlのリストを作ろうとすると、どうするのが
いいのでしょうか?クリックすると当該ディレクトリに飛ぶようにしたい
だけなのです。考えていたのはtexのファイルにするということなのですが。

211 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/23(火) 15:38:50.01 .net]
ハイパーリンク作るまでやるならshの範疇じゃない気がするが
なんでも聞かずに少しはぐぐったらどうよ

212 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/23(火) 16:05:32.00 .net]
ありがとうございます
ぐぐります

213 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/25(木) 08:52:58.76 .net]
w3m . -dump_source >dir.html

214 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/26(金) 02:49:12.98 .net]
>>210
テキストファイルをhtmlにするには拡張子を変えただけでいいらしいです。
>>210さんが教えてくれてのはhtmlをtxtファイルにするための
ものだと思います。markdownでリストを作ろうと思います

ありがとうございました

215 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/26(金) 03:27:01.73 .net]
横から

Content-type: text/html
htmlはtextの中でどう書くかというルールに過ぎない
拡張子なんてのはexplorer.exeとかのソフトがどのアプリケーションソフトを起動するかのヒント程度
名前などどうでもいい

w3m . -dump_sourceは、.(このディレクトリ)をhtmlで書き出せ、と命令してる

216 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/05/26(金) 07:39:50.94 .net]
>>210さん
やりたかったことがそのままできるコードを教えてくれてありがとうございます。
それなのに申し訳ありません。>>212さんが教えてくれるまでその意義をわからず、
失礼なことを書きました。
>>212さん
本当にありがとうございます。

217 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/02(金) 10:47:53.61 .net]
シェルスクリプトの本で、こんな便利なことができるという感じの
スクリプトを紹介するような感じでできてる本というのでお薦めの本は
あるでしょうか?

218 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/02(金) 11:25:57.91 .net]
>>214
クックブック
……ああでもあれはbashだったか



219 名前:sage [2017/06/02(金) 20:17:29.65 .net]
(head ; tail ) < file
で、先頭10行・末尾10行が出るのはどういう仕組み?
FreeBSD+ash、bash で確認。
man にはそれらしい記述がないように見える。

220 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/02(金) 21:17:20.29 .net]
ちなみに GNU coreutils の head, tail だと

seq 10 | { head -1; tail -1; }
1

となる。以下の場合は

seq 10240 | { head -1; tail -1; }
1
10240

となる。これは head コマンドが一定量のデータをバッファリングした
まま処理を終了してまうから。BSD系のコマンドでは未使用なデータは
パイプバッファに戻してくれるので tail コマンドで読み出すことができる。

221 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/03(土) 15:49:14.51 .net]
ともにデフォルトが10行だからじゃないの?

222 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/04(日) 01:26:27.62 .net]
>>215
クックブック注文しました
ありがとう

223 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/05(月) 08:12:28.10 .net]
どうやって実現してるの?パイプではseekできないと
ずっと思ってた

224 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/05(月) 10:37:40.02 .net]
tailのソース読んでみたら?

225 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/06(火) 12:55:43.92 .net]
>>217
BSDは知らないけど、普通stdioで読む単位は4096byteとかだから
headがそれを読んでexitした場合残りをtailが読むことになる
入力データが4096byte以下ならheadしか受け取れないが、大きければ
headとtailがそれぞれ入力を受け取れる
パイプに戻すとかいうインタフェースはunixにはない

226 名前:213 mailto:sage [2017/06/13(火) 13:42:47.20 .net]
どうもです。
要は head と tail でディスクリプタを共有してて、未 read の部分を tail が読んでいるんだと思うんだけど、
親子じゃないプロセスでディスクリプタ共有なんてできるんでしたっけ、と思って驚いた
(できてるから、できるんだろうけど)。

ちなみに tcsh でもできた。

ただ、下記の ★1 と ★2 で結果が違うのはどうしてなんでしょう。
コマンドかファイルかで、stdio のバッファリングの違いってあったっけ。

$ seq 100 > seq100.txt
$ seq 10024 > seq10024.txt
$ cat seq100.txt | { head -1 ; tail -1 ; } # ★1
1
$ { head -1 ; tail -1 ; } < seq100.txt # ★2
1
100
$ cat seq10024.txt | { head -1 ; tail -1 ; }
1
10024
$ { head -1 ; tail -1 ; } < seq10024.txt
1
10024

227 名前:213 mailto:sage [2017/06/13(火) 13:51:01.95 .net]
>>217
> ちなみに GNU coreutils の head, tail だと
> seq 10 | { head -1; tail -1; }
> 1
> となる。
なお、FreeBSD でも
$ jot 10 | { head -1; tail -1; }
1
でした。

head・tail で共有しているのはディスクリプタだけであって、
stdio バッファの共有はしていないので、戻すってのが ungetc(3) 的な
ものを指しているのであれば、戻したとしても tail がそれを読めるわけでは
ないと思っています。

228 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/13(火) 15:00:33.86 .net]
>>223
seq 100は4096バイト以下だから。
seq 1042でtail -2
したら切れ目がわかるかと。



229 名前:213 mailto:sage [2017/06/13(火) 15:13:53.06 .net]
★1も★2 も seq 100 なのに、なぜ結果が違うのか、というのが疑問なのであります。

230 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/13(火) 15:15:44.72 .net]
ファイルディスクリプタがプレーンファイルならlseekするから

231 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/13(火) 15:19:58.75 .net]
ごめん、mmapだった

232 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/14(水) 09:15:41.39 .net]
>>226
要するに>>227の通りなんだけど
&#11088;1の書き方の場合、標準入力がパイプになるので(lseekできないので)tailには何も渡らない
&#11088;2の場合標準入力は通常ファイルseq100.txtなのでtailはlseekして読み直すから読める

233 名前:213 mailto:sage [2017/06/14(水) 10:53:46.67 .net]
ありがとうございます。
https://svnweb.freebsd.org/base/head/usr.bin/tail/tail.c?revision=314436&view=markup#l227
で lseek で先頭に戻るってのが成功するか否か、ってことですね。

234 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/06/14(水) 11:09:43.34 .net]
head -1 じゃなくて read を使ってこんな事をしてたり

df -h | { read h; echo "$h"; sort -k5,5gr; }

235 名前:名無しさん@お腹いっぱい。 [2017/07/01(土) 20:45:46.61 .net]
流石に上手いわ

236 名前:名無しさん@お腹いっぱい。 [2017/07/01(土) 23:39:20.14 .net]
>>231
惚れる。UNIX の基本コマンドだけじゃん

237 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/05(水) 17:14:04.26 .net]
>>231
やるやん(´・ω・`)

238 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/08(土) 09:49:05.30 .net]
>>223
子同士だから親から引き継いだ同じものを共有してる



239 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/15(土) 18:10:48.03 .net]
Eclipse上でシェルスクリプトを動かしたいんだけど、どのサイトを参考にすればいいですか?

240 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/15(土) 18:28:08.93 .net]
site:2ch.net 付けてググれ

241 名前:名無しさん@お腹いっぱい。 mailto:age [2017/07/31(月) 07:52:04.50.net]
# 使用しているのは GNU/Linux なので微妙にスレチかもしれないです。
GNU/Linux では /bin/sh が /bin/bash へのシンボリックリンクになっています。
私が利用している Fedora 26, Linux Kernel 4.11.11 では
bash$ readlink -e `which sh`
/usr/bin/bash
でした。(Fedora では /bin 全体が /usr/bin へのシンボリックリンクです。そういう方針です)

ファイルシステム等と共にシェルスクリプトの高速化を図ろうと,
Bourne Shell 互換で GNU bash より低機能で処理が高速な GNU dash を
/bin/sh へのシンボリックリンクにしました。
bash# rpm -qa | grep -E "^dash"
dash-0.5.9-2.fc26.x86_64
bash# unlink `which sh` && ln -s /usr/bin/dash /usr/bin/sh

再起動すると Xorg およびディスプレイマネージャは正常に起動したのですが,
ログイン後デスクトップ環境(Xfce4)が起動しません。
エラーログを取得しようにもコンソールl(/dev/tty1とか)にさえログインできず,
結局外部から /bin/sh を /usr/bin/bash に割り当て直して無事ログインできました。
原因はデスクトップ環境を構築しているシェルスクリプトのどこかに bash 独自の機能を要する文法があると思われます。
そこで質問なのですが,実際にログインプロセスを踏まずにそれを再現できるシェルスクリプトの作り方を教えてください。
長くて申し訳ないです。よろしくおねがいします。

242 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 07:59:41.19.net]
内緒で妻のパソコンでインターネットして
ヌードとかHな写真を見まくっていたのですが、なんと
bネにかの表紙に血ゥていたエロ画荘怩ェパソコンの血繧に
表示されたままになって元に戻せません!
前はプーさんの画像だったのに、今はアソコにバイブを挿した豊丸の画像です・・・。。
再起動しても表示されたままなんです。
早く直さないと妻が夜勤から帰ってきてしまします!(看護婦なので・・・・)
至急助けてください!!!
OSはウィンドウズXPです。
よろしくお願いします。

243 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 08:49:19.54.net]
>>239
金属バットでPCフルスイングすれば?

244 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 08:51:37.14.net]
ここに到達する知識があるならgoogleで検索すれば見つかるだろうに

245 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 08:57:00.00.net]
>>238
再現する方法を模索するのではなく、再起動せずに切り分けすればいいだけでは?
tty でログインできなかったって点からすると、/usr/bin/sh を差し替えた後に再起動せずに
su - 一般ユーザ名 でテストするのが一番手っ取り早そう。

display-manager(gdmや同等のソフト) を停止した状態で tty でログイン(安全をみて tty1 と
tty2 など複数個所でログイン済にしておく)、 /usr/bin/sh を差し替えて再起動せずに
display-manager を起動してログインテストすればいいんじゃないでしょうか。

246 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 09:07:15.67.net]
>>239
これは履歴とかキャッシュ消せないだろうからどうせバレる

247 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 09:10:25.45.net]
>>238
Linux板へ

248 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 09:10:52.08.net]
>>239
懐かしコピペだな



249 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 11:49:07.69.net]
>>242
ありがとうございます。やってみます。
ご迷惑かもしれませんが,解決を見たら報告します。

250 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 11:54:40.49.net]
>>240
ありがとうございます。やってみます。
ご迷惑かもしれませんが,解決を見たら報告します。

251 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 15:19:17.23.net]
>>238
checkbashismsが使えるならそれでBashの機能の有無を確認出来る
ttp://wiki.archlinuxjp.org/index.php/Dash

252 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/07/31(月) 16:15:55.29.net]
/bin/shを差し替えるなんてFedora側で想定した使い方じゃないんだから
そもそもそんなことやっちゃいけない

253 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 02:25:49.77 .net]
>>248
ありがとうございます。
5000 箇所くらい不適合が見つかりました。
パッケージ管理されているシェルスクリプトも多くあり,
全部直すとシステムの破壊も(今更かもしれないですが)心配なのでやはり bash のままにしようかなとも考えています。

>>249
その通りなんですが dash は bash の4倍早いと聞いたのでつい……。

254 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 02:59:57.01 .net]
>>250
autoconfのconfigureで5-10%速いくらい
https://lists.fedoraproject.org/pipermail/devel/2014-October/202891.html
SysVinitの昔ならともかくsystemdの今では関係ないだろうけどね

255 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 03:05:36.12 .net]
>>250
chshだけでもしとけば

256 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 08:24:31.41 .net]
>>250
4倍速いなんて誰が言ってたの

257 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 09:51:33.66 .net]
/bin/sh置き換えるとか奇形児かよ

258 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/01(火) 10:19:55.09 .net]
configureで5-10%速いなら4倍どころじゃないだろうな



259 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/02(水) 20:07:41.14 .net]
>>254
debianはそういうとこあるぞ

260 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/03(木) 07:34:52.42 .net]
あれは必死に直した結果達成したもので、同じような努力をそのdistroで
やらないとできない

そういやFreeBSDも昔base systemからperl排除するという大きな仕事を
やってたなあ

261 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/03(木) 09:32:35.46 .net]
で、「4倍速い」のソースどこよ

262 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/03(木) 09:35:10.81 .net]


263 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/03(木) 21:23:18.47 .net]
シャア専用シェル

264 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/04(金) 03:14:55.27 .net]
シェルから特定のプログラムの標準入力にデータを流すにはどうしたらいいでしょうか。

何がしたいかというと、
stdinからのデータを処理するIPCで、サーバーサイドのプログラムに
シェル側からstdinに流してレスポンスがちゃんとできているかをチェックしたいのです。

サーバープログラムは stdin をistreamで処理するように組んでおり、
stdinで入ってくるデータはEOFで一区切りとし、EOFを検出後に
EOFフラグをクリアして、再度stdinにデータが流れてくるまでブロッキングするというループになっています。

本来はクライアントサイドからstdinへデータを流しますが、
サーバーサイドだけで簡単にチェックするために、

サーバーサイドはmy-server.elfとし、
$ ./my-server.elf
で起動状態にしておきます。
ここに対して、
コマンドライン上から テキストデータ+EOFを何度か送る方法はないでしょうか?
cat hoge | ./my-server.elf
とかだと、1回しかテストできないので、どうしたらいいでしょうか。
my-server.elfのプロセスIDはわかるので、そこに対してデータを送る方法が

265 名前:あれば教えてください。 []
[ここ壊れてます]

266 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/04(金) 04:14:32.69 .net]
移植性がよくわからないけど
cat hoge > /proc/<pid of server>/fd/1

267 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/04(金) 08:14:54.70 .net]
EOFってクリアできるものなの? よくわからんが
$ mkfifo /tmp/foo
$ exec < /tmp/foo
$ exec ./my-server.elf
で cat hoge > /tmp/foo とかどうよ

268 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/04(金) 13:23:10.99 .net]
>>261
EOFってstdinの送信側がcloseしたときに送られるんじゃないの?
それ実は再コネクトしてたりしない?



269 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/06(日) 01:34:21.08 .net]
>>261
> コマンドライン上から テキストデータ+EOFを何度か送る方法はないでしょうか?
テキストデータにEOF(^D)を入力するとか
^DはCtrl+V、Ctrl+D
https://en.wikipedia.org/wiki/End-of-Transmission_character

270 名前:名無しさん@お腹いっぱい。 [2017/08/09(水) 11:18:15.17 .net]
1<br>2<br>3<br>4<br>



1
2
3
4

にシェルで置き換えるコマンド教えれ
今viで開いて置き換えてます・・・

271 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 11:21:03.77 .net]
>>266
sed

272 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 11:22:28.73 .net]
sed でもなんでもいいじゃん

273 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 13:07:15.54 .net]
あえてヘッドレスブラウザを使ってみよう

274 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 13:07:21.78 .net]
echo '1<br>2<br>3<br>4<br>' | tr '<>' '\n\n' | fgrep -v br

275 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 14:41:10.39 .net]
ありがとうございます
sedで出来ました

というか所定の文字列(今回は<br>)を改行に置き換えることと
改行を所定の文字列に置き換えることを混同していました

たしか後者はsedなどでできずperlとかでやった覚えがあります
まったくもって私の勘違いでした・・・

276 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/09(水) 14:49:33.52 .net]
unhtmlだと改行入らないっけ

|w3m -dump

277 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/13(日) 15:47:35.48 .net]
macのファイル名に使われるエンコーディングてutf-16だったんだね
てっきり、utf-8だと思ってた
tama-san.com/hfsplus/

んで、次のOSでは非正規化になるみたい
https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/APFS_Guide/FAQ/FAQ.html

これで少し楽になれそう

278 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/13(日) 15:56:24.85 .net]
内部表現はutf-16
ターミナルで扱うときはutf-8



279 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/13(日) 18:10:53.30 .net]
知らなかった
ありがとう

280 名前:名無しさん@お腹いっぱい。 mailto:sage [2017/08/20(日) 22:32:53.01 .net]
シェルスクリプト とはほとんど関係ないんだけど,X 使ってる時,ターミナルエミュレータに ファイルマネージャの「ファイル」や「フォルダ」を D&D したらその絶対パスが入力されるんだな。
これ今迄知らずに手入力してた。






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

前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