1 名前:名無しさん@お腹いっぱい。 mailto:sage [2018/08/02(木) 05:22:16.82 .net] シェルスクリプトの総合スレです。 □お約束 ・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。 bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 ・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています 最新の仕様はこちらへ pubs.opengroup.org/onlinepubs/9699919799/ (左上の「Shell & Utilities」 から参照することができます。) ・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の方が適した
441 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/24(月) 08:05:21.35 .net] ループじゃなくて*の展開の仕様だよ 合理的に考えれば、展開を指示してマッチ無しならば0件にヒットしたとして何も返さないか空文字 展開が失敗したと考えてエラーのどちらかだろう 多分深い意味はないから気にすんな
442 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/24(月) 08:08:28.58 .net] いや気にしなきゃだめか ココがヘンだよbshくらいの気持ちで構えてれば、案外可愛く思えてくるぞ
443 名前:名無しさん@お腹いっぱい。 [2021/05/24(月) 09:50:48.81 .net] >>423 > どうせワンタイムだろうしあんまり細かいこと気にしてるとハゲるぞー うっせーハゲ!
444 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/24(月) 10:20:26.93 .net] lsとglobがソートされるってどこに書いてあったっけ? 前に見た気がするけど英語の中から探すのめんどいw
445 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/24(月) 10:48:30.44 .net] globで見つからなかった時、検索した文字列を返すのは おそらく安全側に倒したからだと思ってるんだがいい例が思いつかないな 例えばcmd renban* hoge.tar.gzだったら普通は引数が2個以上になると思うが 見つからない時cmd hoge.tar.gzとなって危険とか もしくはエラーメッセージをわかりやすく出すのが目的だったりするのかな? 空ディレクトリでls renban*を実行した時 「renban*」という文字列を返せば、エラーメッセージは分かりやすい > ls: 'renban*' にアクセスできません: そのようなファイルやディレクトリはありません 空文字を返せば、エラーメッセージは分かりにくい > ls: '' にアクセスできません: そのようなファイルやディレクトリはありません 何も返さなければ、何も表示せず正常終了 ・・・あ、これかw 空ディレクトリでない(file1 file2 file3というファイルが有る)場合renban*が 何も返さないとlsが実行されるからfile1 file2 file3と表示されるんだ renbanなんたらを処理しようとしてるのに、関係ないファイルを処理してしまう。
446 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/05/24(月) 20:33:55.32 .net] 一つでもあればループ内を実行して、(それ以上)無ければ抜ける。 だから、(最初から)無ければそのまま抜けて欲しいな、と。 該当するものが無いのだからループ内を実行するのは無意味だし。
447 名前:名無しさん@お腹いっぱい。 [2021/06/06(日) 22:14:34.25 .net] 標準出力の速度を制限したり、通信速度を表示するコマンドを探しています。どなたか知りませんか?
448 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/06/07(月) 00:11:53.58 .net] >>439 pvコマンド(Pipe Viewer)でどうよ
449 名前:名無しさん@お腹いっぱい。 [2021/06/07(月) 11:25:09.09 .net] >>440 ありがとうございました!
450 名前:名無しさん@お腹いっぱい。 [2021/06/15(火) 00:01:20.06 .net] sed の 's/foo/bar/' スラッシュ直前の【s】って何の意味でしょうか? g:global i:ignore のような意味ありますか? またman以外でこのような略語を調べるサイトなどありますでしょうか?
451 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/06/15(火) 00:58:11.44 .net] >>442 substituteのs info sedより > 3.3 The s Command > The s command (as in substitute) is (略)
452 名前:名無しさん@お腹いっぱい。 [2021/06/15(火) 01:15:20.43 .net] >>443 ありがとうございます
453 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/06/15(火) 11:14:03.04 .net] edコマンドで気になってるのはv versed subst? でもversedって多分古語だしなあ… exec grep -v "$@"にvrepと名付けることにした
454 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/06/15(火) 15:03:29.77 .net] >>445 grep の -v は --invert-match だから inVert substitute じゃねーの?
455 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/07/28(水) 19:08:57.09 .net] _数字列_数字列_数字列_を含む文字列から先頭の数字列だけを取り出したいので 前段階としてそれより前の部分を切り出すために echo ${文字列%_*[0-9]_*[0-9]_*[0-9]_*} としてみたのですが、 aaa_bbb_ccc_ddd_eee_123_4_567_xxxxx_123yyy_4f6_789c_zzz の場合には aaa_bbb_ccc_ddd_eee ではなく aaa_bbb_ccc_ddd_eee_123 になってしまいます。 どうすればいいでしょうか?
456 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/07/28(水) 19:47:08.66 .net] どう言った用途に使うんでしょうかね
457 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/07/28(水) 21:32:13.47 .net] >>447 シェルの変数置換じゃなくて、sedで置換したほうがええやろ。 まっとうな正規表現が使えるしな。
458 名前:名無しさん@お腹いっぱい。 [2021/07/30(金) 07:50:18.18 .net] >>447 そうなるように書いていますけど?
459 名前:名無しさん@お腹いっぱい。 [2021/07/30(金) 07:51:44.84 .net] 彼はsubstringの概念がないんでしょうかね。
460 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/07/30(金) 08:39:43.50 .net] 任意個数の数字だけの塊をglobは表現できないので、お題の変換は無理
461 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/08(日) 22:00:16.40 .net] 書き込めるかテスト
462 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/08(日) 22:07:53.75 .net] >>447 こんな感じでいけるんでね?前段階の話すっ飛ばして答えだけど テストしてないので動かなくても知らん isnum() { case "$1" in *[!0-9]*) return 1 ;; *) return 0 ;; esac } str="aaa_bbb_ccc_ddd_eee_123_4_567_xxxxx_123yyy_4f6_789c_zzz" IFS="_" set -- $str while [ "$#" -gt 0 ]; do if isnum "$1" && isnum "$2" && isnum "$3"; then echo "$1" fi shift done
463 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/08(日) 22:24:57.80 .net] >>449 のいうように、sedで一行それも大したことない正規表現で済むな シェルスクリプトだけという課題の制限でもなければ
464 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/09(月) 01:15:27.49 .net] シェルスクリプトで無理といった途端 シェルスクリプトの実装が出てきたんで 慌てて取り繕ったか?w
465 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/09(月) 01:42:06.59 .net] ねじ曲がりすぎ そんな発想になるのは、お前>>454 ぽいな
466 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/09(月) 13:03:23.04 .net] 俺は面白いと思うぞ、やりたくないけどな bashやzshならパターンの否定が使えるextglobオプション+%パラメータ展開を使うのが多分一番楽かと
467 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/18(水) 19:41:40.78 .net] 藤林丈司
468 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/31(火) 05:29:27.62 .net] 引数を表示するのに echo $1 だけのスクリプトファイルを作って実行するのですが なぜか引数が1&2等の場合にうまくいきません
469 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/31(火) 05:46:42.81 .net] そうなんですね
470 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/31(火) 11:29:04.37 .net] 標準出力とエラー出力を引数にしたいってことループしないそれ
471 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/31(火) 11:54:53.66 .net] >>460 クォートしろ。 echo "$1"
472 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/08/31(火) 12:07:22.10 .net] 単に sh scriptfile.sh 1&2 ってやってしまってるだけじゃないの 呼び出す側の問題 echoで展開後に&が問題になることはないのでクォートしなくても問題にはならない。クォートした方がいいけど
473 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/01(水) 00:03:03.07 .net] >>464 クォートしろ。 sh scriptfile.sh "1&2"
474 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/01(水) 02:30:08.96 .net] そんなわかりきったことを マウントとりたがりすぎ
475 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/01(水) 03:42:36.41 .net] >>466 マウントマウントうざ。 >>460 には「わかりきったこと」ではないのに。
476 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/01(水) 11:21:33.57 .net] 間違った指摘してたくせにw 何で常時偉そうにしなきゃならんのだかだが、自覚ないアホか
477 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/02(木) 16:02:37.40 .net] コマンド展開で質問。 echo $(...) | sed ... みたいなスクリプトで、$(...)内のコマンドが失敗したとき、そこでエラー終了してほしいんだけど、ムリ? set -eしても、これには効果がないもよう。
478 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/02(木) 17:36:39.83 .net] コマンド置換ではムリだねえ
479 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/02(木) 17:47:03.78 .net] >コマンド置換ではムリだねえ コマンドの引数にあるのはね コマンド置換でも変数に入れるだけなら終了ステータス返る/見れる=-eなら止まる。そっちはやってるとかあるだろうけど、いちおう
480 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/03(金) 12:16:10.43 .net] え?馬鹿なの? var=$(...) echo "$var" | sed ... ってするだけじゃん
481 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/03(金) 12:25:07.03 .net] すでにそう書かれてるだろうに
482 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/03(金) 12:30:46.29 .net] 流れとか関係なくどこまで知っているのか想定もせず、 偉ぶれると思ったら食いつくいつもの馬鹿だろな
483 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/03(金) 12:47:59.60 .net] 口は悪いけどみんなと仲良くしたいだけなんです大目に見てあげてください
484 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/03(金) 12:51:54.14 .net] >>474 おまえこそ、いつものマウンターマウンターだな。w
485 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/03(金) 13:51:00.00 .net] >>475 そうでもないそうではないようだけどw
486 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/03(金) 15:15:28.44 .net] >>470 ,471 どーも。 やっぱそうか。。。 -o substfailとかあってもいいのに。 >>471 > そっちはやってる うん、書かなかったけど、やってはみてた。 でもやめた。 なんかひっかかるし、いずれ誤って直しそうだし。 declare/set/exportで書いたら失敗が無視されることも気になる。
487 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/04(土) 07:46:40.91 .net] だからさ、もう結論出てるんだよ var=$(...) echo "$var" | sed ... こう書けば終わり
488 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/05(日) 01:55:02.26 .net] きも
489 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/08(水) 16:22:00.10 .net] sedのホールドスペースは、その内容を削除するにはどうすれば? とりあえずs/.//g;xでできたけど、もっと直接的なやりかたはないんかなー、と。
490 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/08(水) 16:43:31.22 .net] sed https://mevius.5ch.net/test/read.cgi/unix/1085730992/
491 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/08(水) 17:50:14.30 .net] おう
492 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/09/27(月) 09:26:46.66 .net] 怪しげなシェル芸が宣伝中 【広告記事】今、ユニケージ開発手法にギークが熱
493 名前:カするワケ【USP研究所代表&オープンソースOSコミッター対談】 ttps://type.jp/et/feature/14070/ [] [ここ壊れてます]
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/03(水) 02:25:59.11 .net] 空白行でいくつかのブロックに分割されたテキストにて、 文字列にマッチするブロックを出力する方法を探してます たとえば 111 222 222 aaa 222 333 333 333 のようなテキスト中から、aaaを検索した際に、その前後の空白行に囲まれたブロックである 222 222 aaa 222 という結果を得たいです いまは最初にブロックごとに一時ファイルを作り、それぞれに対してgrepにて検索し マッチしたファイルを出力、としているのですがブロックが20万ほどあり、 分割も検索も遅くて困ってます 該当するブロックは3〜5個程度なので、むしろgrepでマッチする行番号を調べる →テキストをless等でひらき該当行へジャンプ →そのブロックをコピペ の方が早いくらいでして
495 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/03(水) 02:48:59.29 .net] Linux板くだ質スレでいい加減嫌われたから流れてきたって感じかな > ブロックが20万ほどあり この時点でデータ構造の方を考え直すべき
496 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/03(水) 06:26:04.06 .net] \n\n(\n...)ではない \nをスペース(やタブなど)に | grep '\<aaa\>' | スペース(やタブなどにしたの)を\nに
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/03(水) 09:59:44.46 .net] テキトーに色々 $ for i in {1..2000000}; do echo aaaa; echo bbbb; echo cccc; echo $i; echo dddd; echo eeee; echo ffff; echo gggg; echo; done > aaa $ time (awk 'function keepp () { if (matched) { for (i=0 ; i < nkeeps ; i++) print keeps[i]; print } matched=0; nkeeps=0 } NF == 0 { keepp(); next } { keeps[nkeeps++]=$0; if ($1 == "1414213") matched=1 } END{ keepp() }' < aaa ) real 0m10.556s user 0m10.281s sys 0m0.271s $ time (awk 'NF == 0 { print; next } { printf "%s ", $0 }' < aaa | grep '\<1414213\>' | tr ' ' '\n') real 0m11.101s user 0m1.177s sys 0m12.259s $ time (tr '\n' ' ' < aaa | sed -e 's/ /\ /g' | grep '\<1414213\>' | tr ' ' '\n') real 0m2.344s user 0m1.452s sys 0m0.814s $ time (tr '\n' ' ' < aaa | sed -e 's/ */\ /g' | grep '\<1414213\>' | tr ' ' '\n') real 0m3.678s user 0m1.484s sys 0m1.078s
498 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/03(水) 10:06:32.55 .net] $ time sh smf1.sh real 0m4.088s user 0m2.324s sys 0m3.803s $ cat smf1.sh #!/bin/sh SMF=/tmp/xxx [ ! -x $SMF ] && { cc -x c - -o $SMF << 'EOS' #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { const size_t BUFFER_SIZE = 1024 * 1024 + 1; char *buffer = (char *)malloc(BUFFER_SIZE); while (fgets(buffer, BUFFER_SIZE, stdin) != NULL) { char *ep = buffer + strlen(buffer) - 1; if (ep >= buffer && *ep == '\n') *ep = '\0'; if (buffer[0] == '\0') putc('\n', stdout); else printf("%s ", buffer); } return 0; } EOS [ $? -ne 0 ] && exit 1; } $SMF < aaa | grep '\<1414213\>' | tr ' ' '\n'
499 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/03(水) 10:07:40.48 .net] $ time sh smf2.sh real 0m0.717s user 0m0.381s sys 0m0.436s #!/bin/sh SMF=/tmp/xxx [ ! -x $SMF ] && { cc -x c - -o $SMF << 'EOS' #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { const size_t BUFFER_SIZE = 1024 * 1024; char *srcbuff = (char *)malloc(BUFFER_SIZE); char *dstbuff = (char *)malloc(BUFFER_SIZE+1); char *const de = dstbuff + BUFFER_SIZE - 1; int numLFs = 0; size_t len; while ((len = fread(srcbuff, 1, BUFFER_SIZE, stdin)) > 0) { char *sp = srcbuff; char *const sep = sp + len - 1; char *dp = dstbuff; char c; while (sp <= sep) { if ((c = *(sp++)) == '\n') numLFs++; else{ if (numLFs > 1) *(dp++) = '\n'; else if (numLFs == 1)
500 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/03(水) 10:07:44.97 .net] *(dp++) = ' '; numLFs = 0; *(dp++) = c; } } fwrite(dstbuff, 1, (size_t)(dp - dstbuff), stdout); } return 0; } EOS [ $? -ne 0 ] && exit 1; } $SMF < aaa | grep '\<1414213\>' | tr ' ' '\n'
501 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/04(木) 20:48:41.95 .net] 481です いろいろな方法について情報ありがとうございます 参考にさせていただき、取り入れていこうと思います
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/19(金) 02:41:59.96 .net] 特定の文字列で始まるファイルが存在するかの判断はどうすればいいでしょうか ぐぐって見つけた ls を使う方法 if ls $f* > /dev/null 2>&1 then echo $f で始まるファイルがあります fi だと該当ファイルが存在しない場合に ...にアクセスできません: そのようなファイルやディレクトリはありません というエラーメッセージが表示されます。 また、 for g in $f* ; do echo $f で始まるファイル $g があります done だと該当ファイルがない場合でもループの中に入ってしまいます。
503 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/19(金) 03:28:14.33 .net] find使うのはスクリプトじゃないから関係ないか
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/19(金) 10:37:01.91 .net] >>493 zshでじゃないの そういう余計なオプション(nomatch)がデフォでオンになってるのでオフにする setopt nonomatch
505 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/19(金) 10:51:08.20 .net] >>493 あと、forの場合は、シェルが対象がなくてglob展開できない場合はglobそのままの値となる。forの場合に限らずglobはそういうもの for g in $f* の場合は、g が $f* になるので、展開されずにそのままなのかチェックするのは必要 for g in $f*; do [ "$g" = "$f*" ] && { echo 展開できませんでした; break; } な感じで
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/19(金) 11:01:48.57 .net] >forの場合に限らずglobはそういうもの なので、 if [ "$(echo $f*)" != "$f*" ] then echo $f で始まるファイルがあります fi とかとも書ける zshでnomatchだと余計なメッセージが出るし、>>493 のls使ってる方が見た目なにしたいのかわかりやすいと思うけど、いちおう
507 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/19(金) 11:07:42.62 .net] >>496 ああ、念のためには元globとの比較ではなくて -e する方がいいな [ "$g" = "$f*" ] でなくて [ -e "$g" ]
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/19(金) 12:04:30.54 .net] zshネタ、シェルスクリプトではなくて zsh script になってしまうが null_glob ってのもあるんだな setopt null_glob ってすると、エラーメッセージは出ないわ、globに当てはまらない場合globを入れない/消すわで、>>493 のどっちも動くようになるな そんな応えは求めてないだろうけどw
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/19(金) 12:07:54.26 .net] ああ、bashにもnullglobって同じようなのがあるのか シェルスクリプトという汎用ではなく各シェル固有独特の機能なので使わないだろけど
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/19(金) 12:11:32.22 .net] そして、bashにも failglob ってあるのか。オンになってたら>>493 はbashでも似たような動きになるか bashはデフォではオンではないので、zshだろと思うけど
511 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/19(金) 23:23:19.51 .net] 489です ありがとうございます。 とても参考になりました。
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 19:09:01.55 .net] コマンドの出力を(だけ)ではなく、シェルそのものの出力(=コマンドの出力もになる)を消すなら if (exec 1>/dev/null;exec 2>&1;ls $f*); then echo $f で始まるファイルがあります fi て現在のシェル環境を変更(元に戻すのが面倒なのでサブシェルでそこの環境を変更)で消すというのもできたな
513 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 19:15:56.45 .net] >if (exec 1>/dev/null;exec 2>&1;ls $f*); then execのディスクリプタ操作は羅列ができるようなのね if (exec 1>/dev/null 2>&1;ls $f*); then の方が良さげか
514 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 22:35:21.95 .net] >>493 check() { set -- "$1"* [ -e "$1" ] } 最短だとこうかな? set -- "$1"* でシェルのglob展開を用いて位置パラメーターにセットする ファイルが見つかった場合、そのファイル名が$1に入る ファイルが見つからなかった場合、"$1"*という文字列が入る まずありえないとは思うけど"$1*"という名前にアスタリスクが含まれた ファイルがある可能性を考えると>>496 よりも-eでチェックした方が良い と>>498 で書いてあったかw >>497 > >>493 のls使ってる方が見た目なにしたいのかわかりやすいと思うけど ls $f* は意味がない。シェルのglob展開されてからlsを実行してる。 つまりls file1 file2 file3 のようなものを実行してるだけ。 呼び出す前にすでにファイル一覧を取得してる 単に呼び出しコストが高い[ -e ] になってる
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 23:15:10.23 .net] 見た目っ言ってるだろ そんなコスト気にする必要もないから、見た目とそっちの方を重視してだよ
516 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 23:18:58.18 .net] 他人の提案を直接ダメ出しして自分の知識自慢をしたがり、 マウント取るのが目的なやつは他のシェルスクリプトスレでも居るけど、 同じやつかな
517 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 23:19:33.52 .net] lsの見た目の何がいいの? ファイルリストを取得しても何やってるのか意味わからんでしょ
518 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 23:20:38.15 .net] >>507 > 同じやつかな 違うけど、お前が知識不足でマウント取られたやつだってのはよくわかったよw
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 23:21:00.73 .net] lsはファイルがあるか確認するのに普通に使ってるだろ、手打ちで
520 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 23:22:25.30 .net] >>509 見た目って言ってる裏を読めないで決めつけられてもな 同じやつとしか思えないその短絡的なレス
521 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 23:31:25.93 .net] でたw 自分が説明できてないだけなのに 裏が読めてないと相手のせいにする 詐欺師の手段と同じ
522 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 23:34:45.43 .net] 自分にある意味ダメ出しされたらイキリマ来るくせに。変なやつ 説明できないとか似たようなフレーズはあいつもすぐにしてたなあ 巣に帰れよw
523 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 23:40:47.87 .net] 「裏を読めない」と言った時点で 自分で書いてないって言ってるのってわかってないのかな? 思い込み激しすぎるんだよな 例のPOSIX原理主義者みたいだw
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/21(日) 23:46:30.79 .net] 読めませんでしたと素直に言えよ わざわざ見た目って言ってるのはなんなのかは、細かいこと言うなら、 また、そこまで食い下がるならそれぐらい裏読めよ せめて、読めませんでしたと素直になれよ。他人にダメ出しばっかしてないで 自分にダメ出しされたらイキリまくるくせに、他人にダメ出しはするって、 マジでマウント取るのが目的でしかないだろう マウント取るためだから素直には人の言うことは読めないから、 イキリまくることになるんだろうなと そのしつこさはやはりなっていう マウント取るためだからしつこく食い下がるんだろうなあ...
525 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 00:00:02.71 .net] 書いてないものは読めません アホすぎる
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 00:00:26.12 .net] POSIX原理主義者って本当みたいだなw
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 00:02:28.08 .net] 書いてないものは読めません って短絡的に言えちゃうのは確かにアホだな、それが攻撃的な人格のヤツがなら
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 00:08:40.31 .net] >>517 自らアホ晒してるだけだぞ なんでPOSIX原理主義者に結びつけるのか意味わからん もちろんあんな自ら手足縛るのは嫌いだ/必要ないし、イキってる姿勢はもっと嫌いだし ホント短絡的だな。トンチンカンな決めつけばかりって何したいんだか
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 00:09:15.81 .net] 説明不足を他人のせいにするのが流行ってるの?
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 00:10:39.73 .net] 相手によるだろう
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 00:16:59.61 .net] >>519 > なんでPOSIX原理主義者に結びつけるのか意味わからん そりゃPOSIX原理主義者に知識不足でマウント取られた恨みがあるから、というぐらいは読めるよねえ
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 00:18:57.19 .net] また思い込みで語ってるw
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 00:23:14.57 .net] >>522 イミフすぎな文で、読めないぞ 誰がPOSIX原理主義者なの? 裏読めないやつがPOSIX原理主義者ってことになる文だと思うけど、その文は POSIX原理主義者って出てきたのは、>>514 だぞ >>514 がPOSIX原理主義者?>>514 のレスの相手であろう俺がPOSIX原理主義者??
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 00:29:52.48 .net] 俺がPOSIX原理主義者だとしたいなら、 POSIX原理主義者のくせに知識不足でマウント取られた恨みがあるから かな だとしてもPOSIX原理主義者に結びつける説明にはなってないなあ カオスだな。ここまでにしとこか
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 02:10:39.67 .net] >>524 × POSIX原理主義者 ○ 例のPOSIX原理主義者 シェルスクリプトスレでは、意味が全然変わる。w
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 02:11:59.82 .net] >>524 510には「POSIX原理主義者」に知識不足でマウント取られた過去があって 恨みがあるから「POSIX原理主義者」という言葉を持ち出した ってことでしょ 510がマウントとられてぐぬぬとなった時に、510には相手がPOSIX原理主義者のように思えたらしいというだけで 本当にPOSIX原理主義者かどうかさえ不明だし、誰がPOSIX原理主義者かなんてどうでもいい
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 02:13:47.43 .net] >>526 言語新作は病気だよ
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/11/22(月) 03:28:05.45 .net] >>527 無理があるだろう
539 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/12/11(土) 11:26:25.87 .net] fishについて質問です fish_vi_key_bindingsを入力するとviモードに入りプロンプトの左にモードステイタスが表示されますが、 $XDG_CONFIG_HOME/fish/config.fish にfish_vi_key_bindingsを記入した場合はログイン後すぐにviモードか使えますがモードステイタスが表示されません どうやったら表示出来ますか?
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/12/11(土) 13:46:58.57 .net] fish_prompt
541 名前:名無しさん@お腹いっぱい。 mailto:sage [2021/12/11(土) 13:48:39.11 .net] fish_mode_prompt