1 名無しさん@お腹いっぱい。 2017/03/20(月) 12:07:26.41
シェルスクリプトの総合スレです。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。 http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/ http://heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆーな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した処理にはそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 □回答者への注意事項: ・シェルスクリプトでの処理方法を質問しているのに、よくわからずに 「そういうのはperl使いましょう」と回答するのはやめましょう。 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。 前スレ シェルスクリプト総合 その25 http://echo.2ch.net/test/read.cgi/unix/1439563321/ 2 名無しさん@お腹いっぱい。 2017/03/20(月) 12:18:18.85
すまん、立てたはいいがセキュリティ違反か何かでテンプレが貼れない 誰か貼れないか
3 名無しさん@お腹いっぱい。 2017/03/20(月) 12:24:45.46
ls -エル かな以前これで引っかかったことがある ls -Rl とかなら通るんだけど
4 名無しさん@お腹いっぱい。 2017/03/20(月) 14:13:27.13
>>1 > □お約束 > □初心者へのアドバイス: > □回答者への注意事項: □じゃなくて■にして欲しい 5 名無しさん@お腹いっぱい。 2017/03/20(月) 15:00:21.27
>>4 それってなぜ?漢字のくちやカタカナのろと間違えやすいから? 6 名無しさん@お腹いっぱい。 2017/03/20(月) 16:21:48.83
>>2 同じく書けなかった。テンプレ書こうとするとなぜかYou are blocked となる。 7 名無しさん@お腹いっぱい。 2017/03/20(月) 17:09:06.18
前スレ立てられたの2年前みたいだし、その間に規約かその辺の変更でもあったかな
8 名無しさん@お腹いっぱい。 2017/03/20(月) 17:32:38.34
シェルスクリプトの総合スレです。 初心者、学生、アマチュア、プロ、シェルの種類や OS を問いません。 スクリプトのお勉強・自慢・腕試しなどにどうぞ。 まずはテンプレートをご覧下さい。 □A. お約束 1. 特記なき場合は #!/bin/sh がデフォルトです。この場合可搬性に注意し、 Traditional Bourne Shell もしくは、POSIX 相当のスクリプトでお願いします。 bash / zsh / ksh / ash / dash や OS 等に依存する場合は、明示しましょう。 良く分からない方は、使用している OS を書いておけば OK です。是非ご参加下さい。 2. 質問する前に、まず自分で調べましょう。ただし、 「聞くは一時の恥、聞かぬは一生の恥」です。積極的に参加しましょう。 3. 相手を侮辱する発言、失礼な発言は差し控え、知的な議論を楽しみましょう。 4. 他者には様々な環境や事情、目的が有る事に留意し、無下に扱う様な発言は 控えましょう。 □B. お約束の補足 1. Mac OS X では、/bin/sh の実体は bash です。また、一般的に BSD 系 や GNU/Linux の方は、/bin/sh がシンボリックリンクですので、注意して下さい。 ls (ハイフン)l /bin/sh や readlink -e /bin/sh で確かめて下さい。 2. 可搬性については、下記 F.1 を参照して下さい。 3. POSIX については、man 7 standards や下記 F.2 ( の特に Shell & Utilities ) を参照して下さい。 4. Traditional Bourne Shell とは、UNIX Version 7 から SVR4.2 の /bin/sh を元に 小さなの改変を加え主に商用 UNIX で残されているものです。( 下記 F.3 参照 ) 5. Traditional Bourne Shell で入手しやすい sh は、後期 SVR4.0 から派生し、 SunOS 5 / OpenSolaris を経た、Heirloom Bourne Shell です。 SVR4 / SVID3 相当です。同様の Unix utilities も扱っています。 ( 下記 F.3 参照 )
9 名無しさん@お腹いっぱい。 2017/03/20(月) 17:32:51.71
ls - lがだめなんですよ
10 名無しさん@お腹いっぱい。 2017/03/20(月) 17:33:10.57
□C. 初心者へのアドバイス 1. シェルスクリプトのことをシェルってゆーな 2. 知らないコマンドが出てきたら man コマンドで調べましょう。 3. UNIX には、シェルスクリプトに便利な小さなコマンドが色々あります。 apropos ないしは man -k でそれらしい単語による簡単な検索もできます。 4. シェルの構文や内部コマンドは man sh で。英語は LANG=C man shで。 5. 思い通りに動かないときは、まずは #!/bin/sh -x でトレースしましょう。 6. 適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awk / perl / javascript / ruby / python 等、他の (スクリプト) 言語の方が 適した処理にはそちらを使いましょう。 7. シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題は正規表現スレへ 8. csh / tcsh のシェルスクリプトは推奨されません。理由は下記を参照 http://www.speech-lab.org/ ~hiroki/csh-whynot.euc 9. cat file|すんなハゲ a. 詳細は "Useless Use of Cat" UUOC で検索して下さい b. 有用な場合も有ります Useful use of cat(1) 英文 http://www.in-ulm.de/ ~mascheck/various/uuoc/ □D. シェルスクリプトでよく使うコマンド 1. 制御・条件判定系: [, test, expr, true, false, yes, getopts 2. テキスト処理系: cat, awk, sed, tr, sort, uniq, grep, wc, head, tail, cut, paste, comm, join 3. ファイル検索系: find ( スペースなどを含むファイル名を正しく処理するため、 find は -exec command {} + を推奨。 他に -print0、xargs は -0 オプションという方法もあるが Solaris 非対応 ) 4. ディレクトリ系: basename, dirname 5. 出力系: echo, printf 6. 対話コマンド制御系: expect 7. http / ftp の処理自動化: wget, curl 11 名無しさん@お腹いっぱい。 2017/03/20(月) 17:33:34.08
12 名無しさん@お腹いっぱい。 2017/03/20(月) 17:33:47.61
13 名無しさん@お腹いっぱい。 2017/03/20(月) 17:34:01.41
14 名無しさん@お腹いっぱい。 2017/03/20(月) 17:34:15.91
15 名無しさん@お腹いっぱい。 2017/03/20(月) 17:38:33.53
なるほどサンクス、そこだけだったのね
16 名無しさん@お腹いっぱい。 2017/03/20(月) 17:51:56.12
乙です 正規表現スレなんてものもあるのか
17 名無しさん@お腹いっぱい。 2017/03/22(水) 02:44:38.59
bash内での関数の組み立て方を教えて下さい jqのコマンドオプションを組み立てて実行したいのですが上手く行きません function XXXX { local filename=$1 local option="'.files | map(select(.name = \"$filename\" )) | .[0] '" local st='echo' "\$files | jq $option" $st retrun 0 } そもそもこんがらがってきているのでお助け下さい
18 名無しさん@お腹いっぱい。 2017/03/22(水) 02:46:07.39
retrun になってる 他は知らん
19 名無しさん@お腹いっぱい。 2017/03/22(水) 03:14:20.82
>>17 自己解決しました。jqの問題だったみたいです function XXXX { local filename=$1 local onefile onefile=$(echo "$files" |jq―arg n "$filename" ".files | map(select(.name =\"\$n\" )) |.[0]") 以下省略 } 20 名無しさん@お腹いっぱい。 2017/03/25(土) 09:35:56.16
最近標準エラー出力で引っかかったこと pingで疎通が出来ないときにインタフェースを上げなおすスクリプト書いてた pingでerror(パケットロス)が発生したときと 例:1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms インタフェースがダウンしてたとき 例:connect: Network is unreachable 一つ目は普通に実装できたけど二つ目がなぜか出来ない コンソールで試してみたけどgrepにも引っかかってる ように見えただけだった・・・ 実はこれ標準エラー出力に出ててgrepに引っかかってるように見えたのはフェイクだった 結局以下のように「2>&1」を追加して標準エラー出力を標準出力に出すようにして解決した 例:ping x.x.x.x -c 10 2>&1 | grep "connect: Network is unreachable"
21 名無しさん@お腹いっぱい。 2017/03/25(土) 10:19:05.39
>>20 なぜ出力を解析した? 実行結果を使うべきではなかったのか? 22 名無しさん@お腹いっぱい。 2017/03/25(土) 10:25:44.42
一般にstdoutとstderrは用途が違うから(stderrはstdoutがリダイレクト されても端末に出したいとか)、エラーテキストをgrepするような ことをしたい場合は意識しないといけないね ただ、pingコマンドの場合は終了コードを見るのが王道だと思う
23 名無しさん@お腹いっぱい。 2017/03/25(土) 13:57:40.19
>>21-22 いまは$?見てる 元々は何パーセントかロスしてもいい造りにする予定だったんだ 最終的には正常0、ロスあり1、リンクダウン2だったので 0以外は問題ありって言う処理に修正した 24 名無しさん@お腹いっぱい。 2017/03/25(土) 20:08:07.22
grepはcolor表示でマッチしてるか確かめればいい
25 名無しさん@お腹いっぱい。 2017/03/26(日) 04:25:32.34
だいたい何かを作ってエラーが出てハマる時って、基本に立ち返って当たり前の事から検証し始めると解決するよね 大抵本当にアホな理由でつまづく
26 名無しさん@お腹いっぱい。 2017/03/28(火) 06:24:43.37
一人で見てると、くだらないとこでハマったりよくあるな 一分でわからなければ二分探索する
27 名無しさん@お腹いっぱい。 2017/03/28(火) 08:39:53.43
そして天下三分の計
28 名無しさん@お腹いっぱい。 2017/03/28(火) 08:41:28.46
sakura四分割の術
29 名無しさん@お腹いっぱい。 2017/03/28(火) 14:00:15.46
出会って五分でバグ出し
30 名無しさん@お腹いっぱい。 2017/03/30(木) 17:29:20.60
簡単なマルチプロセスの方法ないか考えてたら 置換コマンドを変数で定義してやって、|でつなげてやればいいだけだった
31 名無しさん@お腹いっぱい。 2017/03/30(木) 18:14:02.75
&でなく?
32 名無しさん@お腹いっぱい。 2017/03/30(木) 18:30:02.88
&だと、サブシェルになるんで変数の取り出しが面倒
33 名無しさん@お腹いっぱい。 2017/03/30(木) 21:12:06.15
34 名無しさん@お腹いっぱい。 2017/03/31(金) 16:30:56.29
本报讯(记者黄辛)复旦大学药学院李聪团队和附属华山医院毛颖团队合作, 将一种新型纳米探针用于脑肿瘤手术导航,通过纳米探针对脑胶质瘤酸性环 境的响应性成像引导手术切除,有望为改善脑胶质瘤手术的预后提供一种新 策略。相关研究成果近日秋月康秀在线发表于《先进材料》。 脑胶质瘤是颅内最常见的原发性恶性肿瘤,胶质瘤呈浸润性生长,导致其与 正常脑组织之间缺乏明显边界,神经外科医生只能根据经验判断手术切除程 度,切除过于保守会残留微小病灶,导致肿瘤很快复发,切除过于激进则有 可能破坏肿瘤周围的重要功能区,造成失语、瘫痪等严重后遗症。 该研究发现了一种对肿瘤酸性环境具有双模态信号响应的探针,可用于引导 胶质瘤的手术切除。”李聪表示,该类探针的创新性在于“可实现不同类型 胶质瘤普适性示踪和导航”以及“提高胶质瘤边缘的示踪信噪比和准确率”。
35 ich1 2017/04/01(土) 07:50:24.43
36 名無しさん@お腹いっぱい。 2017/04/01(土) 13:12:08.71
どうせグロネタだろ
37 名無しさん@お腹いっぱい。 2017/04/01(土) 13:29:34.75
とうせアフィ貼ってるスクリプトだろ goo.glはURLの末尾に+つけるとリンク先が見れる
38 名無しさん@お腹いっぱい。 2017/04/01(土) 14:55:47.20
短縮URLは完全スルーだしNGワードにしようと思えばできるし コメントもスパム丸出しだから問題ない
39 名無しさん@お腹いっぱい。 2017/04/01(土) 22:25:57.55
シェルスクリプト用のトランスパイラとか ビルドツールってないですかね? JavaScriptの世界であるような、それらがあれば POSIX標準のままシェルスクリプトという言語仕様を 拡張できるのですが
40 名無しさん@お腹いっぱい。 2017/04/02(日) 13:32:05.83
前スレにsedで改行を扱う方法があったんでいろいろ遊んでたら、 分かったつもりでいた挙動がわからなくなってしまった おk echo -e "abc\ndef" | sed 'N;s/\ndef/def/g' echo -e "abc\ndef\nghi\njkl" | sed 'N;s/\ndef/def/g' ダメ echo -e "abc\ndef\nghi" | sed 'N;s/\ndef/def/g' echo -e "abc\ndef\nghi\njkl\nmno" | sed 'N;s/\nghi/ghi/g' なんで、下二つは最後の行が表示されないの? しかもダメの下は置換もされないのは、なぜ?
41 名無しさん@お腹いっぱい。 2017/04/02(日) 18:49:19.32
GNU sed 4.4 だとダメ2つとも最後の行が表示されるなぁ。 同じく GNU sed 4.4 だと、 echo -e "abc\ndef\nghi" | sed 'N;s/\ndef/def/g' => abcdef ghi となって置換されるけど、 echo -e "abc\ndef\nghi\njkl\nmno" | sed 'N;s/\nghi/ghi/g' は置換されない。これは ghi が3行目にあるから(偶数行目にあれば問題ない)。 まぁ、やるとしたらこんな感じになると思う(意味のない処理だけど) echo -e "abc\ndef\nghi\njkl\nmno" | sed ':a;N;$!ba;s/\nghi/ghi/'
42 名無しさん@お腹いっぱい。 2017/04/03(月) 12:09:41.36
echo -eはなんか厄介 他のディストリに持ってったら動き(表示だけど)が違った
43 名無しさん@お腹いっぱい。 2017/04/03(月) 12:50:52.83
-e が使えない場合もあるので printf で
44 名無しさん@お腹いっぱい。 2017/04/03(月) 19:25:53.89
45 名無しさん@お腹いっぱい。 2017/04/03(月) 19:26:37.45
OSによって挙動が異なるかもしれないので危険。
46 名無しさん@お腹いっぱい。 2017/04/03(月) 19:34:32.62
だから意味がないって書いたやん
47 名無しさん@お腹いっぱい。 2017/04/03(月) 23:27:26.85
unixプログラミング環境って本の問題に、 1「cat hoge.txt fuga.txt >hoge.txt」 2「cat hoge.txt >>hoge.txt」 ってやるとどうなるか考えろってのがある。 実行すると、 1「hoge.txtがfuga.txtの内容で上書きされる」 2「hoge.txtの内容が無限にコピペされる」 となったんだが、どうしてこうなるのか誰か知ってたら教えて!
48 名無しさん@お腹いっぱい。 2017/04/03(月) 23:41:45.44
ファイルですくりぷた のうごきをかんがえよう
49 名無しさん@お腹いっぱい。 2017/04/04(火) 00:57:45.30
>>47 考えたらわかったけど、知らなかったから教えない 50 名無しさん@お腹いっぱい。 2017/04/04(火) 01:03:26.09
へんくつなやつしかいねー
51 名無しさん@お腹いっぱい。 2017/04/04(火) 01:11:40.09
シェルとcatがそうなるような実装になってるんだろう わりと自然な結果だと思う
52 名無しさん@お腹いっぱい。 2017/04/04(火) 11:29:13.28
知らんけど推測で。 1-a. シェルが hoge.txt を O_WRONLY(?) | O_TRUNC とかでオープン (O_TRUNC なので 0バイトになる) 1-b. シェルが cat hoge.txt fuga.txt を exec 1-c. cat が hoge.txt をオープンするも、0バイトなので実質何もしない。 1-d. cat が fuga.txt をオープンして標準出力に出力。 2-a. シェルが hoge.txt を O_WRONLY(?) | O_APPEND でオープン。 2-b. cat が hoge.txt をオープンし、読み込んだものを標準出力に出力。 2-c. 読み込むと、直前に書いたものが読み込めてしまうので永遠に終わらない。 2の挙動は知らんかったなぁ。
53 名無しさん@お腹いっぱい。 2017/04/04(火) 12:04:17.27
2 の場合、bash, dash, ksh だと input file is output file って表示される bash では noclobber を unset にしても同じ
54 名無しさん@お腹いっぱい。 2017/04/04(火) 12:11:59.45
>>53 それはcatの引数が入力ファイルだと言う知識をshellがもってるという事だね 気持ち悪い 55 名無しさん@お腹いっぱい。 2017/04/04(火) 12:16:42.64
これは無限ループにもエラーにもならない $ cat hoge.txt | cat >> hoge.txt しかし、ファイルサイズがパイプやプロセスのバッファサイズを 超えるとどうなるか…こんな場合は moreutils の sponge コマンドかな
56 名無しさん@お腹いっぱい。 2017/04/04(火) 12:40:17.25
Cで言う未定義なみたいなもので、どういう結果になろうが客観的な意味は無い
57 名無しさん@お腹いっぱい。 2017/04/04(火) 14:59:59.10
58 名無しさん@お腹いっぱい。 2017/04/04(火) 16:51:55.21
>>57 ありがとう、GNU cat だからなのね 59 名無しさん@お腹いっぱい。 2017/04/13(木) 16:40:20.18
sqlplusでselect文を実行したときにレコードが該当しない場合の値って何が返されるの? 予想だと""なんだけど
60 名無しさん@お腹いっぱい。 2017/04/13(木) 17:33:03.18
>>59 俺は SELECT 結果の行数をカウントして判定してる。 ちなみにシェルスクリプトで sqlplus をカプセル化しようとすると、SQL 実行時のエラーチェックが地味に面倒だよね。 頑張ってね。 61 名無しさん@お腹いっぱい。 2017/04/13(木) 17:57:28.60
>>60 count(0)ですねわかります シェルスクリプトってsqlで取ってきた値がnullのときその値を変数に格納したらどうなんの? そもそもselect文で該当なしでエラーになるのかもわからん 62 名無しさん@お腹いっぱい。 2017/04/13(木) 18:02:46.69
なんでこんなこと聞くのって思うだろうけどprintfで書式指定するときにnullが変えるかもしれない変数を%08d$nで指定してるんだよね 文字列指定してけば良かったんだけど、これって修正必要かなぁ
63 名無しさん@お腹いっぱい。 2017/04/13(木) 18:51:39.93
>>61 違う違う。SPOOL で SELECT 結果をファイルに保存し、そのファイルの行数を wc -l でカウントするイメージです。 いろいろとやり方があると思うけど、私の場合は項目区切りを TAB でレコード区切りを改行にして SELECT 結果を TSV ファイル化することが多い。 んで、そのファイルをシェルで一行ずつ読み込みながら必要に応じて処理する感じ。awk で各項目の値をバラすのがラクチン。 NULL 値は、フツーに処理してれば特に意識してなくても空文字列としてシェルスクリプトの変数に入るはず。 あと SELECT COUNT(*) を実行するケースも無いではないけど、その結果が 0 でない場合はもう一度 SELECT するってこと? クエリを二度実行するコストは容認できないケースが多いと思います。 もちろん、SELECT 結果の有無のみが必要なケースなら SELECT COUNT(*) した結果が 0 かどうかで判定するのはアリです。 >>62 もうちょっと具体的に説明してもらわないと分からないけど、例えば SELECT name FROM emp WHERE id=1; の結果が NULL だと困るのなら…… 実行するクエリを SELECT NVL(name, '(NULLだよ)') FROM emp WHERE id=1; みたいに変更すればいいだけじゃね? 64 名無しさん@お腹いっぱい。 2017/04/13(木) 19:01:35.58
確かに一度ファイルに落としてからawkとかに食わせる方が何かと楽そうだな
65 名無しさん@お腹いっぱい。 2017/04/14(金) 18:54:35.33
澁谷 恭正 (46歳) 千葉県立沼南高柳高等学校卒 松戸市立六実第二小学校PTA会長 小学女子レイプ殺人で逮捕 お住まい: 千葉県松戸市六実4-8-1 Mシャトレ お子さん: ひりゅう、あやか ※父子家庭 趣味傾向: アニオタ
66 名無しさん@お腹いっぱい。 2017/04/14(金) 18:55:56.71
SQL*Plus、PL/SQLに詳しくないからそういう発想になるのはわかるが、普通にやれよ。
67 名無しさん@お腹いっぱい。 2017/04/15(土) 15:48:43.00
68 名無しさん@お腹いっぱい。 2017/04/15(土) 17:42:26.47
シェルとsqlplus触ったの1,2ヶ月だけど、半年後にはおまえ超えてるから
69 名無しさん@お腹いっぱい。 2017/04/15(土) 17:43:22.15
シェルなんてゴミ言語勉強するほどでもないけどなw
70 名無しさん@お腹いっぱい。 2017/04/15(土) 18:11:52.36
クエリを2度実行するコストよりもってあるけど、コストそんなかからないし、どっちでもよくね。 sqlじたいそんな詳しくなくてすまんな
71 名無しさん@お腹いっぱい。 2017/04/15(土) 18:15:32.21
ワンステップでどんだけコストかかる現場にいたのか
72 名無しさん@お腹いっぱい。 2017/04/15(土) 18:43:16.43
73 名無しさん@お腹いっぱい。 2017/04/15(土) 18:53:59.01
これはステップ数大きいけど、たしかおれは2ステップで書いた
74 名無しさん@お腹いっぱい。 2017/04/16(日) 03:11:26.19
>>72 なんで例外処理でやらないのか? 基本中の基本だぞ。 75 名無しさん@お腹いっぱい。 2017/04/16(日) 13:19:14.99
76 名無しさん@お腹いっぱい。 2017/04/16(日) 13:20:30.64
シェルでカプセル化とかもわけわからんし、このスレわからんわ
77 名無しさん@お腹いっぱい。 2017/04/17(月) 12:57:10.19
実行ファイルが実はシェルスクリプトだった、なんてことは/usr/binによくあること
78 名無しさん@お腹いっぱい。 2017/04/17(月) 16:49:07.58
$ for d in /bin /usr/bin /sbin /usr/sbin ; do echo -n "$d: " ; file $d/* | fgrep 'shell script' | wc -l; done /bin: 25 /usr/bin: 290 /sbin: 12 /usr/sbin: 57 意外とあるな
79 名無しさん@お腹いっぱい。 2017/04/18(火) 05:15:59.66
historyから所定のコマンドだけ削除するシェルスクリプトってあったりする?
80 名無しさん@お腹いっぱい。 2017/04/18(火) 14:18:08.94
81 名無しさん@お腹いっぱい。 2017/04/18(火) 17:45:32.71
>>80 ほほう -d オプションというものがあるのか……と思ったんだけど、これって bash のみだったりする? 手元の古い tcsh には無いみたい。それとも最近のシェルなら普通に実装されてるのかな。 82 名無しさん@お腹いっぱい。 2017/04/18(火) 18:10:08.46
bash限定
83 名無しさん@お腹いっぱい。 2017/04/19(水) 12:00:20.42
>>78 こういうのって、fgrepにIをつけたほうがいいのかな。 84 名無しさん@お腹いっぱい。 2017/04/19(水) 12:04:12.58
file コマンドの結果だから要らないんじゃない
85 名無しさん@お腹いっぱい。 2017/04/19(水) 12:41:43.72
>>84 ありがとうございます 昔、binの中等気をつけろと言われた事があったので勘違いしてました 86 名無しさん@お腹いっぱい。 2017/04/19(水) 16:28:25.43
>>75 なんでexceptionでno_data_foundを拾わないのか? カウントしてしまうのは、不慣れなひとがよくやるけど。 87 ich1 2017/04/20(木) 18:27:26.09
88 名無しさん@お腹いっぱい。 2017/04/20(木) 19:20:34.53
2chで短縮とか
89 名無しさん@お腹いっぱい。 2017/04/20(木) 19:22:58.55
それただのマルチだよ
90 名無しさん@お腹いっぱい。 2017/04/20(木) 21:07:15.56
マルチどころかスクリプトですから
91 名無しさん@お腹いっぱい。 2017/04/21(金) 17:16:08.95
92 名無しさん@お腹いっぱい。 2017/04/21(金) 18:35:17.79
この中で過去にシェルを仕事でやってたって人何人くらいいるのかな
93 名無しさん@お腹いっぱい。 2017/04/21(金) 21:31:36.96
自分はインフラ関連やってたよ 今は仕事ではコンソール触ることはなくなったけど 家で動画ダウンロード用のスクリプト組んだりしてる
94 名無しさん@お腹いっぱい。 2017/04/21(金) 21:34:59.83
ちなみに性能情報の収集や監視スクリプト、 バックアップとかの運用シェル作ってたけど 可読性も考えてオーソドックスなプログラミングのような書き方をしてたから 超何かよく分からん使い方をしてるココの人の方がシェルスクリプト知ってると思う
95 名無しさん@お腹いっぱい。 2017/04/22(土) 04:52:18.92
>>94 よくわからない書き方してるほうが上手いとも言えないでしょ 96 名無しさん@お腹いっぱい。 2017/04/22(土) 04:53:18.13
linuxってちゃんと使いこなせれば快適だよなすごいわかる
97 名無しさん@お腹いっぱい。 2017/04/22(土) 05:55:28.79
>>92 shだけの仕事は数えるほどしかないけど 他の仕事の小道具として毎回のように出てくるな javaとかwindows系の仕事だと使えなくてめんどくさい 開発ツールとしては使うけど 98 名無しさん@お腹いっぱい。 2017/04/22(土) 17:13:19.84
仕事でシェルスクリプト書くなんて めずらしくもなんともないよ
99 名無しさん@お腹いっぱい。 2017/04/22(土) 19:43:27.62
>>98 めずらしいとは思ってないけどさ、働いてないのかと思った。 何かしら経験ある人もいるのな、仕事で使ってて家でもシェルいじろうとかよく思えるな 100 名無しさん@お腹いっぱい。 2017/04/23(日) 19:09:14.57
>>99 手間とかを省くために使うからプライベートだろうと使うだろう その発想は使わされてる人のものだと思うぞ 101 名無しさん@お腹いっぱい。 2017/04/23(日) 22:45:17.52
仕事か家かどっちかでしか使っちゃダメなの? 便利なんだからいろんなとこで使ってもいいじゃん
102 名無しさん@お腹いっぱい。 2017/04/24(月) 15:09:28.61
>>99 俺は職場から2ちゃんに書き込んでるだけだよ。 103 名無しさん@お腹いっぱい。 2017/04/24(月) 16:00:30.29
学生でもなくて働いたことも無いならシェルいじろうとは思わないでしょ
104 名無しさん@お腹いっぱい。 2017/04/24(月) 16:02:53.74
他紙蟹 わかったからそんなせめんなよごめんなっっ 家でシェル使ってる人ってwindows機は別にあるの?
105 名無しさん@お腹いっぱい。 2017/04/24(月) 17:31:59.58
あるよ、自分はWindowsなんて使わないという偏屈ではないしさ Linuxの実機はラズパイだけであとは仮想環境 まあ他にも色々あるけど実際に使ってる環境ってことならね >>103 を書いたのは嫌気がさして書いたんじゃなくて 目的や知識がないとシェルなんて触る機会もないでしょって意味で書いた 106 名無しさん@お腹いっぱい。 2017/04/24(月) 17:49:44.72
ubuntu on the windowsのおまえらの率直な感想が聞きたい
107 名無しさん@お腹いっぱい。 2017/04/24(月) 19:04:22.14
108 名無しさん@お腹いっぱい。 2017/04/24(月) 20:27:56.84
>>103 便利なもんなんだから使うだろう 知ってて環境あって使いどころあれば 109 名無しさん@お腹いっぱい。 2017/04/24(月) 20:34:34.47
110 名無しさん@お腹いっぱい。 2017/04/24(月) 22:40:54.70
>>108 そんな向上心があるなら学ぶか働いてるでしょ 111 名無しさん@お腹いっぱい。 2017/04/25(火) 00:10:36.87
>>110 そういう学科の学生かそういう業務の仕事でなくても使う人は使うってことじゃないの 112 名無しさん@お腹いっぱい。 2017/04/25(火) 00:43:15.05
>>109 やるじゃんそーゆー振り切ってる感じ好きだぜ 113 名無しさん@お腹いっぱい。 2017/04/25(火) 00:49:06.70
>>111 そうは言ってなかったな、シェルなんて職場で使わなきゃやろうと思わないでしょって言ってたよ 114 名無しさん@お腹いっぱい。 2017/04/25(火) 00:51:05.94
ぶっちゃけLinuxだけだと不便やねん、だからどっちもいるねん、必須なのはWindowsやねん、結局便利だけどLinuxは無くてもいけるねん
115 名無しさん@お腹いっぱい。 2017/04/25(火) 00:57:32.66
実際Windowsないと公私共に不便だろって思う
116 名無しさん@お腹いっぱい。 2017/04/25(火) 01:15:23.26
>>113 仕事も勉強も関係なくエロ画像収集に使うだろ 初めてはSSIとかCGIだったな ISPでシェルアカウント付きのとこもあった やらされてるだけの人には価値はわからんだろうけど 117 名無しさん@お腹いっぱい。 2017/04/25(火) 01:19:30.55
Windowsなくても別に困らないなあ
118 名無しさん@お腹いっぱい。 2017/04/25(火) 05:48:06.67
>>116 VBとかで出来るからね シェルを使うにはUnix環境が必要で 知識ゼロのニートが自主的にやったってのは知らないなあ Unix界隈に居る人って性格悪いじゃん? そんな中で続くとは思えないんだけど 学生か働いてる(働いてた)時に得た知識でやるならわかるけどさ 119 名無しさん@お腹いっぱい。 2017/04/25(火) 06:14:57.29
画像収集ツールって昔からいくつかあるけど それを使わずにシェルスクリプト使った人が今何してるのか興味あるな 自分はOSもアプリも言語も道具だから何でもいいんだけど 獲得したものを特別なものと思って他人を見下すってのは余裕のない感じがするね そのあたりがLinuxが流行らなかった理由なんじゃないかと思う スマホ使ってる人なんてニコニコしながら嫌味無く教えてくれるときあるしw
120 名無しさん@お腹いっぱい。 2017/04/25(火) 06:32:05.73
やらされてるだけの人って嫌味なんだろうけど ココで答えてくれてる人はそんな人なこと忘れてるよ 失礼な奴だな
121 名無しさん@お腹いっぱい。 2017/04/25(火) 09:39:07.19
シェルスクリプトを作れない人がやっかんでるだけに見えるな 画像収集ツールみたいなことをする場合、Windowsアプリも cygwonでシェルスクリプト+コマンドのパターンも使う 一方しか出来ない人は時間を損してると思うよ
122 名無しさん@お腹いっぱい。 2017/04/25(火) 09:44:08.16
暇つぶしに聞いただけだろう 現役で職場でシェルスクリプト使う身からすると奇妙な質問には思えるが これがCOBOLとかなら話分かったけど
123 名無しさん@お腹いっぱい。 2017/04/25(火) 10:09:42.40
124 名無しさん@お腹いっぱい。 2017/04/25(火) 10:21:07.46
どこかのスレで質問してみれば分かるよ
125 名無しさん@お腹いっぱい。 2017/04/25(火) 10:29:48.93
画像収集ツールってWindowsで動く既存アプリがいくつもあるんだよ〜 自分はシェルスクリプトを否定はしていない でも学んでも働いても無かった人(要するにシェルを使ってなかった人)が 画像収集するためにいきなりシェルを使うとは思えないんだな シェルスクリプトに行き着くためには UnixなりりLinuxなりCygwin、BoW、Services for UNIXが必要になるわけであって 画像収集するのに便利って言うのは違和感がある そういう人が本当に使ってるとして今どのレベルなのかも興味があるね まだ画像収集レベルなのかな? まあ別に目的を達せられたら良いんだけどね(で振り出しに戻ると)
126 名無しさん@お腹いっぱい。 2017/04/25(火) 10:31:54.24
ちなみに自分は学んだし仕事でやってたよ だから実装は楽だしやらせたいことを自動でやらせるためにスクリプト組んでるね
127 名無しさん@お腹いっぱい。 2017/04/25(火) 10:40:20.49
すまん、結局何が言いたいのか分からん これは単にシェルスクリプト使ってるのを見下したいだけなのか?
128 名無しさん@お腹いっぱい。 2017/04/25(火) 10:46:20.83
自分が使える道具を、使うと何かの目的が達せられるところで使うだけだよ 環境、能力、目的は人によるから想像力の欠如をアピールしてもしょうがない
129 名無しさん@お腹いっぱい。 2017/04/25(火) 11:20:26.09
>>118 CGIやSSIやISPはweb関連だ wwwの世界はUnixばかりだからな で何もなかった昔のwwwではCGIの設置改造とか普通 どうやって動いてるのかとか興味を持って調べた奴も多いだろう つまり趣味で知った奴もいるってことだ 昔はWindowsでもcygwinとかでシェル使ってたけどな 今はないのかな VBのツールのメンテとかもしてたけどUnixが吐くデータの処理だったからshで置き換えて効率化したな やらされてる奴に性格悪い奴がいることはわかった 130 名無しさん@お腹いっぱい。 2017/04/25(火) 14:29:24.94
>>129 お前こそ金にならないことやらされてるじゃん 131 名無しさん@お腹いっぱい。 2017/04/25(火) 14:33:19.26
やらされてる連呼クンに触るなよ
132 名無しさん@お腹いっぱい。 2017/04/25(火) 14:38:02.51
なんつうか、こんな話題で長文して結論がそれって よほど嫌なことあって愚痴りたかったんだろうな
133 名無しさん@お腹いっぱい。 2017/04/25(火) 14:42:58.20
134 名無しさん@お腹いっぱい。 2017/04/25(火) 15:04:06.17
135 名無しさん@お腹いっぱい。 2017/04/25(火) 15:04:11.72
>>130 VBのツールの置き換えは仕事だぞ 趣味はお金払ってでもするものだけどな ただUnixワークステーションとか買えねえよ 136 名無しさん@お腹いっぱい。 2017/04/25(火) 15:05:57.55
137 名無しさん@お腹いっぱい。 2017/04/25(火) 15:32:19.24
なんだ結局仕事にしたんじゃん 素人でまだ触ってるかと思った
138 名無しさん@お腹いっぱい。 2017/04/25(火) 16:43:11.74
やらされに成り下がっててワロタ
139 名無しさん@お腹いっぱい。 2017/04/25(火) 17:46:11.39
>>137 シェルスクリプトで開発の仕事なんて滅多にないよ お前は無職? 140 名無しさん@お腹いっぱい。 2017/04/25(火) 17:53:41.95
いやなんで煽るんだよ お前何しにこのスレ来たんだよ
141 名無しさん@お腹いっぱい。 2017/04/25(火) 17:53:50.03
開発経験者が趣味でシェルスクリプト書くって普通だと思う てっきり営業とか企画とか別分野の人がシェルスクリプト書いたのかと思った
142 名無しさん@お腹いっぱい。 2017/04/25(火) 18:09:20.39
なぜ普通以外だと予想したのか
143 名無しさん@お腹いっぱい。 2017/04/25(火) 19:25:03.65
俺もまったくの異業種の奴が言ってるのかと思ったよ >>116 とか見るとね ニートがエロパワーで頑張ったのかと思ったw 144 名無しさん@お腹いっぱい。 2017/04/25(火) 19:42:41.24
アスペか
145 名無しさん@お腹いっぱい。 2017/04/25(火) 20:48:36.96
ハードウェア開発だったからまったくの独学だけどな
146 名無しさん@お腹いっぱい。 2017/04/25(火) 22:28:49.44
バージョン管理とかするだろうし環境作りでUnix使うだろ どこまで無学なんだよ
147 名無しさん@お腹いっぱい。 2017/04/26(水) 00:06:14.19
ワークステーションとか商用Unix知らないのか無学だな
148 名無しさん@お腹いっぱい。 2017/04/26(水) 01:01:14.37
くだらない話題で申し訳ないんすけど シェルスクリプトで使う変数の規則とかってどう決めてます? 自分は_HOGEがいいかなって思ってるんですけど、マジョリティはどうかなと(ここがマジョリティかどうかは別だけど)
149 名無しさん@お腹いっぱい。 2017/04/26(水) 01:38:09.14
150 名無しさん@お腹いっぱい。 2017/04/26(水) 08:25:15.17
>>148 とくに名前に規則は設けず、関数内で local 宣言でできるだけ隔離。 気にはなるけど、個人的には実際に問題になったことが無いし、export しなければ大丈夫じゃないか? 151 名無しさん@お腹いっぱい。 2017/04/26(水) 08:45:28.91
>>150 シェル内に影響するよ スクリプトならシェルスクリプト内までその変数が生きる 152 名無しさん@お腹いっぱい。 2017/04/26(水) 08:52:37.57
localって業務用なら使うべきなんだろうがいまいち慣れないんだよなぁ スコープ分けは基本ってのは分かっちゃいるんだがシェルスクリプトはどうもlocal使ったら負けな気がする すげぇどうでもいいんだけどな
153 名無しさん@お腹いっぱい。 2017/04/27(木) 01:52:59.43
154 名無しさん@お腹いっぱい。 2017/04/27(木) 08:52:30.15
おまえらただのニートじゃなさそうだな
155 名無しさん@お腹いっぱい。 2017/04/27(木) 08:55:21.07
お前は何を言ってるんだ
156 名無しさん@お腹いっぱい。 2017/04/27(木) 08:59:38.21
157 名無しさん@お腹いっぱい。 2017/04/27(木) 09:01:08.43
>>156 俺にしたって某画像のネタをそのまま貼っつけただけで別に怒っちゃいないぞ 158 名無しさん@お腹いっぱい。 2017/04/27(木) 09:25:43.77
159 名無しさん@お腹いっぱい。 2017/05/06(土) 16:52:42.42
echo "${hoge[@]}" | xargs -P 10 -n 1 -J{} echo {} >> test.txt てやると、期待するファイル内容は aaa bbb ccc ... なのに aaa bbccc ... となってしまいます。 これを回避するいい方法ないですか?
160 名無しさん@お腹いっぱい。 2017/05/06(土) 18:13:00.72
hogeの中身はどうなってんの?
161 名無しさん@お腹いっぱい。 2017/05/06(土) 19:56:59.36
162 名無しさん@お腹いっぱい。 2017/05/06(土) 21:11:07.00
cronでやってそうだけど ログインしてたらループ抜けないようになってるから 1日経つと重複起動すると思う あと指定時刻なのか一定時間なのかはっきりした方がいい 動いてると思ってるならいいんでないの
163 名無しさん@お腹いっぱい。 2017/05/06(土) 21:31:34.54
>>162 一定時間です。 /etc/rc.localってcronで1日ごとに起動されるのでしょうか。 PC電源投入後Linux起動時にただ一度だけ実行されると思っているのですが 164 名無しさん@お腹いっぱい。 2017/05/06(土) 22:28:29.89
シェルの前に日本語を学んだ方がいい
165 名無しさん@お腹いっぱい。 2017/05/06(土) 23:44:25.36
>>161 常駐しないでlastとかでログインしなくなってから何分経ったか毎回計算した方がシンプルじゃない なんだっけvarの下になんかあったよね 166 名無しさん@お腹いっぱい。 2017/05/06(土) 23:53:03.17
>>165 それだと、PC起動直後(lastとかで経過時間計算直後)にシャットダウンが走る可能性があるような 167 名無しさん@お腹いっぱい。 2017/05/07(日) 01:18:18.46
168 名無しさん@お腹いっぱい。 2017/05/07(日) 03:40:10.15
>>161 ダメってわけじゃないけど、"$1"と比較するなら grep は要らないはず(12行目) >>163 一度だけ起動であってる 重複起動とか言ってる人は無知か勘違いなので無視していい >>165 varの下のなんかってwtmpのこと? wtmpは確実に更新されるわけじゃないし時間の計算も面倒になるので >>161 の方がシンプルだろうね 169 名無しさん@お腹いっぱい。 2017/05/07(日) 04:01:11.02
>>167 確かに仕様通りだね PC起動してlogin受け付ける前にpoweroffしてしまうようになるだろうけど 170 名無しさん@お腹いっぱい。 2017/05/07(日) 08:46:28.77
一定時刻ログインしてないんだから当たり前
171 名無しさん@お腹いっぱい。 2017/05/07(日) 10:22:50.37
15分でシャットダウンって考えられない まあ習作だからいいんだろうが
172 名無しさん@お腹いっぱい。 2017/05/07(日) 16:02:10.86
>>171 チャージマン研!第23話「恐怖!精神病院」 VIDEO 173 名無しさん@お腹いっぱい。 2017/05/07(日) 21:37:10.56
174 161 2017/05/07(日) 22:15:23.57
みなさんありがとう。 >>168 > "$1"と比較するなら grep は要らないはず(12行目) 他ユーザがログインしていても無視してシャットダウンする仕様にしたいのです。 > 一度だけ起動であってる 了解 >>171 > 15分でシャットダウンって考えられない トイレとかの時、5分ほどかかる自分環境自動バックアップの処理を走らせ 画面ロックして席を立ちます。 席に戻ったらまた作業に戻るのですが、とっさの用事で席に戻れない時は 電源が切れていて欲しいのです。 10分だと下痢の時短いかも。20分もいらない。だから15分。 画面ロック(ログイン状態)の時に電源切断するのは気持ち悪いので ログオフ状態の時に切れるようにしたいのです。 (そのため、バックアップ処理完了後は自動でログオフされるようにしています) ちなみにWindowsではそういう自作ServiceをCで書いて走らせています。 Linuxは簡単ですね。 175 名無しさん@お腹いっぱい。 2017/05/08(月) 01:49:41.10
タイムカードの無い現場で ふらっと早退してやろうって感じなのかね
176 名無しさん@お腹いっぱい。 2017/05/08(月) 05:13:08.30
そんなんならサスペンドでいいじゃん 久しくシャットダウンしてないや
177 名無しさん@お腹いっぱい。 2017/05/08(月) 07:30:05.34
Windows簡単だと思うけどな Cならコンパイルとかの環境が必要だけど所詮慣れだし Cなんか使わずにVBScript使えばいいんじゃないの
178 名無しさん@お腹いっぱい。 2017/05/08(月) 09:48:57.03
Windowsは簡単だな諦めるしかすることないから
179 名無しさん@お腹いっぱい。 2017/05/08(月) 19:53:34.22
180 名無しさん@お腹いっぱい。 2017/05/08(月) 21:53:34.64
Windowsできるアピールはいらん ほかでやれ
181 名無しさん@お腹いっぱい。 2017/05/09(火) 20:02:44.75
そう、マッキントッシュならね
182 名無しさん@お腹いっぱい。 2017/05/15(月) 06:37:29.43
時間のかかるパイプライン処理中に現在の中間処理内容を メッセージ表示させることはできませんか? echo で標準出力に表示させようとしてもそれは次のパイプラインに渡って画面に表示されませんよね? 標準エラー出力で表示させるしかないでしょうか?
183 名無しさん@お腹いっぱい。 2017/05/15(月) 07:04:43.49
tee
184 名無しさん@お腹いっぱい。 2017/05/15(月) 11:20:57.06
このスレの無駄のなさすぎる回答好き
185 名無しさん@お腹いっぱい。 2017/05/15(月) 21:05:16.62
そう、マッキントッシュならね
186 名無しさん@お腹いっぱい。 2017/05/15(月) 23:50:07.04
でもteeの仕様って、一方をファイルじゃなく、stderrあたりに しておいてくれれば、もっと汎用性上がったのにね
187 名無しさん@お腹いっぱい。 2017/05/16(火) 00:37:43.04
UNIXでは標準エラーもファイルだから問題ない
188 名無しさん@お腹いっぱい。 2017/05/16(火) 06:24:05.92
teeの出力先をstderrにすると、中間処理をモニタすることしかできなくなるのでは? ファイルに書けばモニタも出来るし汎用的
189 名無しさん@お腹いっぱい。 2017/05/16(火) 07:42:47.01
>186 デフォルトでstderrに吐くと、teeのエラーを吐く場所がなくなるからでは? (例えば ls | tee --wrongoption とかの場合) モニタしたければ tee /dev/stderr でよい。
190 名無しさん@お腹いっぱい。 2017/05/16(火) 08:32:03.95
191 名無しさん@お腹いっぱい。 2017/05/16(火) 10:02:35.57
192 名無しさん@お腹いっぱい。 2017/05/19(金) 20:34:10.11
シェルってオブジェクト指向で書けないの? 暗黙的ルール多すぎだろ
193 名無しさん@お腹いっぱい。 2017/05/19(金) 22:16:49.58
>>192 >> 暗黙的ルール多すぎだろ 例えば? 194 名無しさん@お腹いっぱい。 2017/05/19(金) 23:31:44.94
>>192 OOPの本質を理解してれば出来る もし出来ないなら個人の能力に問題がある 195 名無しさん@お腹いっぱい。 2017/05/20(土) 03:14:17.14
シェルはパイプで渡していくと 関数型っぽいけど
196 名無しさん@お腹いっぱい。 2017/05/20(土) 09:42:17.19
関数型と見るかメソッドチェーンと見るかの違いだな。
197 名無しさん@お腹いっぱい。 2017/05/20(土) 21:59:01.54
198 名無しさん@お腹いっぱい。 2017/05/20(土) 22:19:56.29
>>192 オブジェクト指向で書くと暗黙のルールがなくなるの? 199 名無しさん@お腹いっぱい。 2017/05/21(日) 05:34:32.67
>>192 別にシェルが嫌なら同じ処理をプログラミング言語で作れば良いじゃ無い。 LLならそんな手間じゃ無いし。 200 名無しさん@お腹いっぱい。 2017/05/21(日) 18:05:12.85
>>192 はシェルの開発言語のことを聞いてるんだよね? 確かに、たいていのシェルはCで書かれてるし 201 名無しさん@お腹いっぱい。 2017/05/21(日) 19:34:04.56
だんだん分けわからなくなってきたわ
202 名無しさん@お腹いっぱい。 2017/05/23(火) 14:55:53.34
$ls>hoge.txt だとカレントディレクトリのリストができますけど、 さらに深堀りして、そこにあるフォルダ(ディレクトリの中身)も表示させるには どうすればいいのでしょうか? それから、 フォルダかファイルの名前 ディレクトリ名(/Users/namae/nanntyaca/hogehoge.txt) のようなふうに二つを並べて吐き出させたいのですがどうすればいいでしょうか?
203 名無しさん@お腹いっぱい。 2017/05/23(火) 15:04:02.31
>>202 find . -type f > hoge.txt 204 名無しさん@お腹いっぱい。 2017/05/23(火) 15:30:08.76
>>203 ありがとうディレクトリのリストができました。 ディレクトリのリストから、htmlのリストを作ろうとすると、どうするのが いいのでしょうか?クリックすると当該ディレクトリに飛ぶようにしたい だけなのです。考えていたのはtexのファイルにするということなのですが。 205 名無しさん@お腹いっぱい。 2017/05/23(火) 15:38:50.01
ハイパーリンク作るまでやるならshの範疇じゃない気がするが なんでも聞かずに少しはぐぐったらどうよ
206 名無しさん@お腹いっぱい。 2017/05/23(火) 16:05:32.00
ありがとうございます ぐぐります
207 名無しさん@お腹いっぱい。 2017/05/25(木) 08:52:58.76
w3m . -dump_source >dir.html
208 名無しさん@お腹いっぱい。 2017/05/26(金) 02:49:12.98
>>207 テキストファイルをhtmlにするには拡張子を変えただけでいいらしいです。 >>207 さんが教えてくれてのはhtmlをtxtファイルにするための ものだと思います。markdownでリストを作ろうと思います ありがとうございました 209 名無しさん@お腹いっぱい。 2017/05/26(金) 03:27:01.73
横から Content-type: text/html htmlはtextの中でどう書くかというルールに過ぎない 拡張子なんてのはexplorer.exeとかのソフトがどのアプリケーションソフトを起動するかのヒント程度 名前などどうでもいい w3m . -dump_sourceは、.(このディレクトリ)をhtmlで書き出せ、と命令してる
210 名無しさん@お腹いっぱい。 2017/05/26(金) 07:39:50.94
>>207 さん やりたかったことがそのままできるコードを教えてくれてありがとうございます。 それなのに申し訳ありません。>>209 さんが教えてくれるまでその意義をわからず、 失礼なことを書きました。 >>209 さん 本当にありがとうございます。 211 名無しさん@お腹いっぱい。 2017/06/02(金) 10:47:53.61
シェルスクリプトの本で、こんな便利なことができるという感じの スクリプトを紹介するような感じでできてる本というのでお薦めの本は あるでしょうか?
212 名無しさん@お腹いっぱい。 2017/06/02(金) 11:25:57.91
>>211 クックブック ……ああでもあれはbashだったか 213 sage 2017/06/02(金) 20:17:29.65
(head ; tail ) < file で、先頭10行・末尾10行が出るのはどういう仕組み? FreeBSD+ash、bash で確認。 man にはそれらしい記述がないように見える。
214 名無しさん@お腹いっぱい。 2017/06/02(金) 21:17:20.29
ちなみに GNU coreutils の head, tail だと seq 10 | { head -1; tail -1; } 1 となる。以下の場合は seq 10240 | { head -1; tail -1; } 1 10240 となる。これは head コマンドが一定量のデータをバッファリングした まま処理を終了してまうから。BSD系のコマンドでは未使用なデータは パイプバッファに戻してくれるので tail コマンドで読み出すことができる。
215 名無しさん@お腹いっぱい。 2017/06/03(土) 15:49:14.51
ともにデフォルトが10行だからじゃないの?
216 名無しさん@お腹いっぱい。 2017/06/04(日) 01:26:27.62
217 名無しさん@お腹いっぱい。 2017/06/05(月) 08:12:28.10
どうやって実現してるの?パイプではseekできないと ずっと思ってた
218 名無しさん@お腹いっぱい。 2017/06/05(月) 10:37:40.02
tailのソース読んでみたら?
219 名無しさん@お腹いっぱい。 2017/06/06(火) 12:55:43.92
>>214 BSDは知らないけど、普通stdioで読む単位は4096byteとかだから headがそれを読んでexitした場合残りをtailが読むことになる 入力データが4096byte以下ならheadしか受け取れないが、大きければ headとtailがそれぞれ入力を受け取れる パイプに戻すとかいうインタフェースはunixにはない 220 213 2017/06/13(火) 13:42:47.20
どうもです。 要は 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
221 213 2017/06/13(火) 13:51:01.95
>>214 > ちなみに 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 がそれを読めるわけでは ないと思っています。 222 名無しさん@お腹いっぱい。 2017/06/13(火) 15:00:33.86
>>220 seq 100は4096バイト以下だから。 seq 1042でtail -2 したら切れ目がわかるかと。 223 213 2017/06/13(火) 15:13:53.06
★1も★2 も seq 100 なのに、なぜ結果が違うのか、というのが疑問なのであります。
224 名無しさん@お腹いっぱい。 2017/06/13(火) 15:15:44.72
ファイルディスクリプタがプレーンファイルならlseekするから
225 名無しさん@お腹いっぱい。 2017/06/13(火) 15:19:58.75
ごめん、mmapだった
226 名無しさん@お腹いっぱい。 2017/06/14(水) 09:15:41.39
>>223 要するに>>224 の通りなんだけど ⭐1の書き方の場合、標準入力がパイプになるので(lseekできないので)tailには何も渡らない ⭐2の場合標準入力は通常ファイルseq100.txtなのでtailはlseekして読み直すから読める 227 213 2017/06/14(水) 10:53:46.67
228 名無しさん@お腹いっぱい。 2017/06/14(水) 11:09:43.34
head -1 じゃなくて read を使ってこんな事をしてたり df -h | { read h; echo "$h"; sort -k5,5gr; }
229 名無しさん@お腹いっぱい。 2017/07/01(土) 20:45:46.61
流石に上手いわ
230 名無しさん@お腹いっぱい。 2017/07/01(土) 23:39:20.14
>>228 惚れる。UNIX の基本コマンドだけじゃん 231 名無しさん@お腹いっぱい。 2017/07/05(水) 17:14:04.26
232 名無しさん@お腹いっぱい。 2017/07/08(土) 09:49:05.30
>>220 子同士だから親から引き継いだ同じものを共有してる 233 名無しさん@お腹いっぱい。 2017/07/15(土) 18:10:48.03
Eclipse上でシェルスクリプトを動かしたいんだけど、どのサイトを参考にすればいいですか?
234 名無しさん@お腹いっぱい。 2017/07/15(土) 18:28:08.93
site:2ch.net 付けてググれ
235 名無しさん@お腹いっぱい。 2017/07/31(月) 07:52:04.50
# 使用しているのは 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 独自の機能を要する文法があると思われます。 そこで質問なのですが,実際にログインプロセスを踏まずにそれを再現できるシェルスクリプトの作り方を教えてください。 長くて申し訳ないです。よろしくおねがいします。
236 名無しさん@お腹いっぱい。 2017/07/31(月) 07:59:41.19
内緒で妻のパソコンでインターネットして ヌードとかHな写真を見まくっていたのですが、なんと bネにかの表紙に血ゥていたエロ画荘怩ェパソコンの血繧に 表示されたままになって元に戻せません! 前はプーさんの画像だったのに、今はアソコにバイブを挿した豊丸の画像です・・・。。 再起動しても表示されたままなんです。 早く直さないと妻が夜勤から帰ってきてしまします!(看護婦なので・・・・) 至急助けてください!!! OSはウィンドウズXPです。 よろしくお願いします。
237 名無しさん@お腹いっぱい。 2017/07/31(月) 08:49:19.54
238 名無しさん@お腹いっぱい。 2017/07/31(月) 08:51:37.14
ここに到達する知識があるならgoogleで検索すれば見つかるだろうに
239 名無しさん@お腹いっぱい。 2017/07/31(月) 08:57:00.00
>>235 再現する方法を模索するのではなく、再起動せずに切り分けすればいいだけでは? tty でログインできなかったって点からすると、/usr/bin/sh を差し替えた後に再起動せずに su - 一般ユーザ名 でテストするのが一番手っ取り早そう。 display-manager(gdmや同等のソフト) を停止した状態で tty でログイン(安全をみて tty1 と tty2 など複数個所でログイン済にしておく)、 /usr/bin/sh を差し替えて再起動せずに display-manager を起動してログインテストすればいいんじゃないでしょうか。 240 名無しさん@お腹いっぱい。 2017/07/31(月) 09:07:15.67
>>236 これは履歴とかキャッシュ消せないだろうからどうせバレる 241 名無しさん@お腹いっぱい。 2017/07/31(月) 09:10:25.45
242 名無しさん@お腹いっぱい。 2017/07/31(月) 09:10:52.08
243 名無しさん@お腹いっぱい。 2017/07/31(月) 11:49:07.69
>>239 ありがとうございます。やってみます。 ご迷惑かもしれませんが,解決を見たら報告します。 244 名無しさん@お腹いっぱい。 2017/07/31(月) 11:54:40.49
>>237 ありがとうございます。やってみます。 ご迷惑かもしれませんが,解決を見たら報告します。 245 名無しさん@お腹いっぱい。 2017/07/31(月) 15:19:17.23
246 名無しさん@お腹いっぱい。 2017/07/31(月) 16:15:55.29
/bin/shを差し替えるなんてFedora側で想定した使い方じゃないんだから そもそもそんなことやっちゃいけない
247 名無しさん@お腹いっぱい。 2017/08/01(火) 02:25:49.77
>>245 ありがとうございます。 5000 箇所くらい不適合が見つかりました。 パッケージ管理されているシェルスクリプトも多くあり, 全部直すとシステムの破壊も(今更かもしれないですが)心配なのでやはり bash のままにしようかなとも考えています。 >>246 その通りなんですが dash は bash の4倍早いと聞いたのでつい……。 248 名無しさん@お腹いっぱい。 2017/08/01(火) 02:59:57.01
249 名無しさん@お腹いっぱい。 2017/08/01(火) 03:05:36.12
250 名無しさん@お腹いっぱい。 2017/08/01(火) 08:24:31.41
251 名無しさん@お腹いっぱい。 2017/08/01(火) 09:51:33.66
/bin/sh置き換えるとか奇形児かよ
252 名無しさん@お腹いっぱい。 2017/08/01(火) 10:19:55.09
configureで5-10%速いなら4倍どころじゃないだろうな
253 名無しさん@お腹いっぱい。 2017/08/02(水) 20:07:41.14
254 名無しさん@お腹いっぱい。 2017/08/03(木) 07:34:52.42
あれは必死に直した結果達成したもので、同じような努力をそのdistroで やらないとできない そういやFreeBSDも昔base systemからperl排除するという大きな仕事を やってたなあ
255 名無しさん@お腹いっぱい。 2017/08/03(木) 09:32:35.46
で、「4倍速い」のソースどこよ
256 名無しさん@お腹いっぱい。 2017/08/03(木) 09:35:10.81
俺
257 名無しさん@お腹いっぱい。 2017/08/03(木) 21:23:18.47
シャア専用シェル
258 名無しさん@お腹いっぱい。 2017/08/04(金) 03:14:55.27
シェルから特定のプログラムの標準入力にデータを流すにはどうしたらいいでしょうか。 何がしたいかというと、 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はわかるので、そこに対してデータを送る方法があれば教えてください。
259 名無しさん@お腹いっぱい。 2017/08/04(金) 04:14:32.69
移植性がよくわからないけど cat hoge > /proc/<pid of server>/fd/1
260 名無しさん@お腹いっぱい。 2017/08/04(金) 08:14:54.70
EOFってクリアできるものなの? よくわからんが $ mkfifo /tmp/foo $ exec < /tmp/foo $ exec ./my-server.elf で cat hoge > /tmp/foo とかどうよ
261 名無しさん@お腹いっぱい。 2017/08/04(金) 13:23:10.99
>>258 EOFってstdinの送信側がcloseしたときに送られるんじゃないの? それ実は再コネクトしてたりしない? 262 名無しさん@お腹いっぱい。 2017/08/06(日) 01:34:21.08
263 名無しさん@お腹いっぱい。 2017/08/09(水) 11:18:15.17
1<br>2<br>3<br>4<br> を 1 2 3 4 にシェルで置き換えるコマンド教えれ 今viで開いて置き換えてます・・・
264 名無しさん@お腹いっぱい。 2017/08/09(水) 11:21:03.77
265 名無しさん@お腹いっぱい。 2017/08/09(水) 11:22:28.73
sed でもなんでもいいじゃん
266 名無しさん@お腹いっぱい。 2017/08/09(水) 13:07:15.54
あえてヘッドレスブラウザを使ってみよう
267 名無しさん@お腹いっぱい。 2017/08/09(水) 13:07:21.78
echo '1<br>2<br>3<br>4<br>' | tr '<>' '\n\n' | fgrep -v br
268 名無しさん@お腹いっぱい。 2017/08/09(水) 14:41:10.39
ありがとうございます sedで出来ました というか所定の文字列(今回は<br>)を改行に置き換えることと 改行を所定の文字列に置き換えることを混同していました たしか後者はsedなどでできずperlとかでやった覚えがあります まったくもって私の勘違いでした・・・
269 名無しさん@お腹いっぱい。 2017/08/09(水) 14:49:33.52
unhtmlだと改行入らないっけ |w3m -dump
270 名無しさん@お腹いっぱい。 2017/08/13(日) 15:47:35.48
271 名無しさん@お腹いっぱい。 2017/08/13(日) 15:56:24.85
内部表現はutf-16 ターミナルで扱うときはutf-8
272 名無しさん@お腹いっぱい。 2017/08/13(日) 18:10:53.30
知らなかった ありがとう
273 名無しさん@お腹いっぱい。 2017/08/20(日) 22:32:53.01
シェルスクリプト とはほとんど関係ないんだけど,X 使ってる時,ターミナルエミュレータに ファイルマネージャの「ファイル」や「フォルダ」を D&D したらその絶対パスが入力されるんだな。 これ今迄知らずに手入力してた。
274 名無しさん@お腹いっぱい。 2017/08/20(日) 22:38:57.86
なんかしらんけど、本当だ(´・ω・`)
275 名無しさん@お腹いっぱい。 2017/08/20(日) 22:39:12.28
これどういう原理なんだろ
276 名無しさん@お腹いっぱい。 2017/08/20(日) 23:03:34.71
X 使ってないから分からんが、Windows でエクスプローラからコマンドプロンプトにドラッグ&ドロップするとファイルパスが入力されるのと同じ機能かな。 意外と知らない人もいるみたいだけど、便利だよね。
277 名無しさん@お腹いっぱい。 2017/08/21(月) 01:53:29.93
でもXってマウスすべるよな