シェルスクリプト総合 その27 at UNIX
[2ch|▼Menu]
[前50を表示]
700:名無しさん@お腹いっぱい。
18/06/17 14:43:41.30 .net
言いたいことがわからない

701:名無しさん@お腹いっぱい。
18/06/17 16:46:05.17 .net
言っても無駄なんだろうが、そんなファイルを処理しようってのが間違ってると思う

702:名無しさん@お腹いっぱい。
18/06/17 19:18:43.97 .net
>>676
処理したい時はどうすればいいですかね。

703:名無しさん@お腹いっぱい。
18/06/17 19:23:59.83 .net
POSIXで。

704:名無しさん@お腹いっぱい。
18/06/17 19:24:04.76 .net
Windowsだと%TEMP%で一時ファイルの格納場所が指定できますがUnixではそういう環境変数はないのですか?
$TEMPとか

705:名無しさん@お腹いっぱい。
18/06/17 19:27:47.07 .net
>>669
basenameって拡張子消えるよね?

706:名無しさん@お腹いっぱい。
18/06/17 19:28:33.83 .net
>>679
誰に対して使用して欲しいのか分からないな

707:名無しさん@お腹いっぱい。
18/06/17 19:40:16.19 .net
>>680
消せと言えばね

708:名無しさん@お腹いっぱい。
18/06/17 19:43:21.15 .net
>>679
TMPDIR
かな
/tmp
が古からあるからな。TMPDIRが設定されていたら(OSとして初期設定されているか、なんらかの形でTMPDIR設定されてたら)TMPDIR。設定されてなかったら普通に /tmp かな

709:名無しさん@お腹いっぱい。
18/06/17 19:45:54.91 .net
>>679,683
>TMPDIRが設定されていたら〜
って、TMPDIRを意識していればね。当然のように、んなの知らん、/tmp 一択ってのも普通にある

710:名無しさん@お腹いっぱい。
18/06/17 20:07:00.69 .net
>>681
一応、TMPDIRはPOSIX標準環境変数らしい。 tmpfile(3)やmkstem(3)なんぞはPOSIXとしてはTMPDIRを参照しろとはなってないらしい
が、実装するならTMPDIR参照するだろうし、してる。ちゃんとtmpfile(3)やmkstem(3)やmktemp(1)などを使っていれば、誰でもなんだろうけどね

711:名無しさん@お腹いっぱい。
18/06/17 20:58:57.79 .net
>>685
それってPOSIX shellの話なの?

712:名無しさん@お腹いっぱい。
18/06/17 21:18:57.03 .net
シェルじゃなくてシステム

713:名無しさん@お腹いっぱい。
18/06/17 21:19:01.81 .net
>>686
何を聞いてるのかわからん

714:名無しさん@お腹いっぱい。
18/06/17 21:19:45.24 .net
俺…POSIXだったのか…?

715:名無しさん@お腹いっぱい。
18/06/17 21:59:03.03 .net
関数のなかってalias使えないっぽいね
somefnc() {
  alias AAA='pwd'
  AAA
}
# → AAA: command not found

716:名無しさん@お腹いっぱい。
18/06/17 23:04:57.63 .net
6.6 Aliases
...
Aliases are expanded when a function definition is read, not when the function is executed, because a function
definition is itself a compound command. As a consequence, aliases defined in a function are not available until
after that function is executed.
somefnc () { alias AAA='pwd'; }
somefnc
AAA
otherfnc () { AAA; }
otherfnc

717:名無しさん@お腹いっぱい。
18/06/18 03:25:19.77 .net
aaa="cat /etc/*release | grep -E '^NAME='"
echo ${aaa}
上を実行すると、
$ ./hoge.sh
cat /etc/os-release | grep -E '^NAME='
こうなってしまいます。
cat 〜の結果をaaaに入れる方法教えて欲しいです。

718:名無しさん@お腹いっぱい。
18/06/18 03:35:59.29 .net
自己レス
evalで出来ました

719:名無しさん@お腹いっぱい。
18/06/18 07:01:


720:47.43 .net



721:名無しさん@お腹いっぱい。
18/06/18 07:11:33.65 .net
ちなみにこれだとうまくいく
somefnc() {
  alias AAA='pwd'
  eval AAA
}
evalは実行する段階でalias展開されるようだ
evalで実行する文は、実行段階ならないと
わからないのだから当然ではあるが

722:名無しさん@お腹いっぱい。
18/06/18 08:15:26.93 .net
>>695
すげぇ!ありがとう
ちなみに今さっきの地震に伴う停電のせいでパソコンがおしゃかになったっぽいので
試せないw

723:名無しさん@お腹いっぱい。
18/06/18 09:27:00.32 .net
なるほど。大阪だけにおしゃかになったわけだな

724:名無しさん@お腹いっぱい。
18/06/18 09:36:50.09 .net
は?

725:名無しさん@お腹いっぱい。
18/06/18 09:40:49.35 .net
うちの研究室もすごいことになった。
ところで前々から関数のなかで alias が展開されないのを歯痒くおもっていたので
eval 使えばいいというのは非常に有益な Tips だわ。

726:名無しさん@お腹いっぱい。
18/06/18 10:09:39.01 .net
あまりにもPOSIX、POSIXしつこいから、POSIXでNGにしたったわ

727:名無しさん@お腹いっぱい。
18/06/18 10:13:14.51 .net
PSOIXでいこう

728:名無しさん@お腹いっぱい。
18/06/18 10:15:28.33 .net
P0SIX(いやがらせ)

729:名無しさん@お腹いっぱい。
18/06/18 10:20:36.56 .net
P051X

730:名無しさん@お腹いっぱい。
18/06/18 10:23:39.71 .net
ぽじっくす

731:名無しさん@お腹いっぱい。
18/06/18 17:53:22.33 .net
>>699
makefile とか crontab でもエイリアス無視だけど
evalならいけるのかな
試してみよう

732:名無しさん@お腹いっぱい。
18/06/18 20:47:12.93 .net
URLリンク(oldcar-purchase.com)

733:名無しさん@お腹いっぱい。
18/06/19 04:10:29.03 .net
関数の中、もしくはmakefileやcrontabで
aliasを使いたい状況っていうのがよくわからないが
どんなときに使うの?
aliasではなく変数とかじゃ駄目なの?

734:名無しさん@お腹いっぱい。
18/06/19 04:54:42.99 .net
自分は引数を取らず固定されたフィルタはaliasで定義することにしている
例えばeraelコマンド(ERAce Empty Line)。
alias erael='sed -e "/^$/d"'
ただ大抵はシェルスクリプトの先頭に記述するのであなたの言う通り関数の中で宣言する意図は分からん。

735:名無しさん@お腹いっぱい。
18/06/19 05:16:14.31 .net
つづりeraseやで

736:名無しさん@お腹いっぱい。
18/06/19 05:53:06.78 .net
>>708
使い方としてはわかったけど、
ぶっちゃけそれだって関数作ればいいだけなんだよなぁ
erase() { sed -e "/^$/d" "$@"; }

737:名無しさん@お腹いっぱい。
18/06/19 06:00:33.38 .net
>>710
いやそうなんだけど
「引数を取らず固定されたフィルタ」
↑これを実現するのに関数は大仰な気がしてきてな。

738:名無しさん@お腹いっぱい。
18/06/19 06:15:17.17 .net
関数とエイリアスの使い分けに意味はあるの?
使用メモリ?性能?

739:名無しさん@お腹いっぱい。
18/06/19 06:31:47.07 .net
>>712
いやまったく大差ない。
ただただaliasというだけ
分かってると思うが俺は別に「使え!」なんて言ってないから
そんな気にする必要ないぜ。
個人的な問題だから。

740:名無しさん@お腹いっぱい。
18/06/19 07:04:14.39 .net
みんな知ってるかい?
関数の中で関数を定義できるってことを
foo() {
 bar() {
  echo bar
 }
}
foo
bar

741:名無しさん@お腹いっぱい。
18/06/19 07:22:52.49 .net
全角字下げやめてくれ
コピペで試せん

742:名無しさん@お腹いっぱい。
18/06/19 07:27:20.24 .net
foo() {
bar() {
echo bar
}
}
foo
bar

743:名無しさん@お腹いっぱい。
18/06/19 08:03:40.13 .net
5chに貼られたソースコードをコピペするってwセキュリティ意識ゼロかよw
絶対こんなの相手に発注したく


744:ヒぇww



745:名無しさん@お腹いっぱい。
18/06/19 13:37:44.18 .net
アクalias飲みてぇ

746:名無しさん@お腹いっぱい。
18/06/19 18:46:56.46 .net
>>717
たかが数行のソースが危険かどうかもわからん奴には発注したくないな

747:名無しさん@お腹いっぱい。
18/06/20 02:21:04.28 .net
somefunc() {
 echo "${1:='need a arg'}"
}
のような関数を作ったのですが引数なしで起動すると
-bash: $1: この方法で割当はできません
と怒られるのですがどうすればいいですかね。

748:名無しさん@お腹いっぱい。
18/06/20 03:20:33.94 .net
somefunc() {
 arg="$1"
 echo "${arg:='need a arg'}"
}

749:名無しさん@お腹いっぱい。
18/06/20 03:34:23.66 .net
>>721
ありがとうございます!
できました!
すいませんが、もしよければなぜ直接引数に:=変数置換を適用できないのか教えていただけないでしょうか。
例えば${1:-aaa}などはごく普通にできるので、不思議です。

750:名無しさん@お腹いっぱい。
18/06/20 05:12:57.83 .net
bash: $1: この方法で割当はできません
bash: $1: cannot assign in this way
代入文を使って位置パラメータへの代入を行うことはできません。
Positional parameters may not be assigned to with assignment statements.

751:名無しさん@お腹いっぱい。
18/06/20 06:53:00.27 .net
すべての言語で引数に対する代入は禁止されればいいのに

752:名無しさん@お腹いっぱい。
18/06/20 07:57:59.37 .net
引数に代入できる言語って例えば?

753:名無しさん@お腹いっぱい。
18/06/20 08:43:18.41 .net
ば…bat

754:名無しさん@お腹いっぱい。
18/06/20 10:20:31.09 .net
それ言語?

755:名無しさん@お腹いっぱい。
18/06/20 11:38:13.87 .net
Cだとargvは一度どこかに書き出さないと置換とか操作できないよね。

756:名無しさん@お腹いっぱい。
18/06/20 12:45:30.95 .net
>>728
別に直接書き換えもできる。constを「自分で」付ければできないようにもできるけど
Cで書き換えるのは危険すぎるだけだな。配列/文字列等のメモリ境界保護なんてないから。OSによってはargvがメモリ保護域にあるのもあるだろけど

757:名無しさん@お腹いっぱい。
18/06/20 12:48:49.26 .net
>>728
argv の指す先は変更できないけど argv 自体は変更し放題

758:名無しさん@お腹いっぱい。
18/06/20 12:56:35.45 .net
>>730
argvの指す先(char **argv/*argv[]の中身/値でいいの?)も変更できるよ
argv = myArgv;
argv[1] = myArg;
argv[1][0] = myChar;
どれもできる

759:名無しさん@お腹いっぱい。
18/06/20 15:25:21.41 .net
ああそうか。728だけど,すごいまぬけな発言をしてたわ。
Cでのargvはあくまで約束事としての変数名だからなんの保護・制約も掛けられてないのか。
一方シェルスクリプトでは引数変数を明確に他と区別できるようになってる。
ただし半保護状態。

760:名無しさん@お腹いっぱい。
18/06/21 05:57:06.66 .net
script(1)コマンドかそれと似たCLI記録ツールで、
~/.profile(←ここに~/.bashrcなどを読みこむコマンドが書いてある)を読み込ませたいのですがどうすればいいですかね。

761:名無しさん@お腹いっぱい。
18/06/21 06:34:26.14 .net
>>733
#!/bin/sh
exec /bin/bash --init-file "$HOME"/.profile "$@"
こういうスクリプトを書く
ファイル名を mysh でホームに保存したとして、次のようにして script に使わせる
env SHELL="$HOME"/mysh script

762:名無しさん@お腹いっぱい。
18/06/21 08:42:01.32 .net
>>733
surce ~/.profile ではだめなの?

763:名無しさん@お腹いっぱい。
18/06/21 09:33:47.42 .net
✕ surce
△ source
◯ .

764:名無しさん@お腹いっぱい。
18/06/21 09:34:32.68 .net
1行目は×な。

765:名無しさん@お腹いっぱい。
18/06/21 09:45:45.51 .net
bashの場合、インタラクティブでログインシェルでなければ.bashrcを読むはずだけど、それじゃ足らんの?

766:名無しさん@お腹いっぱい。
18/06/21 15:08:24.51 .net
>>734
ありがとうございます!
できました!

767:名無しさん@お腹いっぱい。
18/06/21 15:25:56.39 .net
733です。すいません。もうひとつ訊きたいことがあるのですが
script(1)実行中はCO


768:LUMNS=80,LINES=25に固定したいです。 しかしそのmyshに export COLUMNS=80 などと記述しても反映されません。 ~/.profileなどでは特にCOLUMNSの値を設定している訳ではないです。 これどうすればいいですかね



769:名無しさん@お腹いっぱい。
18/06/21 17:29:46.87 .net
stty cols 80 rows 25
なんかLINESもってとこから、ターミナルのウィンドウサイズなんぞもってぽいけど、それは個々のターミナルアプリ次第&一方通行っぽい(COLUMNSの値を設定している訳ではないのはそゆこと)けど

770:名無しさん@お腹いっぱい。
18/06/22 07:10:56.19 .net
シェルスクリプトってeval使えばメタプログラミングっぽいことできるよね。
例えば引数をfor文で増加さしてeval arg$i=\$$iみたいな。

771:名無しさん@お腹いっぱい。
18/06/22 08:39:33.18 .net
>>742
evalはインタープリタそのものだからね

772:名無しさん@お腹いっぱい。
18/06/22 08:56:09.19 .net
evalは一番最初に現れたプリミティブなメタプログラミング機能だからまあ当然だな。
ちな最初にeval を発明した言語はLisp な。

773:名無しさん@お腹いっぱい。
18/06/22 15:33:32.30 .net
eval is evilを発明したのはLISPか

774:名無しさん@お腹いっぱい。
18/06/23 05:10:08.14 .net
eval is evilはJSでは

775:名無しさん@お腹いっぱい。
18/06/23 10:04:22.34 .net
evalは強力すぎて危険だからどの言語でも濫用はevil扱いだと思う。
REPLみたいにevalがぴったりした応用もあるから禁止はできんし、
シェルスクリプトは比較的ミニマムな言語だからevalしか解がないケースも多いけど。

776:名無しさん@お腹いっぱい。
18/06/23 11:22:58.87 .net
「ミニマルな言語」って他には例えばなに?
それLLとはまた違うの?
いや煽ってるんではなくて単純に訊ねたい。

777:名無しさん@お腹いっぱい。
18/06/23 11:42:26.04 .net
コマンド置換の入れ子の限界を試そうと思って
$ i=1; while true; do echo $i; eval $( (yes '$(echo' | head -n $i | tr -d '\n'); (yes ')' | head -n $i | tr -d '\n') ); : $((i++)); done
↑こんなコードを実行してみた。
100あたりから面白いくらいに遅くなっていく
しかし500くらいまで試したけど表示は続き、限界を探る目的は達成できなかった。

778:名無しさん@お腹いっぱい。
18/06/23 13:19:07.15 .net
ミニマムはすき

779:名無しさん@お腹いっぱい。
18/06/23 14:46:23.27 .net
eval関連なんですがaliasの出力結果をevalする方法を教えてください。
具体的にはroot権限でlsがしたいのですが、その時通常のlsと同じオプションを付けて実行したいのです。
ですので(通常の状態での)alias lsの結果を変数かなにかに格納してそれを実行しようと思ったのですが良い方法が思い付きません。
そのコマンド自体もaliasにしたい(具体的にはls@rootコマンドとしてalias ls@root=の形で定義したい)です。
どうかよろしくお願いします。

780:752
18/06/23 14:52:25.95 .net
すいません。一番上の行は無視してください。
evalでできるかなと考えてたプロセスが漏れてしまっただけです。
多分このアプローチは間違っているので無視してください。

781:名無しさん@お腹いっぱい。
18/06/23 19:13:35.47 .net
>>750
偽物臭強いけどなw
ただ身長が小さいだけじゃないかっつー
本物双子のやつは結構好き

782:名無しさん@お腹いっぱい。
18/06/23 19:18:52.33 .net
>>751
普通にぐぐれ

783:名無しさん@お腹いっぱい。
18/06/24 00:39:25.04 .net
>>751
aliasでなくてsudo使って関数定義するのがいいと思うけどだめなの?

784:名無しさん@お腹いっぱい。
18/06/24 07:01:44.49 .net
LS=`alias ls`
じゃだめなの?

785:名無しさん@お腹いっぱい。
18/06/24 09:15:58.74 .net
>>753
詳しく

786:名無しさん@お腹いっぱい。
18/06/24 10:16:34.78 .net
/tmpでいいじゃん

787:名無しさん@お腹いっぱい。
18/06/24 22:14:10.69 .net
>>748
データ型が少ないって意味でTclとかかな。
でもTclには文字列型の他に連想配列があるのよね。
POSIX shellの範囲内だと引数配列を除けばホントに文字列しかないので。

788:名無しさん@お腹いっぱい。
18/06/26 16:44:06.12 .net



789:アんにちは ド素人です。 VPSの立ち上げ時にスタートアップシェルスクリプトを使って効率化したいです。 とあるwgetを叩くと、user名とパスワード、パスワードの再入力を求められるのですが、 このuser名、パスワードをシェルスクリプトで入力させるにはどうしたらよいでしょうか。



790:名無しさん@お腹いっぱい。
18/06/26 17:04:46.28 .net
wgetでgithub上にある既存のシェルスクリプトを叩くと
ユーザー名とパスワードを聞かれるのですが、
その入力を自動化したいという意味です。
github上のシェルスクリプトは変更できません・・・

791:名無しさん@お腹いっぱい。
18/06/26 17:16:35.68 .net
wgetでシェルスクリプト叩くてどういう意味?
出力をシェルに流し込むって事?

792:名無しさん@お腹いっぱい。
18/06/26 17:25:22.13 .net
なんかパスワード 自動入力 あたりでggったらすぐ出てきそうやな

793:名無しさん@お腹いっぱい。
18/06/26 17:29:12.30 .net
>>761
相手側の要求に従ったuser名パスワードの提供方法をwgetでするとよいでしょう
どのVPS?どういう相手側のサービス?その使ったというはGitHubのどれ?
URLリンク(gist.github.com)
これでいいのか?適当にぐぐったらVPSだしwget使ってるしw
>>762
まあ、なんかセットアップでコマンド叩いたりするのだろう。そういえばwgetで認証できなかったら再入力なんて求められないよな...??あったかな??

794:名無しさん@お腹いっぱい。
18/06/26 17:55:18.59 .net
wgetは--userと--passwordでユーザー名とパスワードを指定できるはずだけど

795:名無しさん@お腹いっぱい。
18/06/26 18:04:40.17 .net
httpのBASIC認証やftpのならそれで問題はないよね。普通にBASIC認証でそのオプションを教えてっていうことだけかな

796:名無しさん@お腹いっぱい。
18/06/26 18:12:51.93 .net
manくらい嫁カス案件

797:名無しさん@お腹いっぱい。
18/06/26 19:26:12.11 .net
wgetが書かれたシェルスクリプトを呼び出すシェルスクリプトを書きたいように見えるが…
まあ質問が日本語的に不自由すぎるね

798:名無しさん@お腹いっぱい。
18/06/26 20:51:22.89 .net
wgetがBASIC認証を要求してくるんですが、
パスワードをシェルスクリプトに書きたくないです。
別ファイルに生パスワードを書くのも嫌です。
かといって毎回入力するのは面倒です。
ssh-agent利用して最初に一回いれて覚えさせるだけで
あとはパスワードなしにできたりしないですかね?

799:名無しさん@お腹いっぱい。
18/06/26 21:11:05.80 .net
ssh-agent/ssh-keychainはどうなんだろ、無理じゃねと思うが、keyring(Linux/BSD)/Keychain Access(macOS)を使えばふつーにできるだろうな

800:名無しさん@お腹いっぱい。
18/06/26 21:17:58.64 .net
最初の質問と内容か変わってるし、パスワード書きたくないらしいので、役にたたないだろうけど、俺ならexpectでスクリプト書く

801:名無しさん@お腹いっぱい。
18/06/26 21:25:16.46 .net
最初の質問者と別人じゃね?レスの書き方から同一人物にも見えるけどw

802:名無しさん@お腹いっぱい。
18/06/26 22:26:52.66 .net
まあなんか知らんがもっとドキュメントに当たったらって気がする

803:名無しさん@お腹いっぱい。
18/06/27 00:54:07.84 .net
jqについて教えてください。
URLリンク(ideone.com)
やり方が分からないので、以下のようにとりあえすyenを指定したら並び順が思ったようになりませんでした。
$ cat kudamono.json | jq -r '.genre_name, .list[].name, .list[].hinshu_list[].yen'
くだもの
りんご
みかん
いちご
180
500
200
50
63
300
null
null
null
続く

804:名無しさん@お腹いっぱい。
18/06/27 00:54:30.18 .net
以下のように標準出力に出す方法を教えてください。
くだもの
りんご
ふじ
180
サンふじ
500
つがる
200
みかん
きんかん
50
いよかん
63
せとみ
300
いちご
あまおう
null
ひのしずく
null
とちおとめ
null

805:名無しさん@お腹いっぱい。
18/06/27 01:36:22.49 .net
>>772
別の人ですよー。


806:竄閧スいことを思い出したので、書いてみたの♪



807:名無しさん@お腹いっぱい。
18/06/27 03:13:21.88 .net
>>774-775
. | .genre_name, (.list[] | .name, (.hinshu_list[] | .hinshu, .yen))
URLリンク(stedolan.github.io) URLリンク(stedolan.github.io) 見つつ URLリンク(jqplay.org) で試した
jq初めての俺でもすぐできたじゃねーか
まじめにやれ

808:名無しさん@お腹いっぱい。
18/06/27 07:24:03.91 .net
>>777
どうもありがとうございます!
カッコを使うといいんですね

809:名無しさん@お腹いっぱい。
18/06/28 16:24:57.87 .net
dashで動くシェルスクリプトってPOSIX準拠のシェルスクリプトだと思って問題ない?

810:名無しさん@お腹いっぱい。
18/06/28 17:11:46.11 .net
そいつから呼ぶコマンドもPOSIXじゃないとな。

811:名無しさん@お腹いっぱい。
18/06/29 00:29:23.70 .net
dashはPOSIX準拠である
だからPOSIX準拠のコードはdashで期待どおり動く
だけどdash専用のコードはPOSIX準拠ではない

812:名無しさん@お腹いっぱい。
18/06/29 01:00:02.18 .net
kshのposixモードがかな。POSIX仕様の元となった自負があるだろうからposixモードもちゃんとしてそう

813:名無しさん@お腹いっぱい。
18/06/30 22:10:41.02 .net
あの,すごく初歩的なことだと思うのですが,
Excelなどのように隣のセルの値を参照して現在のセルの値を計算するという手法を
シェルスクリプトで行うにはどうすればいいでしょうか。
具体的には,参照した値をaとして,(1-sin^2(a))/2^aを計算したいです。
Excelだと,A列に値を入力していき,B1セルに「(1-(SIN(A1))^2)/2^A1」と入力した後ドラッグすればいいのですが……。

814:名無しさん@お腹いっぱい。
18/06/30 22:52:18.06 .net
a=値
echo "(1-s($a)^2)/2^$a" | bc -l
とか?

815:名無しさん@お腹いっぱい。
18/07/01 20:12:26.02 .net
cat <<. | xargs -I @ echo (1-s(@)^2)/2^@ | bc -l
3
44
-6
.
こんなのでどう?

816:名無しさん@お腹いっぱい。
18/07/02 14:00:06.28 .net
cat と echo と print の違いが分からない
あと、print と printfの違いも
教えて

817:名無しさん@お腹いっぱい。
18/07/02 14:00:38.56 .net
less と moreも

818:名無しさん@お腹いっぱい。
18/07/02 14:07:32.55 .net
manすりゃいいんじゃないの

819:名無しさん@お腹いっぱい。
18/07/02 14:15:59.23 .net
cat と echo,printf は全然違う。主に出力するソースが(ゆえにパイプで入力受ける受けないとなり?)
echo と printf は、書式が指定できるかというか、コマンド由来とC由来かな
printって?awk内のならprintはechoのようなもんかな(Ubuntuには print がコマンドであるけど Mailcap とかナニそれな普通じゃないのだな)

820:名無しさん@お腹いっぱい。
18/07/02 14:19:26.23 .net
ググったらechoは改行されてしまうけどprintfは自分で\nしないと改行されないってあった

821:名無しさん@お腹いっぱい。
18/07/02 14:23:46.00 .net
それらの違いが分からないのは使ってないからだろ
使ってないなら知る必要もないし知ろうとも思わない
自作自演かな?

822:名無しさん@お腹いっぱい。
18/07/02 14:26:27.85 .net
>>791
宿題

823:名無しさん@お腹いっぱい。
18/07/02 14:27:23.78 .net
コマンド由来とC由来ゆうてるやんw
printf(1) は printf(3) と同じと思えば不思議ではないだろう。echo も -n で改行しないようにもできるけどイレギュラー、コマンド由来だからな
>>791
まあ、なんの目的で聞いてるのかさっぱりわからんくはあるな。なんの自作自演なのかさっぱりだけど

824:名無しさん@お腹いっぱい。
18/07/02 14:27:58.46 .net
>>792
宿題かああ。程度が低いな。高校でとかか?

825:名無しさん@お腹いっぱい。
18/07/02 14:28:13.36 .net
>>792
あぁ…

826:名無しさん@お腹いっぱい。
18/07/02 14:39:06.49 .net
>コマンド由来
コマンドはつねに改行されるの?

827:名無しさん@お腹いっぱい。
18/07/02 14:40:31.96 .net
あと、printfのfって何?
f付けたのはcが最初?
fって?

828:名無しさん@お腹いっぱい。
18/07/02 14:44:50.94 .net
少しは自分で調べろよ

829:名無しさん@お腹いっぱい。
18/07/02 14:47:13.07 .net
調べたから改行の事分かったんだけど?

830:名無しさん@お腹いっぱい。
18/07/02 14:47:50.56 .net
もっと自分で調べろよ

831:名無しさん@お腹いっぱい。
18/07/02 14:49:35.35 .net
じゃぁfだけヒント教えて

832:名無しさん@お腹いっぱい。
18/07/02 14:50:22.47 .net
それな

833:名無しさん@お腹いっぱい。
18/07/02 14:50:43.52 .net
>>796,797
コマンドで何か出力するのに「改行しない」方が少ないだろうという。echo "Hello"が改行しなかったら


834:プロンプトが続いてとか。改行した方がその機会が多いので省けるだろう f = フォーマット。printfはCが起源じゃないのかなあ。の前の何かの言語ではprintがあっただろうな(どういうのか知らんけど) 聞く姿勢が小学生低学年並みだな。そろそろ>>798の言うとおり



835:名無しさん@お腹いっぱい。
18/07/02 14:55:17.35 .net
>>803
どうもありがとうございました

836:名無しさん@お腹いっぱい。
18/07/02 15:22:33.69 .net
礼儀正しいな
少し見直したw

837:名無しさん@お腹いっぱい。
18/07/02 15:24:56.72 .net
manとinfoどっち使ってる?
infoは文中から別のページに飛べるから便利そうだけどウェブブラウザのように戻る進むボタンがあるわけでも無いし全部文字だけだから現在位置が分からなくなるからmanがいいと思うんだけどどう?

838:名無しさん@お腹いっぱい。
18/07/02 15:25:43.12 .net
なんか最近ほんとこういうアンケートみたいなの増えたな
どっかから流れてきたか?

839:名無しさん@お腹いっぱい。
18/07/02 15:27:19.76 .net
この質問は乾燥機かせてほしいだけだから

840:名無しさん@お腹いっぱい。
18/07/02 15:29:11.19 .net
UNIX板だからmanだな

841:名無しさん@お腹いっぱい。
18/07/02 15:31:13.31 .net
何を乾燥させたいのかしばらく悩んだ

842:名無しさん@お腹いっぱい。
18/07/02 18:41:01.45 .net
「乾燥機貸して」ってアンジャッシュのネタにあったなそういや

843:名無しさん@お腹いっぱい。
18/07/02 19:09:02.32 .net
man manて口で言うと恥ずかしいからinfo

844:名無しさん@お腹いっぱい。
18/07/02 19:35:17.38 .net
rcsのco(1)を

845:名無しさん@お腹いっぱい。
18/07/02 21:56:08.50 .net
tinfo

846:名無しさん@お腹いっぱい。
18/07/02 22:32:14.11 .net
そのあたりのネタはもう聞き飽きた

847:名無しさん@お腹いっぱい。
18/07/03 00:21:24.80 .net
ディレクトリの中の拡張子がm2tsのファイル全てをtsselectというコマンドに投げてその標準出力をひとつのファイルに追記で書き込みたいんですが、その際、ファイル名も一緒に書き込みたいです。
どうやってファイル名を取得するんでしょうか?
$ tsselect *.m2ts > ana.log

848:名無しさん@お腹いっぱい。
18/07/03 00:43:49.80 .net
1行で書けなかったので、複数行に分けてfor分を使いました。

849:名無しさん@お腹いっぱい。
18/07/03 01:01:05.23 .net
こんなん?
for i in *.m2ts; do echo $i >>ana.log; tsselect $i >>ana.log; done

850:名無しさん@お腹いっぱい。
18/07/04 07:39:11.34 .net
近頃のどこか(このスレかも)で,
「fgrepはgrepより遅い」というような話を耳にしたんですが,ほんとうですか?
手元のgrepで試したところ,ほとんど有意な差はありませんでしたが……。

851:名無しさん@お腹いっぱい。
18/07/04 08:10:45.64 .net
それぞれ独自バイナリだった昔の話な。
あとgrepよりegrepの方が速かったんで、
今でも手はegrepを優先して打っちゃうけどな。

852:名無しさん@お腹いっぱい。
18/07/04 08:43:22.98 .net
いや独自バイナリだった頃もfgrepの方が速かったような。
grepだけ非決定性オートマトンで遅い的な。

853:名無しさん@お腹いっぱい。
18/07/04 15:23:44.48 .net
ファイルの一括リネームで
$ find . -name "*X*" | while read F; do mv $F ${F/X/Y}; done
だとXXXがYXXになるんですけどYYYにするには繰り返さなきゃいけないんですかね?

854:名無しさん@お腹いっぱい。
18/07/04 16:18:50.48 .net
If pattern begins with /, all matches of pattern are replaced with string.

855:名無しさん@お腹いっぱい。
18/07/04 16:22:26.78 .net
日本語で書いてくれないとわかりません
できれば修正したコマンドを書いてください

856:名無しさん@お腹いっぱい。
18/07/04 16:25:40.84 .net
お断りします

857:名無しさん@お腹いっぱい。
18/07/04 16:27:15.37 .net
断る理由とは?

858:名無しさん@お腹いっぱい。
18/07/04 16:29:57.71 .net
ひな鳥に餌を上げるのはひな鳥がかわいいからだ
なんかこのひな鳥うざいって思ったら餌は与えない

859:名無しさん@お腹いっぱい。
18/07/04 16:31:49.67 .net
可愛く思われる質問の仕方でもあったんですかね

860:名無しさん@お腹いっぱい。
18/07/04 16:34:15.63 .net
とりあえず「sh 変数展開」あたりでggってからここに来


861:い それで分からなきゃどこかの暇人が餌与えてくれるまでずっと待ってな



862:名無しさん@お腹いっぱい。
18/07/04 16:35:48.08 .net
ありがとうございました

863:名無しさん@お腹いっぱい。
18/07/04 16:54:10.40 .net
もう来んなよ

864:名無しさん@お腹いっぱい。
18/07/04 18:24:31.29 .net
すみません
ワードとかに出来る~$で始まるファイルを一括で消したいのですがどうすればいいですか。
find ./ -name "~$*" -exec rm -rf {} \;
これだと上手くいかないです。
find ./ -name "~\$*" -exec rm -rf {} \;
エスケープしてもダメです。
find ./ -name "~*" -exec rm -rf {} \;
これだと上手くいきますが$も指定するためにはどうすればいいですか。

865:名無しさん@お腹いっぱい。
18/07/04 18:27:42.16 .net
シングルクォート使っとけばぁ

866:名無しさん@お腹いっぱい。
18/07/04 18:30:53.83 .net
>>833
上手くいかないです
$ find . -name ~'$'*
Unknown user: $*.
$ find . -name "~'$'*"
Illegal variable name.
$ find . -name ~"$"*
Illegal variable name.
$ find . -name '~"$"*'
何も出力されない

867:名無しさん@お腹いっぱい。
18/07/04 18:41:11.43 .net
自己解決
bashにしたら\で普通にエスケープできました
find . -name "~\$*"
なんでcsh使ってたんだろ

868:名無しさん@お腹いっぱい。
18/07/04 18:44:18.71 .net
csh使ってたならプロンプト$にすんなよ紛らわしい

869:名無しさん@お腹いっぱい。
18/07/04 18:46:56.81 .net
cshだと%でしたねすみません
% find . -name "~\$*"

870:名無しさん@お腹いっぱい。
18/07/04 20:48:13.14 .net
なんで-rつけてんねん

871:名無しさん@お腹いっぱい。
18/07/04 20:56:00.21 .net
ファイルフォルダ関係なく消したいからフォルダがないとわかっていても付けてる

872:名無しさん@お腹いっぱい。
18/07/04 21:12:02.88 .net
\; より + かな。forkの遅いCygwinでは特に。

873:名無しさん@お腹いっぱい。
18/07/04 21:21:14.22 .net
最後以外の改行を削除する単純で可搬な方法を探しています。
私が現在使っている方法は
cat <<. | tr -d '\n' | printf '%s\n' "$(cat)"
a
bbb
cc
.
です。これは可搬性は抜群ですが、冗長すぎると感じています。
できれば一つのコマンド(sedとか?)で済ませたいです。よろしくお願いします。

874:名無しさん@お腹いっぱい。
18/07/04 21:32:09.95 .net
awkで

875:名無しさん@お腹いっぱい。
18/07/04 21:34:23.01 .net
フォルダっつーかディレクトリ

876:名無しさん@お腹いっぱい。
18/07/04 21:37:25.99 .net
同じだろ

877:名無しさん@お腹いっぱい。
18/07/04 21:40:52.56 .net
>>841
sed ':l;N;s/\n//;bl'
とかかな。// を /,/ にすると、1行CSVに出来る。

878:名無しさん@お腹いっぱい。
18/07/04 22:22:07.40 .net
>>845
ありがとうございます!
すごいですね……。:lってラベル付けでしたっけ。

879:名無しさん@お腹いっぱい。
18/07/04 23:00:04.93 .net
>>841
cat <<. | { tr -d '\n'; echo; }
a
bbb
cc
.

880:名無しさん@お腹いっぱい。
18/07/05 09:36:25.04 .net
Mac付属のsedじゃうまく行かなかった、ってお呼びじゃないか
最近のBSD sedはどうかわからないけど

881:名無しさん@お腹いっぱい。
18/07/05 10:23:41.12 .net
>>848
え? そうなの?
OS Xを持ってないので知らんが Busyboxでも行けるくらいの可搬性はあるぜ?
全部POSIXで規定されてる命令だし。

882:名無しさん@お腹いっぱい。
18/07/05 12:53:17.75 .net
macOSだけでなくBSDでだめっぽい。BSDでだめというか、GNU sedでなら動くか

883:名無しさん@お腹いっぱい。
18/07/05 14:18:26.92 .net
主にパターンスペースに対して処理した直後にどうするってとこの違いかな。他ではBSDでもmacOSとOpenBSDでは行を処理しなかった場合どうするがちょっと動作が違ったり、いろいろ鬼門だなsedは
sed '$!{H;d;};${H;g;s/\n//g;}'
で、いちおう、sedもGNU sedものようだけど、ゴテっとはしてんな

884:名無しさん@お腹いっぱい。
18/07/05 14:50:09.34 .net
>>845も結局改行を削除しているだけ&最後の改行はsedの勝手に付けるだけなので、>>847の方がシンプルでこっちの方がって感じだな

885:名無しさん@お腹いっぱい。
18/07/05 15:36:04.46 .net
>>845のMacやBSD向け変種でけた
sed -e :l -e 'N;s/\n//;$p;bl'

886:名無しさん@お腹いっぱい。
18/07/05 15:51:48.45 .net
おおっ
ラベルを別にすれば/しなきゃなのか
$はそこに入れるのか、なるほど
GNU sedではそれだと.


887:..オプションで変えられるかな くせが強いw



888:名無しさん@お腹いっぱい。
18/07/05 17:34:11.18 .net
教訓。移植性を重視するならsedで変なことするな。普通の正規表現だけ使え

889:名無しさん@お腹いっぱい。
18/07/05 18:25:50.29 .net
昔はもっと酷かったんだろうな #移植性
sedだけじゃなくてgrepとかも。

890:名無しさん@お腹いっぱい。
18/07/05 18:33:28.39 .net
>>856
昔は一つしかなかったから移植性よかったよ。
GNUが台無しにした。

891:名無しさん@お腹いっぱい。
18/07/05 18:41:45.18 .net
ぐぬぅ

892:名無しさん@お腹いっぱい。
18/07/05 22:10:39.00 .net
sed で可搬性を考えると、セミコロンで分ける方法はちょっとあやしいから、
愚直に -e で分けるしか無いのかも知れない、短く書けないけどw
それはさておき、sed の「無限ループに N を入れる」って、趣があると思うんだよね。
C で「ファイルを while の条件文で fgets() が EOF になるまで読み込む処理」に近いというか。

893:名無しさん@お腹いっぱい。
18/07/05 22:32:39.96 .net
>>855
>普通の正規表現だけ使え
というより、一行単位サイクルで処理しろかな

894:名無しさん@お腹いっぱい。
18/07/05 23:00:24.55 .net
>>859
溜めに溜めて溜め込んでってイメージしかないなw
そのwhile〜fgets〜で言うなら、中にreallocでどんどこ的な
実際どうなんだろと65Mのファイルで「ちょっと」試したら、使用メモリは増えない(??)けど終わらんぞw

895:名無しさん@お腹いっぱい。
18/07/06 00:57:10.67 .net
bashのプロセス置換なんですけど、最初のプロセス置換が/dev/fd/63に固定(?)されているのはなにか理由があるんですかね。
bash-4.4$ eval echo $(yes '<(echo) ' | head -n 63)
とやったら/dev/fd/63からデクリメントされていって/dev/fd/5→/dev/fd/3→/dev/fd/64
という謎の変化を経てインクリメントされていくという……。
これ仕様ですかね。

896:名無しさん@お腹いっぱい。
18/07/07 16:45:13.41 .net
仕様です
63は昔は大きい数字だったのですが
最近は小さくなってしまった

897:名無しさん@お腹いっぱい。
18/07/07 19:05:22.41 .net
数千行のCSVの値を一個一個指定の条件に沿っているかチェックするにはシェルスクリプトでも出来ますかね?
参考書教えて頂けたら嬉しいです。
それともこういうのは他のスクリプトの方が適してたりしますか?
perlも使える環境ではあります。

898:名無しさん@お腹いっぱい。
18/07/07 19:24:54.18 .net
>>864
そのチェックが他の行の参照を含まなくて、shellでできるかという質問にawkやsedも含まれているのなら、できる
というか、excelでやったりしないし、最近はpythonでやることが多い

899:名無しさん@お腹いっぱい。
18/07/07 20:21:55.89 .net
指定の条件によるな。CSVの項目も数値や文字列だけだったらシェルスクリプトだけでもできるだろう

900:名無しさん@お腹いっぱい。
18/07/07 20:52:55.66 .net
ああ、文字列の中のフィールドセパレータ(,)をフィールドセパレータとして除外というのはしないか。awkも同じかな。やってできないこともないだろうけどめんどくさいな
perlはcsv処理するモジュールを入れてだっけ、pythonは最初から入っているよな

901:名無しさん@お腹いっぱい。
18/07/07 21:04:50.61 .net
それ以前にCSVのフォーマットによると思う
改行とかカンマとかダブルクォーテーションを含むとかをきちんとやりだすとシェルだけでもできるだろうけどやりたくない

902:名無しさん@お腹いっぱい。
18/07/07 23:07:51.61 .net
またCSV嵐が来てんのか

903:名無しさん@お腹いっぱい。
18/07/07 23:12:15.86 .net
カンマ入っている場合には "" もしくは '' で囲わなければならないから、それはシェルスクリプトにとっても都合がいい、
IFS=',' fields=($raw)
で簡単にと思ったがそう甘くはなかった。最近流行りのevalでなんとかだとしても、$とかまた別の問題があるしなあ

904:名無しさん@お腹いっぱい。
18/07/07 23:14:30.65 .net
>>869
別にあれとは違うだろうにw 単にCSVだからって拒


905:否反応示しすぎ



906:名無しさん@お腹いっぱい。
18/07/07 23:47:30.31 .net
皆さんお答えありがとうございます。
出来るけど面倒だという感じですね。
PHP使いたいけど仕様上ダメみたいなんですよね。。。
後にメンテナンスが面倒くさそう

907:名無しさん@お腹いっぱい。
18/07/07 23:50:19.59 .net
>>867
残念ながらpythonは入ってなかったです。DBサーバーなんで

908:名無しさん@お腹いっぱい。
18/07/08 00:37:11.05 .net
>>873
perlで高機能な(?)Text::CSVを入れればだけど、それすらなら、
URLリンク(t2aki.doncha.net)
なんぞの数行のをコピペってでもかな。後はperlスレだな

909:名無しさん@お腹いっぱい。
18/07/09 08:36:49.76 .net
>>869
いいえ、また "お前" が来てるんですよ

910:名無しさん@お腹いっぱい。
18/07/09 09:05:14.05 .net
>>872
上とかけあってperl/python/rubyのどれかを入れさせれもらった方がいいと思う。
あるいはjava VMがインストールされてるなら、そっち使ってもシェルよりは楽。

911:名無しさん@お腹いっぱい。
18/07/09 13:02:45.84 .net
素直にCで書けばw

912:名無しさん@お腹いっぱい。
18/07/09 15:13:46.00 .net
1990年代には確かにこういうプログラムもCで書いてたが、今では はやらんよ。
スクリプト言語とかJava VM系言語とかでCSVライブラリ呼ぶように書くのが普通。
もっと低レイヤの処理ならCも使うけど、業務システムにCを使うってのは、
開発効率が悪いせいで、ほぼ亡びた。

913:名無しさん@お腹いっぱい。
18/07/09 19:00:09.14 .net
compgenによる補完候補の絞り込みですが
bashでは正常に動作するもののzshでは絞り込まれません。
なぜでしょう?
# bash 4.4.19 on Ubuntu 18.04
$ compgen -W "aaa bbb ccc" a
aaa
# zsh 5.5.1 on Ubuntu 18.04
% compgen -W "aaa bbb ccc" a
aaa
bbb
ccc
.zshrcでは
autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
してます

914:名無しさん@お腹いっぱい。
18/07/09 22:19:36.10 .net
>>878
すでに入ってるLL使うならわかるが、JavaVM入れるくらいならCでいだろ。

915:名無しさん@お腹いっぱい。
18/07/10 08:36:39.48 .net
>>880
>>876は「java VMがインストールされてるなら」って書いてあるじゃろ。
つまりCSV処理のためにjava VM入れるんじゃなくて既に入ってるならって話。
入ってないなら交渉してスクリプト言語入れる方を推奨だな。
エンタープライズ系は静的型検査が欲しいので相変わらずjava VMな言語が強いのよ。

916:名無しさん@お腹いっぱい。
18/07/15 05:45:07.54 .net
シェルスクリプトでwebpackみたいに結合して1ファイルにしてくれるものとか
babelみたいにトランスパイルすることで言語を拡張するものって無いかな

917:名無しさん@お腹いっぱい。
18/07/15 13:28:22.06 .net
>>882
シェルアーカイブ形式とか?
file.sharという形で,ファイル後半に(圧縮した)バイナリーファイル,前半(というかヘッダ)に展開用シェルスクリプトとインストールスクリプトを書いておく)
最近のソフトウェアだとVMWare Horizon ClientsのLinux向けインストーラーがその形式だった。

918:名無しさん@お腹いっぱい。
18/07/16 09:08:44.64 .net
>>883
別にバイナリファイルを動かそうって話じゃないよ
単にくっつけてくれればいいだけ

919:名無しさん@お腹いっぱい。
18/07/16 11:20:08.69 .net
>>884
それがshar

920:名無しさん@お腹いっぱい。
18/07/17 14:15:20.69 .net
>>885
だからぜんぜん違う
webpackみたいに1ファイルに結合するって話をしてる
結合しても結合する前と同じように動く
すこしはsharについて調べてきたら?

921:名無しさん@お腹いっぱい。
18/07/17 14:17:28.78 .net
shar知らない人のために説明しておくと、
これは単なる自己解凍形式の圧縮ファイル形式に過


922:ャない



923:名無しさん@お腹いっぱい。
18/07/17 14:31:39.62 .net
それよりwebpackとやらについて説明しておくべきだったろ
聞き方が悪い

924:名無しさん@お腹いっぱい。
18/07/17 14:59:08.62 .net
名前出てるんだから調べればいいだけだろ

925:名無しさん@お腹いっぱい。
18/07/17 15:01:52.39 .net
なんで聞く側が偉そうなんだよって話だろ

926:名無しさん@お腹いっぱい。
18/07/17 16:41:05.27 .net
どう使いたいかとかわからんのにな
>>887って言ってるけど、得られるのは自分でそれを使ってダイレクトにも頑張ればできる範囲だし

927:名無しさん@お腹いっぱい。
18/07/17 18:43:00.23 .net
webpackはCのプリプロセッサのincludeみたいなやつだよ

928:名無しさん@お腹いっぱい。
18/07/17 19:48:43.74 .net
バンドルじゃないの。macOSのバンドルのようなのを単一ファイルでの
単にincludeだったらシェルスクリプトにcatでくっつければええやん。目的は単一のファイルにしたいだけなんだから
バンドルなんだからバンドルをハンドルするヤツが必要じゃないの。んなのはshar使って自分で作ればってとこじゃね

929:名無しさん@お腹いっぱい。
18/07/18 07:15:49.95 .net
webpackとかbabelとか覚えたてのキーワード並べてみたかったんでしょ
そんなのが必要になる状況がクソなんだがなw

930:名無しさん@お腹いっぱい。
18/07/18 10:45:31.69 .net
>>891
> >>887って言ってるけど、得られるのは自分でそれを使ってダイレクトにも頑張ればできる範囲だし
自分で頑張ればできるって話なら、ファイル結合なんだからcatでもできるよ?
自分で頑張ればいいだけ。結合されても大丈夫なようにコードを書く必要があるけどな
その頑張るのが面倒だからツール使うんだろう?
ちなみにsharなんていらない。だってこれ目的を満たすためのツールじゃないから
自分でcatで頑張る+圧縮もしたいなーって思った時にオプションで使えるかもしれないツール

931:名無しさん@お腹いっぱい。
18/07/18 10:47:00.38 .net
>>894
単一のファイルで何千行も書きたいの?

932:名無しさん@お腹いっぱい。
18/07/18 10:48:08.70 .net
ちなみにsharの問題は展開しないと使えないって所
ルータのような書き込み回数に制限があるシステムでは致命的

933:名無しさん@お腹いっぱい。
18/07/18 10:48:51.53 .net
あと展開のためのコマンドが入ってない可能性もあるしな
ファイル結合するだけなら、外部のコマンドにも依存しない

934:名無しさん@お腹いっぱい。
18/07/18 12:29:11.73 .net
シェルスクリプトは実行可能なままファイル結合する必要性があんまりないってこと
そんなのとかトランスパイルとかが必要になるJavaScriptを指して、クソだなって言われてるんじゃない?

935:名無しさん@お腹いっぱい。
18/07/18 14:24:18.43 .net
てゆうかそれ以前に、そんな長いプログラムをシェルスクリプトで書いちゃいかんやろ。
他の言語を使うべき。
JavaScriptくらい高級な言語ならアリだけど。

936:名無しさん@お腹いっぱい。
18/07/18 19:30:47.19 .net
ディレクトリ A の中のファイルを全部
ディレクトリ B の中の同名のファイルと diff を撮りたいんですけどどうすればいいですか
xarg で1つの引き数を渡す方法しかわからないのでおねがいします

937:名無しさん@お腹いっぱい。
18/07/18 19:32:58.08 .net
diff -r A B
でいいのでは?

938:名無しさん@お腹いっぱい。
18/07/18 20:29:52.99 .net
少しはggるとかしてからここに恋や

939:名無しさん@お腹いっぱい。
18/07/18 21:00:07.83 .net
その前にmanすれ

940:名無しさん@お腹いっぱい。
18/07/18 21:33:29.76 .net
システムのスクリプトにも参考になるものがたくさんあるよね。zgrepとかzdiffとか
linuxだけどlddがシェルスクリプトだったのには驚いた

941:名無しさん@お腹いっぱい。
18/07/18 21:51:54.45 .net
bashのHISTTIMEFORMATを設定した環境だと
sshログアウトしてもbgプロセス消えないみたいなんだが
なんでなん?

942:名無しさん@お腹いっぱい。
18/07/18 22:33:43.46 .net
設定してなくてもsshログアウトしてもbgプロセス消えないけど、うちでは
他の設定じゃね

943:名無しさん@お腹いっぱい。
18/07/18 23:31:51.58 .net
うーむ
会社の環境だとその設定の有無で変わったんだけど
今vmでcentのminimal立てたら設定なしにbgプロセス生きてた
何か勘違いしてるのか

944:名無しさん@お腹いっぱい。
18/07/19 00:16:48.11 .net
URLリンク(serverfault.com)
だって。ちょい昔からデフォで子プロセスに


945:HUP送らなくなってるんだなあ。OSやディストリによってデフォが違うだろうけど huponexitオンにして、HISTTIMEFORMATを設定してもbgプロセスは消えるねえ



946:名無しさん@お腹いっぱい。
18/07/19 09:21:29.33 .net
case文で,Bash特有の高速化オプションとかありませんかね。

947:名無しさん@お腹いっぱい。
18/07/19 10:02:38.02 .net
>>910
高速化できるんならオプションじゃなく最初からそうしてると思うが、
さらに、高速化が必要なほど遅いcaee文とは?

948:名無しさん@お腹いっぱい。
18/07/19 10:34:16.62 .net
>>902
Aにあるファイル名だけ比較したいんです
Bのなかにはほかにもファイルがあったりするので
diff A/$f B/$f
とか場合によっては
diff A/$f B/*/$f みたいなことがしたかったのです…
ls なり find なりの出力ファイル名を変数に取り出すのってやっぱり難しいんですね
諦めます
レスありがとうございました

949:名無しさん@お腹いっぱい。
18/07/19 11:14:05.74 .net
お題としてはちょっと楽しめると思うけど、諦めちゃうのか

950:名無しさん@お腹いっぱい。
18/07/19 11:19:41.98 .net
find A -type fして、それぞれbasenameとって、find B -name filename -exec hogeってかんじかな。
B側で何度もfindするのを減らしたいけど、キャッシュされればそれほど負荷じゃないか。

951:名無しさん@お腹いっぱい。
18/07/19 12:11:39.09 .net
diffの話ついでに
(GNU) diffでディレクトリごと比較したときに、一方のディレクトリにのみあるファイルを無視するオプションってある?
diff -r /dirA /dirB | grep -v 'にのみ存在'
とやればまあ大抵の場合解決するんだけども、たまたまあるファイルの変更箇所に「にのみ存在」っていう文があった時に
困るので、できればオプションで解決したい。

952:名無しさん@お腹いっぱい。
18/07/19 12:28:48.82 .net
LANG=Cで^Onlyにマッチさせてはじく

953:名無しさん@お腹いっぱい。
18/07/19 12:35:37.30 .net
diffの出力って行頭の文字が重要なのに、
これを無視した日本語ロケール作者は反省するべき。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

331日前に更新/258 KB
担当:undef