1 名前:名無しさん@お腹いっぱい。 mailto:sageteoff [2015/08/14(金) 23:42:01.51 .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に逃げずにシェルスクリプトで処理するのが頭のいいやり方。 前スレ シェルスクリプト総合 その24 peace.2ch.net/test/read.cgi/unix/1415634843/
37 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/25(火) 13:30:12.68 .net] >>26 それは改行コード入りファイル名があるからNG
38 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/25(火) 13:58:06.49 .net] このスレの住人にとっては当たり前過ぎる基本的初歩的なことをわざわざ多くの行数使って書き込まれてもなぁ
39 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/30(日) 12:52:52.88 .net] >>13 最近cygwin使ってないんで試してないけど 神が現れてsudo実装してping打てるようになった模様 詳細はcygwinスレ参照 そうそうcygwinのpingって何か違ったんだっけ?
40 名前:名無しさん@お腹いっぱい。 [2015/09/06(日) 16:40:59.13 .net] 引数 $1 が function の中から参照できない 標準では全部グローバルのスコープじゃなかったのか? グローバル変数に引数をコピーするとグローバル変数は参照できるけど 引数はそういうものなのか? ~/ cat bug.sh function bug_version { echo "argument $1 can't handle in function" } bug_version echo "argument $1 can handle out of function" ~/ sh bug.sh arg argument can't handle in function argument arg can handle out of function
41 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/06(日) 17:58:01.08 .net] >>38 > 引数 $1 が function の中から参照できない > 標準では全部グローバルのスコープじゃなかったのか? 【ポイント】 シェル関数内の位置パラメータと特殊パラメータ「$#」はシェル関数内のみで有効 【説明】 シェル関数の実行には『引数』を付けることができ、シェル関数内の位置パラメ ータと特殊パラペータ「$#」は、一時的にシェル関数の『引数』とその個数で置 き換えられる。このため、位置パラメーターと特殊パラペータ$#はシェル関数内 のみで有効。 あと、shの場合「function」は使えない、またシェル関数名の後ろに「()」がないと syntax error $ cat bug.sh【修正版】 bug_version() { ← shの場合「function」は使えない、シェル関数名の後ろに「()」がないとダメ echo "argument $1 can't handle in function" } bug_version $1 ← シェル関数に引数として渡した例 echo "argument $1 can handle out of function" $ sh bug.sh argument arg can't handle in function argument arg can handle out of function
42 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/06(日) 17:59:13.35 .net] 引数はそういうものです bug_versionを引数無しで呼び出してるので$1には何も設定されません
43 名前:39 mailto:sage [2015/09/06(日) 18:00:18.46 .net] 【訂正】 $ sh bug.sh arg argument arg can't handle in function argument arg can handle out of function
44 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/06(日) 19:34:01.02 .net] >>38 まぁ Linux 限定だけど、 function bug_version { echo "argument $(cat /proc/$$/cmdline | xargs -n1 -0 | sed -n 3p) can handle in function" } なんてするといいかも
45 名前:名無しさん@お腹いっぱい。 [2015/09/06(日) 19:39:35.79 .net] 愚かにも引数忘れてた みんなありがとう コードが綺麗になった
46 名前:名無しさん@お腹いっぱい。 [2015/09/09(水) 19:11:24.39 .net] 質問です。 grep "aaa\|bbb" はokなのに、grep "aaa\&bbb" はなぜ だめなんでしょう?
47 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/09(水) 20:10:57.27 .net] >>44 どちらも仕様どおりに正しく動く 何をもってダメという?
48 名前:名無しさん@お腹いっぱい。 [2015/09/09(水) 20:21:28.99 .net] >>45 私の環境ではこうなります。 $ echo "aaa bbb" | grep "aaa\|bbb"; echo $? aaa bbb ccc 0 $ echo "aaa bbb" | grep "aaa\&bbb"; echo $? 1
49 名前:名無しさん@お腹いっぱい。 [2015/09/09(水) 20:25:36.29 .net] >>45 あれれ、「 ccc」入っちゃった。無視してくださいw
50 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/09(水) 20:50:24.67 .net] >>46 だからそれは仕様どおり
51 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/09(水) 20:54:06.69 .net] \|には特別な意味があるけど\&にはないんだよ 単に&と書いたのと同じ
52 名前:39、41 mailto:sage [2015/09/10(木) 02:49:03.69 .net] >>44 、>>46 ひょっとすると[grep]コマンドによる『AND検索』の方法(記述)を 『grep "aaa\&bbb"』だと勘違いしていない? [grep]コマンドによる『AND検索』には『OR検索』のような正規表現による 記述方法『grep "aaa\|bbb"』は存在しないので、つぎの例のように地道 にパイプで繋ぐしかないけど [grep]コマンドによる『AND検索』の方法 $ echo "aaa bbb" | grep "aaa" | grep "bbb" ; echo $? aaa bbb 0 $ echo "aaa ccc" | grep "aaa" | grep "bbb" ; echo $? # マッチしないデータ「aaa ccc」の例 1 $ あと、>>44 、>>46 って >>38 と同じ人?
53 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/10(木) 07:50:58.43 .net] $ grep -E 'aaa.*bbb|bbb.*aaa' か、GNU grep なら $ grep -P '(?=.*aaa)(?=.*bbb)' でもOK。
54 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/10(木) 07:56:54.38 .net] awk 使え awk '/aaa/&&/bbb/'
55 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/10(木) 17:51:40.81 .net] \& なんてどこに書いてあったの
56 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/24(木) 23:16:07.36 .net] 宣伝 【POSIX】UNIXプログラミング【BSD】 [転載禁止]©2ch.net peace.2ch.net/test/read.cgi/unix/1443103705/
57 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/27(日) 16:29:45.68 .net] こんな風なテキストファイルlog.txtがあります %PART_A% a11 a12 13 a21 a21 a23 a31 a32 a33 %PART_B% b11 b12 b13 b14 b21 b22 b23 b24 b31 b32 b33 b24 このように%PART_x%(実はxはAとBがランダムに登場)で区切られながら 数行ずつ出力されているテキストを、値だけ(a11〜b24まで)、5列で左詰めの CSV形式に整形するために、こんなスクリプトを作りました(ほとんどawkですが・・・) #!/bin/sh cat log.txt | awk 'BEGIN{FLG=0} /%PART_A%/{FLG=1; getline} /%PART_B%/{FLG=2; getline} {if (FLG==1) {print $1","$2","$3",0,0"} else if (FLG==2) {print $1","$2","$3","$4",0"} }' 期待通り動いてはいるのですが、フラグやgetline周りが、なんか力技?っぽくて 改善の余地があるように思ってます このような処理をawkで書くときって、どのように書くとよいのでしょう
58 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/27(日) 16:38:38.08 .net] 力技でも動いているならそれでいいんじゃない? この間、似たような事を業務でやったけど考えるの面倒だったから pasteコマンドでひとつのファイルにして、特定フィールドを読み込む方法にした。 なにぶん、思想が古い年代なもんで複数ファイルを 同時に読み込んであーだこーだするのはCで書きたくなる。
59 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/27(日) 17:34:07.98 .net] きれいでも動かないコードより きたなくてもちゃんと動作するコードの方がよい そんな格言なかったっけ?
60 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/27(日) 19:24:41.10 .net] 要求仕様通りに動くことが大前提ですな。 コードの可読性を語るとキリが無い。 シェルスクリプトで訳が判らなくなる書き方する人いるけど、ある意味才能としか思えない。
61 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/28(月) 01:10:28.27 .net] 過疎ってるけど awkについて語るスレ $2 peace.2ch.net/test/read.cgi/tech/1172242542/ もありますよ。a11からb24が全部数値で3つまでは確実に値が入ってるなら awk 'BEGIN{OFS=","};!~/%/{print $1,$2,$3,$4+0,0}' で済む気がするけど。
62 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/04(日) 19:58:15.31 .net] >>57 きれいでも動かないコードより きたなくてもちゃんと動作するコードの方がよい そして、きれいでちゃんと動作するコードが 一番いいのは言うまでもない。
63 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/04(日) 22:53:55.31 .net] 正規表現で書くとどうなるんだ?
64 名前:名無しさん@お腹いっぱい。 [2015/10/06(火) 13:14:00.89 .net] getline回りはsplitで"^(?=\%PART_)"で区切れると楽 下のコードは "^(?=\d)"にするとレス番号だけが行頭で表示され 本文はインデントされる2chですら処理できる #!/usr/bin/env perl use strict; use warnings; use utf8; my $enc = 'UTF-8'; my ($delimiter, $search); $delimiter = "^(?=\%PART_)" GetOp
65 名前:tions ('delimiter|d=s' => \$delimiter, 'search|s=s'=> \$search); my $line = join('', <>); my @lines = split /$delimiter/m, $line; for (@lines) {print if /$search/;} [] [ここ壊れてます]
66 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/13(火) 12:01:58.60 .net] ワイルドカードて全角も扱えるんだね 勝手に半角のみと思い込んでた 自分用メモ ひらがな: [ぁ-ん] 全角カタカナ: [ァ-ヾ] 半角カタカナ: [ヲ-゚] 全てのカタカナ: [ァ-ヾヲ-゚] 全角数字: [0-9] 全角英字: [a-zA-Z] 全角英数字: [0-z] 全角文字(英数字以外, ひらがな, カタカナ, 漢字, 記号): [、-鶴] 全角文字(英数字, ひらがな, カタカナ, 漢字, 記号): [、-鶴0-9a-zA-Z] 漢字: [一-鶴]
67 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/13(火) 23:33:25.92 .net] [ぁ-ん]と[ん-ぁ]で ・同じ結果→POSIX準拠 ・結果が異なる→準拠してない というのも豆
68 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/15(木) 01:00:25.45 .net] \p{Hiragana}
69 名前:名無しさん@お腹いっぱい。 [2015/10/16(金) 00:12:27.12 .net] 第一感その手のものを使って保守性ケアするよな
70 名前:名無しさん@お腹いっぱい。 [2015/10/16(金) 13:16:19.20 .net] 任意のキーボード・ショートカットを突然入力すると、任意のスクリプトを実行するような技はありますか。 例えば、特定のアプリケーションをアクティブにするスクリプトを書いたとして、それを Ctrl+Alt+Gで実行してGoogleChromeをアクティブにするとか、そういう事です。 Alt+Tabで一つ一つ切り替えるのはうんざりなんですよね。 スクリプト自体はできてるんですが、それをショートカットと結びつける技が分かりません。
71 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/16(金) 13:35:52.55 .net] WMとかDEの機能使った方がいいんじゃね シェルスクリプトの話ではない
72 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/16(金) 13:41:08.99 .net] 「linux キーボードショートカット カスタマイズ」でぐぐれ /apps/metacity/global_keybindings/panel_run_dialogとかって情報はすぐ出てくる
73 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/16(金) 16:30:40.14 .net] キーバインド割り当てかaliasを作るかじゃない?
74 名前:名無しさん@お腹いっぱい。 [2015/10/18(日) 03:08:01.82 .net] だな w3mなら .w3m/keymap xmonadなら .xmonad/xmonad.hs に書くような内容
75 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/18(日) 03:29:42.19 .net] busyboxでunicode変換ってどうする?
76 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/19(月) 12:52:16.45 .net] busybox sh に限らず、iconv とかuconvとか入れて使うんじゃない?
77 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/19(月) 14:00:50.57 .net] すみませんが詳しい方のみ回答をお願いします
78 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/19(月) 14:28:46.62 .net] unicodeの何を?何へ?何から?変換するのかもうちょっと具体的に書かないと応える気にならない
79 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/19(月) 15:27:19.76 .net] 詳しくないのはどっちだよ そんなんだから周囲に教えてくれる人が居なくて 2chで質問するハメになるんだよ
80 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/20(火) 00:06:45.98 .net] 只のコピペの別人にキレてどうするよ。 わざわざbusybox縛りを入れて珍回答を期待してるのに普通の方法を答えるのもまあ2chらしいが。 っていうかnkfじゃないのな。
81 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/20(火) 07:22:32.22 .net] 以下のようなテキストファイルがあるとして (記載のアルファベットは例であり数字だったりマルチバイト文字だったりします) AAAAAAAAA BBBB CCCCCCCCCC DDDDDDDDDDD EEEEEEEEEEE 各1行を2行に増やすことってできますか? AAAAAAAAA AAAAAAAAA BBBB BBBB CCCCCCCCCC CCCCCCCCCC DDDDDDDDDDD DDDDDDDDDDD EEEEEEEEEEE EEEEEEEEEEE ループで1行ずつ読んで2行にして出力するくらいしか思いつかなかったのですが パイプを使ってシンプルにできたりしませんか?
82 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/20(火) 07:41:49.44 .net] >>78 sed p foo.txt
83 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/20(火) 21:45:48.66 .net] >>79 ありがとうございます こんなに簡単にできちゃった・・・ とりあえずpコマンド調べてみて 変換しない指定で返還前と変換後の2行が出力されるからこうなると理解しました
84 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/20(火) 23:06:19.80 .net] coolだよね
85 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/21(水) 00:43:12.91 .net] >>78 を元に戻す方法は?
86 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/21(水) 00:49:57.21 .net] uniq
87 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/21(水) 01:33:11.68 .net] 4行並んだら破綻
88 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/21(水) 01:46:20.53 .net] awk NR%2
89 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/21(水) 01:56:17.21 .net] あえてsedで sed 'N; s/.*\n//'
90 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/21(水) 06:13:41.20 .net] GNU sed 限定 sed -n 1~2p
91 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/21(水) 06:38:20.24 .net] sed 'n;d' だけでいいのにw
92 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/21(水) 07:02:03.89 .net] 尊い
93 名前:名無しさん@お腹いっぱい。 [2015/10/22(木) 08:26:25.71 .net] そうだな 現代でも使える場面のあるsedは凄い
94 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/22(木) 12:24:50.15 .net] sedでutfの変換テーブル書いたらどの位の速度で動くものだろうか?
95 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/22(木) 14:32:56.99 .net] pdfファイルやExcelファイルを文字検索したいのですが スマートな方法はありませんか? ファイル変換しないといけないでしょうか?
96 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/22(木) 15:27:18.78 .net] 変換しないとだめです pdftotext あたりで標準出力に吐かせて grep とか
97 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/22(木) 15:55:01.58 .net] こんな感じになりました pdftotext hoge.pdf - | grep aaa pdftotextでググったらこのページが ttp://www.clear-code.com/blog/2010/8/2.html Excelはssconvertを使えばいいようですね
98 名前:名無しさん@お腹いっぱい。 [2015/10/22(木) 22:52:20.38 .net] ☆ 日本の核武装は早急に必須ですわ。☆ 総務省の『憲法改正国民投票法』、でググってみてください。 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、日本人の悲願である 改憲の成就が決まります。皆様方、必ず投票に自ら足を運んでください。お願い致します。
99 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/27(火) 08:43:35.49 .net] cat file|した方がいいことも有るぞハゲ ってことかな? 大きなテキストファイルをawkで処理するときにcatで投げ込むのと、ファイル読み込みするのどっちが速いか比較 - カメニッキ tapira.hatenablog.com/entry/2015/07/22/214419 大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog d.hatena.ne.jp/yohei-a/20150728/1438099752
100 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/27(火) 09:02:14.04 .net] >>96 それって Linux OS でマルチコアで出力先が SSD の場合にだけ 速くなるかもしれないってオチだったような
101 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/27(火) 11:16:32.98 .net] でも実際速くなったんでしょ?
102 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/27(火) 12:25:26.58 .net] 今の時代マルチコアしかないような気がするんだけど・・・
103 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/27(火) 12:54:33.20 .net] 今の時代Linuxしかないような気がするんだけど・・・ 今の時代SSDしかないような気がするんだけど・・・
104 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/27(火) 17:55:11.78 .net] >>98 他の環境だとリダイレクトの方が速かったよ
105 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/27(火) 18:45:52.06 .net] それは反論になってない
106 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/27(火) 23:01:18.38 .net] C言語で書いたほうが早かったよ
107 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/27(火) 23:24:17.69 .net] >>103 その書いたやつを見せてください。ぜひとも参考にしたいです
108 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 05:47:50.83 .net] system("cat file | command");
109 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 06:27:57.97 .net] 同じスクリプトでもcatを使うと電解コンデンサがライトアップしやすいよw
110 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 07:30:41.83 .net] windowsでいうINIファイルのような、設定情報を格納したファイルを作ろうとしています。 入出力パスとか、オプションのon/off(1か0か)などを書いておき、その設定ファイルを シェルスクリプト上から読み込んで、処理内容に反映して実行することを想定しています こういった処理をする場合、業界の一般的な様式みたいな決まりってありますか。 また、いろいろな実装方法が考えられますが、どのようなコマンドで実現するのが適切でしょうか。 busyboxに入ってそうなコマンドが一通り動ける環境を想定しています。
111 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 08:21:07.49 .net] >>107 あなたはどんな業界の人ですか?
112 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 10:38:06.95 .net] 設定ファイル自体をシェルスクリプトにして . しちゃうのが楽じゃね RedHat系なら /etc/sysconfig/ 以下、Debian系なら /etc/default/ 以下を参考に
113 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 11:48:34.73 .net] またbusyboxの人か
114 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 11:54:18.98 .net] こうするのが楽とかじゃなくて業界標準でお願いします
115 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 12:20:06.26 .net] 普通にINIファイル形式でいい シェルスクリプトから呼べば(実行すれは)環境変数として設定されるようになる
116 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 12:21:45.13 .net] ポイントは読み込むんじゃなくて実行させるってこと readしてexportするんじゃなくてそのまま実行して環境変数に設定する
117 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 13:28:25.07 .net] 実行はしたくないです。インジェクションされます。。
118 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 13:35:42.31 .net] セキュリティが心配なら標準とは対極の方向に向かうべきだろアホか
119 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 15:00:41.96 .net] >>109 >>112 >>113 107です、ありがとうございました。ファイルを読ませることしか頭にありませんでしたので、聞いてよかったです。 その方式で、スクリプトの冒頭で設定を担当するコードを実行するようにします。
120 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 22:16:32.33 .net] 質問してるくせに偉そうだな
121 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/28(水) 23:07:56.69 .net] >>117 具体的にどこが偉そうなの?どこがカンに障るの?
122 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/29(木) 04:20:02.34 .net] 教えを乞うてるくせにお腹いっぱいなのが気にくわない。
123 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/29(木) 06:23:24.26 .net] unixの管理をしています。 ユーザーはソフトのインストール禁止ですが、 最近、ユーザーでも自分のホームフォルダーにソフトをコピーし、 X権限をすることによってソフトが実行できてしまうことが判明しました。 これはOSのセキュリティーボールではないのでしょうか? ユーザーのフォルダーではたとえX権限がされていても 実行できないようなおすすめのunixって何ですか? 必要ならカーネルにバッチを当てる方法も、やもうえません。
124 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/29(木) 07:39:00.78 .net] >>119 お腹いっぱいとは?
125 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/29(木) 08:29:26.09 .net] 名前じゃね
126 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/29(木) 09:02:26.07 .net] シェルスクリプトっていう性質上、ある程度仕方ない面もあるけども 最近は余りにもスレ違いな話題が多くないか?
127 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/29(木) 10:15:07.66 .net] スレ違いでも板違いでもかまってもらえるからな
128 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/29(木) 11:15:37.67 .net] >>120 お前脳みそついてなくてUnix使ってんのか? Windowsでも使ってろよ 希望してることができるから
129 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/29(木) 12:04:46.30 .net] コピペに釣られんな
130 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/29(木) 22:18:02.02 .net] >>123 >>123
131 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/10/30(金) 11:01:24.94 .net] >>124 軌道修正したレスができるなら相手して構わないんだけど、自演が疑われるような受け売り回答って不要だよな。
132 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/01(日) 13:31:00.57 .net] ${@:+"$@"}という変数の記法がわかりません たとえば/usr/bin/sensible-browserでは /usr/bin/x-www-browser ${URL:+"$URL"} のように使われています なぜこう書くのかヒントをいただけたら…
133 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/01(日) 14:16:24.02 .net] man bash Parameter Expansion の項(日本語訳では パラメータの展開 の項) を見るよろし。てか
134 名前:エがしょっちゅう見直すとこだわソレw [] [ここ壊れてます]
135 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/02(月) 12:13:01.41 .net] ポータビリティーの話( "$@"; が 何も無し にならないで、""; と解釈されてしまう対策の事 )が参考になるかな What does ${1+"$@"} mean? www.in-ulm.de/~mascheck/various/bourne_args/ Autoconf www.geocities.jp/fut_nis/html/autoconf-ja/Shell-Substitutions.html#Shell%20Substitutions # 例えば、 $URL が未定義や、ヌルなら /usr/bin/x-www-browser "$URL" # は、この様な意味になるが /usr/bin/x-www-browser "" /usr/bin/x-www-browser ${URL:+"$URL"} # は、こうなる /usr/bin/x-www-browser test.sh 引数の数に違いが出る(bash の方で理解しやすいので #!/bin/bash で) #!/bin/bash -vx foo="hoge" bar="" bash -vxc 'echo "$#, " "$@"' "dummy" "$foo" bash -vxc 'echo "$#, " "$@"' "dummy" "$bar" bash -vxc 'echo "$#, " "$@"' "dummy" "$baz" bash -vxc 'echo "$#, " "$@"' "dummy" ${bar:+"$bar"} bash -vxc 'echo "$#, " "$@"' "dummy" ${baz:+"$baz"}
136 名前:129 mailto:sage [2015/11/02(月) 14:09:15.67 .net] >>130 アドバイスありがとうございます。自分もよくそこ見ます 環境はlinuxのbashなのですが、"$@"と書いておけば ${@:+"$@"}と結果的に同じになるはずなのに わざわざ後者のように書くのはどうしてかなと疑問に思った次第です
137 名前:129 mailto:sage [2015/11/02(月) 14:12:02.34 .net] >>131 有益な情報ありがとうございます なるほど"$@"が""になってしまうことがあるためなのですね 違いを確認するためのスクリプトまで用意していただいて感謝です おかげで長い間疑問だったことが氷解しました /usr/bin/sensible-browserは、#!/bin/shですし ポータビリティを十分に考えて作られているわけですね なぜAdobeのacroreadなどでも使われているか納得できました とっても勉強になりました