シェルスクリプト総合 ..
[2ch|▼Menu]
2:デフォルトの名無しさん
20/03/23 01:13:11.44 TYte82vJ.net
・特記なき場合、POSIX準拠シェルが既定です(古きBourneシェルはほぼ絶滅しました)
 POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
 参考 URLリンク(unix.stackexchange.com)
 特定のシェルの専用機能に依存する場合は明示しましょう(特にPOSIX準拠シェルではないfish, (t)csh等)
・デフォルトシェルのシバンはBourneシェル時代からの伝統で#!/bin/shを使用します。ただしその実体はOSによって様々です
  Debian系 … dash   CentOS系 … bash   Alpine … ash(busybox)  Android … mksh
  FreeBSD … ash   Solaris,OpenBSD … ksh
  macOS … bash(Single UNIX Specification準拠のために一部動作が異なる)
・ログインシェルは/bin/shでない場合があります。例 macOS … zsh
・シェルスクリプトは可搬性を持たせるために可能な限りPOSIXに準拠しましょう
 仕様 URLリンク(pubs.opengroup.org)
 参考 URLリンク(en.wikipedia.org)
・bash依存はなるべく避けましょう。自覚なきbashism。シバンが#!/bin/shなのにbashに依存する構文を使っていませんか?
 #!/bin/shを使うならシェル依存は厳禁です。bash依存するなら#!/bin/bashです
・BourneシェルはPOSIX標準化前に主にUNIXで使われていたシェルで多くの亜種が存在します
 Bourneシェル≒Version 7 UNIXのshに一番近いのはOpenSolaris由来のHeirloom Bourne Shell、次点でSchily Bourne Shellのoboshです
  Heirloom Bourne Shell: sh URLリンク(heirloom.sourceforge.net)
  Schily Bourne Shell: obosh URLリンク(schilytools.sourceforge.net)
 歴史的資料 URLリンク(www.in-ulm.de)
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
  参考 URLリンク(www.speech-lab.org)
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
 aproposやman -kでそれらしい単語による簡単な検索もできます
・ワイルドカード・パターンは正規表現ではありません。正規表現の話題はスレ違い(正規表現スレへ)
・シェル芸はシェルスクリプトとは異なります
・シェルスクリプトのことをシェルってゆうな

3:デフォルトの名無しさん
20/03/23 01:14:49.56 TYte82vJ.net
関連スレ
【Bash】Windows Subsystem for Linux【WSL】7
スレリンク(linux板)
Bashでプログラミング [転載禁止](c)2ch.net
スレリンク(linux板)
シェルスクリプト総合 その28
スレリンク(unix板)
zsh その7
スレリンク(unix板)
【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
スレリンク(unix板)

4:デフォルトの名無しさん
20/03/23 16:11:26 urYmb4Ir.net
タコシェルが一番好きです。なぜならおいしいから。

5:デフォルトの名無しさん
20/03/23 21:51:18 gNyotYW5.net
>>1

ところで早速の質問なんだけど,GNU Bashの履歴展開に関して,
<<. cat |
&#
.
cat
↑このコマンドを実行した時に,履歴展開「!$」の値が「&」になるのと,
<<. cat |
#&
.
cat
↑このコマンドを実行した時に,履歴展開「!$」の値が「|」になるのって,
バグ?仕様?

ちなみに履歴展開「!!」の値は正常(つまり直前のコマンドライン全体に復元される)だし,
ヒアドキュメントの内容が&xやx&だったりした場合は
期待通りの挙動(すなわち最後の引数,この場合は「cat」)になる。

6:デフォルトの名無しさん
20/03/24 02:17:57 cu1HFh78.net
catコマンドがあるのにdogコマンドってないんですか?
気になります。

7:デフォルトの名無しさん
20/03/24 03:33:10 Do7E3fIs.net
tac コマンドがあるよ

8:デフォルトの名無しさん
20/03/24 03:35:04 UBy3gEYu.net
>>6
wachdog

9:デフォルトの名無しさん
20/03/24 03:35:15 UBy3gEYu.net
t忘れた

10:デフォルトの名無しさん
20/03/24 07:10:36.15 fj9Tix3R.net
私は可愛い猫と女の子を見ていたいです。
I want to watch girl with cute cat.

11:デフォルトの名無しさん
20/03/24 11:34:18 0MDW2qu9.net
>>10
短い文なのに英語力の低さがダダ漏れ

12:デフォルトの名無しさん
20/03/26 01:44:53 1qTCm9gt.net
touchやcatみたいに本来とは違う用途で使われるコマンドって他にもあるんだろうか
mvでリネームも最初は不可解だったが

13:デフォルトの名無しさん
20/03/26 08:26:08.90 cRYr3Jpu.net
>>12
どんな使い方だ?

14:デフォルトの名無しさん
20/03/26 09:12:09.34 dMO0q1U3.net
触るだけだったのに作ってしまう
猫だったのに

15:デフォルトの名無しさん
20/03/26 09:30:11 n14BBjo0.net
結合結果を出力するものだが単独ファイルの中身を表示するのに使うとか

16:デフォルトの名無しさん
20/03/26 10:06:49.81 q5TlNmdE.net
touchは?

17:デフォルトの名無しさん
20/03/26 10:13:00.02 dMO0q1U3.net
タッチは触るツールやろ

18:デフォルトの名無しさん
20/03/26 10:36:23 SHCpGffT.net
>>5
これ分かる方いらっしゃいますか。

19:デフォルトの名無しさん
20/03/26 10:50:22 dMO0q1U3.net
履歴展開はインタラクティブシェルが行う
シェルスクリプト実行前の処理だと思ってるので興味がないw

20:デフォルトの名無しさん
20/03/26 17:59:15.96 1qTCm9gt.net
touchは空ファイルも作れるってだけで本来の用途はタイムスタンプの変更でしょ
catだって中身の連結が本来の用途なんだから
だけど実際はそれ以外でよく使うってお話

21:デフォルトの名無しさん
20/03/26 21:46:26 qqZOjzAR.net
その昔は C プログラミングをするとき make で管理していた
make はタイムスタンプを見てどれをコンパイルするか決めていたため
touch で手動でどこからインストールするかを制御してた
touch の使い道はその辺かなあ
新しい file を作るなら
$ cp /dev/null file
の方が私の好みではある

22:デフォルトの名無しさん
20/03/27 02:36:47 0z/Q98b2.net
新しいファイルを作るなら

:>file

コマンド呼び出ししないから最短で最速!

23:デフォルトの名無しさん
20/03/27 09:46:48.87 fxzLTj3v.net
touchに代わるいい名前ないかね?

24:デフォルトの名無しさん
20/03/27 13:51:42.45 dcpdkXkw.net
別に違和感とか全くないな
open(2)で無かったら作るというのがあるし

25:デフォルトの名無しさん
20/03/27 18:04:12 0RYt9ExS.net
「touchがよくない名前」って考えてるあたり,
touchの*本来の*目的が「ファイルを新規作成すること」だと思ってそう。

26:デフォルトの名無しさん
20/03/27 18:18:20 5yAR8wFh.net
$ man touch

TOUCH(1) User Commands TOUCH(1)

NAME
touch - change file timestamps

27:デフォルトの名無しさん
20/03/27 19:25:21.80 zXBqI+VJ.net
唾を付けておくという表現が英語にあれば
spitだろう。

28:デフォルトの名無しさん
20/03/27 20:52:54.59 OSmxssGw.net
お願いtouch touch ここにtouch

29:デフォルトの名無しさん
20/03/28 00:10:04.43 UOUptx4u.net
>>22
>file

30:デフォルトの名無しさん
20/03/28 10:24:50 KzFz1ENP.net
>>29
それPOSIX準拠?

31:デフォルトの名無しさん
20/03/28 13:22:16.30 KzFz1ENP.net
算術展開 $(()) って、代入文が使えるんだな。
ループ廻すときに,i=$((i + 1))っていう増分と$iの値の判定を別々にやってたのが,
$((i += 1))という値を判定するだけで済むとは。

32:デフォルトの名無しさん
20/03/28 14:59:32.82 Bw1KM2rM.net
>>31
POSIXでどこまで決まってるか知らんけど、
ふる〜いdashでは失敗する

33:デフォルトの名無しさん
20/03/28 15:06:39.27 Bw1KM2rM.net
あと $((i = 1)) とか $((i++)) とかも使えるよ
注意点としては
i=0
while [ "$i" -lt 100 ]; do は iは0から始まるが
while [ $((i+=)) -lt 100 ]; do だとiは1からになるって所だな

34:デフォルトの名無しさん
20/03/28 15:16:54.38 KzFz1ENP.net
>>33
$((i++))という書き方は,少なくともPOSIXでは保証されてない。
URLリンク(pubs.opengroup.org)

35:デフォルトの名無しさん
20/03/28 16:41:52 55WldctP.net
>>34
本当に?

URLリンク(pubs.opengroup.org)

36:デフォルトの名無しさん
20/03/28 16:49:31 KzFz1ENP.net
>>35
本当です。
2.6.4 Arithmetic Expansion

... The arithmetic expression shall be processed according to the rules given in Arithmetic Precision and Operations,
with the following exceptions:
* The sizeof() operator and the prefix and postfix "++" and "--" operators are not required.

ちゃんと読みましょう。

37:デフォルトの名無しさん
20/03/28 16:58:42 tKpZ/PKG.net
あるけど?

URLリンク(pubs.opengroup.org)

Operation

postfix ++
postfix --

38:デフォルトの名無しさん
20/03/28 16:59:07 jVMyeik2.net
嘘つくのは犯罪やぞ

39:デフォルトの名無しさん
20/03/28 17:35:25.59 KzFz1ENP.net
>>37
++と--はシェルの算術展開では必須じゃないって書かれてあんのが読めねーの?
これだから文盲と会話するのは疲れるんだよ。
バカの一つ覚えみてーに同じURL貼ってさぁ。

40:デフォルトの名無しさん
20/03/28 18:03:30.94 LpzVEuiv.net
馬鹿を相手にお疲れ様ですw

41:デフォルトの名無しさん
20/03/28 20:22:28.93 jP19sx2a.net
>>39
間違っちゃいないが >>35 の書き込みに対する反論を放棄(つまり
反論を潰しに行っていない/無視)して自分の主張を繰り返した点が
指示/説明下手。
結果 >>35 の再プッシュを食らうという互いに後味の悪い手戻りが
発生している。

42:デフォルトの名無しさん
20/03/28 20:43:09 KzFz1ENP.net
ちなみに
$((i+=1))って書き方はPOSIXでは保証されてる……筈だけど,
↑上にも書き込んでた人がいるように,一部シェルで動かないことがあるので使わんほうがいい。

43:デフォルトの名無しさん
20/03/28 21:28:16.71 DvmhhhVM.net
>>41
読めなさすぎだろ。>>36はお前も読めないのかよ

44:デフォルトの名無しさん
20/03/28 21:34:35.34 DvmhhhVM.net
>>34を提示
それに対して>>35を提示
それに対して>>35があろうが>>34で提示したのに書いてあるだろとご丁寧にその部分を抜粋
と読めないのか??なんで>>41なんてしゃしゃり出るのか不思議

45:デフォルトの名無しさん
20/03/29 23:36:16 xy0u8Cju.net
>>43
ここもそうだ
お前は俺の「間違っちゃいないが」を全く無視して「お前も読めてないのかよ」
と返してしまっている
読めてないのはお前じゃないのか?
よくある「自己紹介乙」状態だわ

46:デフォルトの名無しさん
20/03/29 23:56:55 vQZcBwwl.net
>反論を潰しに行っていない/無視)して自分の主張を繰り返した点
>指示/説明下手
ここだよ。お前の主題はここだろうが、そんな前置きではなく

47:デフォルトの名無しさん
20/03/30 00:04:56 E+6h8qU6.net
この会話のならなさはなんとかの一つ覚えのようにURL貼った本人ではないか?w

48:デフォルトの名無しさん
20/03/30 00:11:53 quKNoAsp.net
35 のレスが「本当に?」だけで URL がなかった場合の 36 の返は申し分ないよ

逆に URL だけだった


49: 36 のような返しはしなかっただろう? 35 のURL 側を潰さなかった/35 の URLをあたかも無視したような解が下手だと言っている



50:デフォルトの名無しさん
20/03/30 00:25:17 KcLwWOXD.net
なに言ってるのこのシトw

51:デフォルトの名無しさん
20/03/30 00:27:11 quKNoAsp.net
いつもレスバに負けるから ID 変えて書き込む癖が抜けてないようですね

52:デフォルトの名無しさん
20/03/30 00:33:42 KcLwWOXD.net
>>35 のURLは
Arithmetic Precision and Operations

>>34のURL先であるが、読んでいないようなので抜粋してくれた>>36で、
The arithmetic expression shall be processed according to the rules given in >>> Arithmetic Precision and Operations <<<,
with the following exceptions:
>>> * The sizeof() operator and the prefix and postfix "++" and "--" operators are not required. <<<

>>35の疑問疑義を否定している。URLがあろうがなかろうが関係ないなとしか思えない、下の>>>からでも

レスバwなるほどねww

53:デフォルトの名無しさん
20/03/30 00:49:16 quKNoAsp.net
書いてある内容は正しいって一番最初にいってるんでそこ何度説明されてもね
平行線みたいなんでやめるね

54:デフォルトの名無しさん
20/03/30 00:59:54 KcLwWOXD.net
平行線も何もあんた変な論は変な論というデバッグwし終えたてとこかな
>>36はちゃんとフォローしてる、疑問疑義を否定している、>>41なんてイチャモンもいいとこだったということで

てかさ、ちゃんと>>34を読んだらあんなURL張るはずもないもんだな、そこのURL先で Arithmetic Precision and Operations が>>35のURLのリンクじゃん
謎だなw

55:デフォルトの名無しさん
20/03/30 01:46:38 +SXbvp8E.net
ガガイ

56:デフォルトの名無しさん
20/03/30 17:34:28 wadsBXpT.net
エイプリールフールはまだだぞ

57:デフォルトの名無しさん
20/04/02 14:38:12.64 BA8GpIv4.net
Windows 10, WSL, Ubuntu 18.04 に、Ruby のバージョンマネージャーのrbenv を、
rbenv-installer を使ってインストールしたのですが、
URLリンク(github.com)
これの34行目について、
rbenv="$(command -v rbenv ~/.rbenv/bin/rbenv | head -1)"
これを、bash スクリプト内に書いて、スクリプトを実行すると、
xxx="$(command -v rbenv)"
xxx は、~/.rbenv/bin/rbenv とパスが入り、
これを端末で直接実行すると、
xxx は、rbenv となって、パスが入らない!
bash スクリプト内に書いて、それを実行した時と、
端末に直接入力した時では、結果が異なってしまう!

58:デフォルトの名無しさん
20/04/02 14:41:15.78 o0fN+e0O.net
>>56
あのさ、シェルで変数Aに123って代入して
別のプログラム実行したら、変数Aに123が入ってなかった!
みたいな間抜けなレスは要らないから

59:デフォルトの名無しさん
20/04/02 19:04:30.73 mH0OQczo.net
>>56
command -V rbenv
type rbenv
してみ、端末で直接実行時に
最優先実行対象を返すんだからその結果で何もおかしなことはないよ

60:56
20/04/02 21:38:05 BA8GpIv4.net
端末で、command -V rbenv, type rbenv を入力したら、
両方とも、rbenv という関数が表示された!

でも、 which rbenv と入力すると、
~/.rbenv/bin/rbenv と、ちゃんとパスが返ってくるけど

rbenv ()
{
local command;
command="${1:-}";
if [ "$#" -gt 0 ]; then
shift;
fi;
case "$command" in
rehash | shell)
eval "$(rbenv "sh-$command" "$@")"
;;
*)
command rbenv "$command" "$@"
;;
esac
}

61:デフォルトの名無しさん
20/04/02 22:11:52 mH0OQczo.net
which -- locate a program file in the user's path

command - execute a simple command
-v
Write a string to standard output that indicates the pathname or command that will be used by the shell, in the current shell execution environment (see Shell Execution Environment), to invoke command_name, but do not invoke command_name
以下省略するが読め
URLリンク(pubs.opengroup.org)

62:デフォルトの名無しさん
20/04/03 12:01:03 liYJ7DEW.net
ちゃんとリンク,引用までしてあげて親切だなぁ。
黙ってNGすりゃいいのに。

63:デフォルトの名無しさん
20/04/04 12:25:48.39 teSfSC9d.net
URLリンク(pubs.opengroup.org)
ipcsコマンドとかのXSI通信系コマンドを使ったことある人いる?
どういう場面で使ったのか知りたい。

64:デフォルトの名無しさん
20/04/04 13:26:30.10 x+avwAnv.net
IPC使ったことがないとしか思えない。XSIに限らず他のIPCすらも
IPC使ったことがあるならそんなの聞かないだろう

65:デフォルトの名無しさん
20/04/05 08:45:21 UxA0hjaO.net
使ったことがないから聞いてるんだろうに使ったことがないとしか思えないとはとんちかな

66:デフォルトの名無しさん
20/04/05 13:50:07 TlWLT3Mj.net
無知だからしょうがないんだろうがとんちんかんすぎ
シェルスクリプトとは関係ない、IPC使う場合の場面に決まってるだろってことだよ

67:デフォルトの名無しさん
20/04/05 19:18:45.75 hACSBNMn.net
誰かawkの互換性についてまとめてる人いない?
どれだけの実装があって、POSIXにどれだけちゃんと準拠してるとのとか
awkはどのLinuxにも入ってるって前提でいいのか?とか

68:デフォルトの名無しさん
20/04/06 18:02:52 h+IdnJJv.net
まずは隗より始めよ

69:デフォルトの名無しさん
20/04/07 11:20:12 OVrvsyTh.net
脱ケージ活動 ワロタw
(ケージ=鳥かご、おり、捕虜収容所)
まあそうなるよね。シェルスクリプト(笑)

ハンズラボとユニケージのあゆみ
URLリンク(www.hands-lab.com)

突然ですが、ユニケージ開発手法というのものをご存知でしょうか?
→ 詳しくは弊社の以下記事にて説明しております。
ハンズラボが採用しているユニケージという謎テクノロジーについて 第1回

弊社でのユニケージの現在
そんなユニケージですが現在のハンズラボでは技術的負債としての認識が強いです。

ユニケージからの脱却、通称脱ケージ活動は現在社を上げた取り組みの一つです。
負債の解消に向けて、様々な取り組みを実施しています。

70:デフォルトの名無しさん
20/04/07 14:58:20.98 rrWnJIGn.net
>>62
共有メモリとかセマフォとかメッセージキューとかの確認で使ったことあるよ。そういうのを使うプログラムのデバッグ中とか動作確認でな。

71:デフォルトの名無しさん
20/04/07 16:39:21 6BPG1jDR.net
>>68
プレゼンテーションみてみ、主にはシェルスクリプトだからというのではないから
シェルスクリプトはど素人にとっつきやすいのか?

72:デフォルトの名無しさん
20/04/07 16:59:54.57 7MZHT+wD.net
>>70
>主にはシェルスクリプトだからというのではないから
は?

73:デフォルトの名無しさん
20/04/07 17:06:46.66 6BPG1jDR.net
プレゼンテーションみてみ「素人が作った」だから

74:デフォルトの名無しさん
20/04/07 17:21:07 6BPG1jDR.net
juniとかsm1,sm2,sm3,sm4,sm5(5までかな?w)、ハンズラボ内製かと思ったら、ユニケージ元が提供してるヤツかw
ダメすぎに見えるな見えるだろうな、他の言語メンテを考えて開発してるのから見たら

75:デフォルトの名無しさん
20/04/07 17:31:04 6BPG1jDR.net
いや、プレゼンテーションにある、sm2,sm4,sm5だけなのか
1,3が欠番、2/4/5にちょっとは深い意味があるのか?
他でも命名がある意味無茶苦茶だなあ、仕事として使おうとは全く思えない

76:デフォルトの名無しさん
20/04/07 18:06:03.96 OVrvsyTh.net
>>70
Windows以前はMS-DOSが使われていた。
GUIなんてものはなく、コマンドプロンプトと
バッチファイルを触るのがパソコンを使う第一歩だった
これはLinuxにも当てはまる。Linuxを使う第一歩は
シェルスクリプトを触ること。GUIだけならWindowsを使えばいい。
Linuxを使うという第一歩はシェルスクリプトを触ることになる。
その第一歩の知識だけで仕事をした結果。
シェルスクリプトが悪いのではなく
第一歩の知識だけで仕事をした結果
知識を得る努力をせずに、今の知識で努力した結果
結局の所知識不足なので何しても破綻する

77:デフォルトの名無しさん
20/04/07 18:07:43.92 7MZHT+wD.net
日本語不自由すぎやろw
言語関係なく組織の人的負債になるタイプ

78:デフォルトの名無しさん
20/04/07 18:14:36 6BPG1jDR.net
読めない自分を少しは疑ってみような

>>75
>Linuxを使う第一歩はシェルスクリプトを触ること
そんなこと言ってるからLinuxが普及しないんだよw

79:デフォルトの名無しさん
20/04/07 20:33:27 gCNEshtB.net
>>69
ありがとう。

80:デフォルトの名無しさん
20/04/07 22:56:47.46 OVrvsyTh.net
>>77
> そんなこと言ってるからLinuxが普及しないんだよw
そのとおりだと思うが?正確には俺が言ったから普及しないんじゃなくくて
Linuxがそういう状態であるから普及しない。俺はそのことを言っただけ。
俺が言うのをやめたところで、Linuxが改善されないと普及しないよw
更に言うならLinuxを普及させたければ、ソフトウェアするんじゃなくて
いい営業部隊を雇うことだよ。雇う金を出せないなら永遠に無理ってことだけどな。
オープンソースなんだから営業を雇う金なんて集まらないって言うけど、
そもそもオープンソースにしたのは誰かに言われたのではなく
自分で決めたんだろうから、文句言うなって話だがな

81:デフォルトの名無しさん
20/04/07 23:09:11.40 rrWnJIGn.net
LinuxはPCのデスクトップ環境では伸びなかったがその他では使われまくってるよな。
PCと似たような使われ方もするAndroidのベースOSがLinuxだし。もうこれだけでも恐ろしいぐらいの普及率だ。
その他薄型テレビだのネットワーク機器だのそこらじゅうで使われている。

82:デフォルトの名無しさん
20/04/07 23:09:41.77 5NuNjNr6.net
Linuxが普及しないのはオープンソースを言い訳に使うから。byチコ

83:デフォルトの名無しさん
20/04/07 23:33:03 OVrvsyTh.net
Linux(UNIX)のコマンドとバッチファイルのコマンドは
どちらもCLIだがスタイルがぜんぜん違う

例えば、echoを引数無しで実行すると
ECHO は <ON> です。と表示される。

もしバッチファイルのコマンドのスタイルが
Linux(UNIX)に混じったらとても使いづらくなるだろう

一貫性ある形で統一することは重要。Linux(UNIX)は
GUIでこの統一に失敗した。

84:デフォルトの名無しさん
20/04/08 02:12:11 IyPQ81Bn.net
じじいの知識自慢

85:デフォルトの名無しさん
20/04/08 02:25:50 WKxansXY.net
GUI環境を好みで選べるのが良いところじゃん
GNOME
KDE
Xfce
LXQT
MATE
等々

86:デフォルトの名無しさん
20/04/08 09:01:22.17 TEO49enz.net
良いところがあれば、世界で一位になれる。
これはマクドナルドに味で勝負した高級ハンバーガー店が
惨敗するまでの悲しいストーリーである。

87:デフォルトの名無しさん
20/04/08 09:40:49.64 RSqCZ6so.net
オープンソースって一般人からしたら負担だけどな
粗造乱造が基本だから目当ての物を探すのに苦労する
模倣のくせに機能不足だとか洗練されていない外観だとか心当たりあるだろ
何か意見すれば「自分で」で逃げるしさ
呆れられたいのか誇られたいのかはっきりしな
お仕着せのappleと無法地帯のLinuxと両極端なんだよ

88:デフォルトの名無しさん
20/04/08 09:52:21.83 /PQASvbd.net
意訳:俺の好みじゃない。Windowsがいちばん

89:デフォルトの名無しさん
20/04/08 09:58:42.93 gjFvYWAv.net
ただWindowsを使ってて知ってることが多いってだけだな
単にそれで基準がWindows
それ以上手がかかってもダメだし手がかけられないとダメ、
Windowsで知ったことの範囲でWindowsの手順でできなきゃダメってだけ

90:デフォルトの名無しさん
20/04/08 10:46:28 kH2GeAXz.net
Linuxと言うかオープンソース界隈でいやなのは
先駆者が先輩面したり初心者を馬鹿にして
さも自分がすごいんだと言いたげなところかなあ
これと対極をなすのがスマホとかなんだけど
知り合いの若いのにアプリの使い方聞いてみ?
親切に教えてくれるぞ

要するに俺はLinuxを知ってる!
オープンソースを知ってる!
でも誰も褒めてくれないから
新参者がきたら牢名主のように
小言を言い続けてやると思ってそうなところ

91:デフォルトの名無しさん
20/04/08 10:47:16 kH2GeAXz.net
まあ手に入れた数少ないスキルだからしゃーないか

92:デフォルトの名無しさん
20/04/08 12:06:02.73 +6aWDKKq.net
俺にLinuxや他のOSSを教えてくれた人はそんな人じゃなかったな。
懇切丁寧に教育してくれた。
寧ろ大学やらでWindowsやExcelの使い方を指導してた教員のほうが態度が酷かった。
まぁ,どういう人に恵まれるかで,その「教えた対象」の評価すら変わるってのは,ちょっと非論理的だけど,
かく言う俺も,多分上で話した教員のせいで,Microsoft製品を色眼鏡で見てしまうきらいがある。

93:デフォルトの名無しさん
20/04/08 13:15:43.23 oh4YVJIM.net
>>88
> ただWindowsを使ってて知ってることが多いってだけだな
だから営業部隊の話につながる。
使ってもらうにはどうしたらいいか?答えは宣伝だよ。
パソコン屋に置いてもらうネットやテレビで宣伝する。
いずれも金がかかる方法だ。だからオープンソースいう
選択をした時点で積んでいるんだよ。自分で自ら王手されに行った。
いや王手がだめって言ってるんじゃないよ。
相手(利用者)にとってはいい捕虜だから

94:デフォルトの名無しさん
20/04/08 13:57:03 247C/Fba.net
Linuxが普及してない世界線でシェルスクリプト書いてるやつもおるんやなw

95:デフォルトの名無しさん
20/04/08 14:19:48.18 5a3Kp3Hv.net
>>93
世界=俺の知っている世界、または
世界=俺の見たい世界
って奴がたまにいるからね

96:デフォルトの名無しさん
20/04/08 15:36:59.25 WKxansXY.net
変な位置で改行するやつ多いな
みんな同じ環境で見てると思ってるんだろうな

97:デフォルトの名無しさん
20/04/08 15:57:31 oh4YVJIM.net
同じ環境で見てるとは思ってないが、
最低横80文字(笑)ぐらいで見てると思ってる
スマホぐらいだろ?そのスマホで長い文字が読みづらいなら
それはサイトの仕様が悪いだけ

98:デフォルトの名無しさん
20/04/08 16:04:41 snKRM3SL.net
マックをLinuxに加えれば結構シェアが取れていると思うぞ。

99:デフォルトの名無しさん
20/04/08 16:10:53 oh4YVJIM.net
MacでLinux用バイナリがそのまま動かないなら、Linuxとは認められません

100:デフォルトの名無しさん
20/04/08 16:18:00 kuvoBLk0.net
なにを主張したいのか
なにを否定したいのか
シェルスクリプトと全然関係ないことには変わりなさそう

101:デフォルトの名無しさん
20/04/08 16:28:47 WKxansXY.net
サーバーOSシェアはLinuxがダントツだからな
WSLの環境作るのも楽になったしWindowsは単なるコンテナになった

102:デフォルトの名無しさん
20/04/08 17:31:57.45 1eDcIZ82.net
普通にwin上でbashです

103:デフォルトの名無しさん
20/04/08 17:35:44.13 oh4YVJIM.net
> Windowsは単なるコンテナになった
これは「すごいこと」という意味だよね?
Linuxも単なるコンテナになることが出来る。
コンテナになれるというのはモダンなOSの必須条件

104:デフォルトの名無しさん
20/04/08 18:41:56 q66UKRIK.net
無理やりなレス。自覚は無さそうだが

105:デフォルトの名無しさん
20/04/08 18:45:47 oh4YVJIM.net
単なるコンテナになったの意味がわからんだけだよw
クラウドで散々仮想マシンでLinuxが動いてるのに、
Windowsは仮想マシンで動かせばいいとか皮肉の意味で言うやつもいるし。

使いたいものだからこそ、仮想マシンやコンテナで使うわけで
むしろ逆に、Windowsさえ使えれば、ホストはなんでもいいということなんだが

106:デフォルトの名無しさん
20/04/08 18:54:28 WKxansXY.net
でっていう

107:デフォルトの名無しさん
20/04/08 19:17:03 +6aWDKKq.net
なんか事実とか関係なく,
「議論に勝てばいいや」の精神でレスしてる奴がいるな。

いや,もはや議論と呼ぶにも烏滸がましい,口喧嘩か。

いいかげんスレチな話題は収めようぜ?

108:デフォルトの名無しさん
20/04/08 19:29:33 oh4YVJIM.net
>>106
では言い出しっぺからどうぞ

109:デフォルトの名無しさん
20/04/08 19:32:17 +3Ip4bre.net
        ∧∧  ミ _ ドスッ
        (   ,,)┌─┴┴─┐
       /   つ.  終  了 │
     〜′ /´ └─┬┬─┘
      ∪ ∪      ││ _ε3
               ゛゛'゛'゛

110:デフォルトの名無しさん
20/04/10 00:47:25 na8GHWZ/.net
Apple「全部こちらが用意したものだけ使ってろ改造すんな」
Microsoft「OSだけ売るから自作なり出来合いなり好きにしろ」
Linux「OSはタダでやるからそれ以外は自分でやれ。改造してもこっち頼るな」
unixとは無縁だがあれの扱いも林檎とどっこいでいいんだよな?一般人は用ないし

111:デフォルトの名無しさん
20/04/10 06:21:29 4WnvV4mF.net
× Microsoft「OSだけ売るから、自作なり出来合いなり好きにしろ」
○ Microsoft「OSと開発環境、プラットフォームを提供するから、自作なり出来合いなり好きにしろ」

MSが提供してる開発環境・プラットフォーム
・Visual Studio
・Visual Studio Code
・Azure
・GitHub
・WSL
・Office(マクロ)
・SQL Server
・HyperV

112:デフォルトの名無しさん
20/04/10 09:07:06 Ixv/fgWK.net
small basicが入ってないぞ

113:デフォルトの名無しさん
20/04/10 10:23:40 ES+9souz.net
LinuxというかGNUが提供しているプラットフォーム・開発環境は
>>110
の数倍はありそう(下手すると数十倍?)。

その上で,「こっち頼るな,寄り集まって好きに改造しろ。」だからな。

114:デフォルトの名無しさん
20/04/10 11:04:17 4WnvV4mF.net
>>112
LinuxじゃなくてGNUだろ?
GNUのものはWindowsで何でも使えるようになったぞw

GNU「開発ツールはタダでやるから勝手に使え。OSはまだできてない。」


あとAzureに相当する開発プラットフォームはAppleもLinuxも実現できてない
やってるのはAmazonとGoogleであってLinuxではない
そう考えるとクラウドもOSの機能の一つを完全に実現してるのは
Microsoftだけなんだよな

115:デフォルトの名無しさん
20/04/10 13:07:14.50 CpDDWrVd.net
MS信者がキモい

116:デフォルトの名無しさん
20/04/10 14:26:12.32 5gPd6BaW.net
Linuxって企業だったんだwww

117:デフォルトの名無しさん
20/04/10 14:46:54.18 ES+9souz.net
めっちゃ突っ掛かってきてワロタ

118:デフォルトの名無しさん
20/04/10 16:00:20.83 nukGJGZx.net
>>115
企業じゃないよ。だから金がなくてLinux単体では
使い物にならない。

119:デフォルトの名無しさん
20/04/10 16:04:50.67 vdvhEun4.net
Linux愛好者?って偏屈だよね
俺Linux知ってるけどお前に教えないワラって感じで性格悪い
そのあたりでLinuxが浸透しない原因
そして今日もMSの株価時価総額1位

120:デフォルトの名無しさん
20/04/10 16:26:01.02 pLdRSiLY.net
時価総額の世界第一は違うぞ
第3位のAppleの時価総額はさほど第2位のMicrosoftとさほど変わらんが同等に見てるってことだな、お前は

121:デフォルトの名無しさん
20/04/10 16:32:36.01 ix9xeN7W.net
マイクロソフト信者やパソコンの大先生のよた話はもういいよ

122:デフォルトの名無しさん
20/04/10 16:50:45.63 5/MlN8IX.net
時価総額世界一はマイクロソフトだぞ?
ずっと前に奪還したって聞いたんだがな
URLリンク(stocks.finance.yahoo.co.jp)
1〜50件 / 6370件中最終更新日時:2020年4月10日7時40分
順位 名称・ティッカー・市場 取引値 前日比・前日差 時価総額 掲示板
1 マイクロソフト [MSFT] - NASDAQ 165.14 (04/09 17:20) +0.01% (+0.01) 1,256,062,603千
2 アップル [AAPL] - NASDAQ 267.99 (04/09 17:20) +0.72% (+1.92) 1,172,584,885千
3 アマゾン・ドット・コム [AMZN] - NASDAQ 2042.76 (04/09 17:20) -0.01% (-0.24) 1,016,907,263千

123:デフォルトの名無しさん
20/04/10 17:11:16 ix9xeN7W.net
奪還とか信者きめえ。今の世界第一はサウジアラムコな
そんな会社関係ないIT関係でとか言いそうだが
アホみたく無知を晒すなよ、それもキリリっとかでw

124:デフォルトの名無しさん
20/04/10 17:11:29 QxjVipyN.net
スレ違い

125:デフォルトの名無しさん
20/04/10 18:29:49 5gPd6BaW.net
>>117
アスペかよwww

126:デフォルトの名無しさん
20/04/11 10:25:05 md0SvLvZ.net
× Linuxは使いものにならない
○ Linuxを使いこなせない。

だいたい,シェルスクリプトに関して言えばLinuxなんかのUnixが圧倒的に有利なんだから,
少なくともこのスレでWindowsを讃えまくっても無駄骨だと思います(指摘)。

127:デフォルトの名無しさん
20/04/11 22:43:08.40 7reDkQuk.net
自炊できない自分を棚にあげて親のメシマズをあげつらう僕ちゃん

128:デフォルトの名無しさん
20/04/11 23:13:07.29 OL9J6aZ0.net
厳密にいうとシェルスクリプトではないのですが、
wsl や cygwin で
$ mv 'テスト' test
とすると
test\r
というファイルができてしまいます。
test
というファイルにするにはどうすればいいですか?

129:デフォルトの名無しさん
20/04/12 10:26:07 3CnLqbrV.net
>>127
これマジ?

Cygwinは試してないけどWSL (Ubuntu)
ではそんな現象起きないぞ。

130:デフォルトの名無しさん
20/04/12 10:44:52 6aAn44p0.net
マジなわけねーだろw

131:デフォルトの名無しさん
20/04/12 11:29:32 kH7j2wOo.net
ls で見ると

'test'$'\r'

というファイルができています

sed とか tr とかいろいろ試しているのですが、\rが取れ


132:ワせん。



133:デフォルトの名無しさん
20/04/12 11:55:26.80 qLm4HprE.net
Windowsだから改行がCRLFになってCRがファイル名として処理されたんだろうね
昔そうなった記憶があるようなないような
普通ならエラーになったような気がするんだけどね
試してないけど名前変えたいだけならGUIでログインしてファイルマネージャで修正できると思う
コマンドラインならESC押しながら補完したらコマンドで触れる有効なファイル名になった気がする

134:デフォルトの名無しさん
20/04/12 11:59:52 qLm4HprE.net
CRLFのCRが原因だろうけど
シェルスクリプトなら改行コード変換してみるとか
ターミナルならTeraTerm使うとかでしのいで
根本対処は後にした方がいいと思う
うちはcygwinの環境もうないしWSLも使わんわ
もっぱら仮想環境かラズパイ
昔仕事でcygwin使ってたころ
いざUnixやLinuxの実機に移したら
動かなくて痛い思いした覚えがある

135:デフォルトの名無しさん
20/04/12 12:03:30 KtYGSQjQ.net
stty igncr
mv $'test\r' test

Windows/MS-DOSなテキストファイル(CRLFが改行)に書いて実行したとか

136:デフォルトの名無しさん
20/04/12 12:13:43.08 KtYGSQjQ.net
ふつーーーーのTeminalアプリでは igncr にしちゃうと改行できなくなんのか
WindowsのCommand Promptからbash起動でも同じく改行できなくなんな
>>127は本当にインタラクティブでやったのか?

137:デフォルトの名無しさん
20/04/12 12:39:56.00 KtYGSQjQ.net
送り側(Terminalアプリ)の改行はCR、受け側はCRをLFに変換してなのね
stty のそこらあたりのデフォ(-inlcr -igncr icrnl)からは。WSLでも同じ
stty igncr するとリターンキー叩いても無視されて何もできなくなるが、リターンキーの代わりにControl-JでLF送ればいいだけなのね

138:127
20/04/12 13:16:51.20 kH7j2wOo.net
シェルスクリプトでやっています。
mv "テスト" test
stty igncr
mv '$test'\r' test
というファイルを作って
$ bash ,/file
とやると
cannot execute binary file: Exec format error
とでます。インタラクティブでやらないとできないんでしょうか?

139:デフォルトの名無しさん
20/04/12 13:32:38.13 MICQg9zq.net
そのシェルスクリプトの改行コードがCRLFになってるんじゃないですか、というのと
mv '$test'\r' test
ではなく
mv $'test\r' test
(シングルクオートの位置と数に注意)
$ bash ,/file
ではなく
$ bash ./file
or
$ bash file
で実行しましょう。

140:デフォルトの名無しさん
20/04/12 13:34:49.83 QH8CCQ6c.net
書き間違いなのかも知れないけど、そこは
$ bash ./test
なんじゃ?

141:デフォルトの名無しさん
20/04/12 13:57:36.00 KtYGSQjQ.net
bash ./test
ではないでしょ。ターゲットファイルがtestでスクリプトファイルじゃないんだから
>>137のとおり。>>136はわざとなのか?wなぜそうすると言うw
mv "テスト" test
をなぜ入れる。また、sttyはシェルスクリプトでは(ほとんど)関係ないよ
ちゃんと改行を選択できる(もしくはLFになる)エディタで書けばいいだけの話だし、
mv "テスト" test
だけで test になるだろう
すでにある 'test\r' を test にしたいなら、
mv $'test\r' test
とファイルに書いて実行すればいいだけだな

142:デフォルトの名無しさん
20/04/13 06:27:55.73 bwzJgTJt.net
POSIX準拠度を図るツールとか調べてるサイトないんかね?

143:デフォルトの名無しさん
20/04/14 01:35:34 JSjD3hsj.net
checkbashismとかは?

144:デフォルトの名無しさん
20/04/14 07:04:50.30 ji8PXwtq.net
>>141
あー、シェルスクリプトの準拠度じゃなくて
シェルの準拠度ね。シェルがどれだけ標準を満たした実装かってこと

145:デフォルトの名無しさん
20/04/14 09:49:58 r1rqFhB1.net
調べてどーすんの?

146:デフォルトの名無しさん
20/04/14 10:25:51 ji8PXwtq.net
そうすりゃ自分が間違ってるのかシェルにバグが有るのかわかる


147:だろ?



148:デフォルトの名無しさん
20/04/14 10:42:05.80 GtUt/+gx.net
調べたければ公式のtest suite入手すればいい
URLリンク(get.posixcertified.ieee.org)

149:デフォルトの名無しさん
20/04/16 01:24:21 sXaGgreP.net
ファイルが存在するなら上書き、しないなら新規作成ってtouchじゃなくてviでやるかんじでしょうか?

150:デフォルトの名無しさん
20/04/16 01:56:40.88 phPWx1q3.net
リダイレクトでappendすればいい
$ do_something >> output.txt

151:デフォルトの名無しさん
20/04/16 02:20:53.33 tywb42E3.net
bash なら、-e で、ファイルが存在すれば真
[ -e ファイル名 ]
逆に、ファイルが存在しない時に真
[ ! -e ファイル名 ]

152:デフォルトの名無しさん
20/04/16 09:20:05 pf1fo5EI.net
>>148
これだとうまくいかないことがある

153:デフォルトの名無しさん
20/04/16 11:59:50 TtBh+dOu.net
上書きって言ってるから、単純に

$ do_something > output.txt

で良いんじゃない?

154:デフォルトの名無しさん
20/04/16 12:07:49 DjP17ITj.net
>>150
普通にこれでいいな。

155:デフォルトの名無しさん
20/04/16 13:48:40 pf1fo5EI.net
リダイレクトでファイルを作れるけど
リダイレクトでファイルを削除ってできないんだよな
空にすることはできるけど

156:デフォルトの名無しさん
20/04/16 14:05:57.06 42Nlbk00.net
ファイルオープンとファイル作成は同居してるからな
削除は別物

157:デフォルトの名無しさん
20/04/16 14:19:23.91 pf1fo5EI.net
まあ分かるけど対象性がないと言うか
Aから出力したものをBにコピーする。の発展で
AからBに移動する。みたいな発想はなかったんかな?
そうすれば/dev/nullに移動 = 削除になったと思うんだが
移動も削除も実装w

158:デフォルトの名無しさん
20/04/16 15:26:12 MiKwJnZu.net
消去したいパスのリストをファイルに入れておいて(1行1パス)
cat path_list.txt | xargs rm -rf
みたいなことをしてるのですが、ファイルのパスでワイルドカード(アスタリスク)を
使いたくなりました。

単純にパスのリスト中でアスタリスクを使っても展開されないようですが、
展開させるにはどうするのがいいでしょうか。

159:デフォルトの名無しさん
20/04/16 15:32:46.71 pf1fo5EI.net
>>155
ファイル名に*という文字が含まれている場合はどうするの?

160:デフォルトの名無しさん
20/04/16 15:33:05.34 pf1fo5EI.net
あ、いや、「*」という名前のファイル名があったらどうするの?

161:デフォルトの名無しさん
20/04/16 15:58:03 phPWx1q3.net
$ ls
foo.log bar.log baz.txt qux.txt *.txt input.txt

$ cat input.txt
*.log
'¥*.txt'

$ cat input.txt | xargs -I {} bash -c 'ls {}'
bar.log foo.log
*.txt

162:デフォルトの名無しさん
20/04/16 18:47:06.88 qyR5Ndp0.net
bash -cってどんな時に使うんです?
簡単なシェルスクリプトならググらず書けるようにはなったけどまだよく分からん
関数もaliasも使えない分安全だろうけど使いたい時はどうするの

163:デフォルトの名無しさん
20/04/16 19:26:09.12 pf1fo5EI.net
>>159
その場でbashでコード実行したいときだろ?
今使ってるシェルがzshで、bashだったらどう動くか確認したり
シェルにログインするまでもないなとか

164:デフォルトの名無しさん
20/04/16 19:28:03 pf1fo5EI.net
あと環境汚すようなときにも使うな。
関数定義してなにかしたいけど、後で消したいとか
まあサブシェルとかでもいいんだけど

165:デフォルトの名無しさん
20/04/16 19:39:39 MiKwJnZu.net
>>158
なるほどー。素晴らしい。

166:デフォルトの名無しさん
20/04/16 21:47:35.66 phPWx1q3.net
>>159
interactive shellじゃない場合は
`shopt -s expand_aliases; source <alias設定file>` でエイリアスが展開される
$ cat .alias_and_fn
alias ll='ls -tAhG'
foo() {
echo "foobar!!"
}
$ cat input.txt | xargs -I {} bash -O expand_aliases -c $'source .alias_and_fn;¥n ll {}; foo'
行単位で読み込むときにalias展開するからaliasを設定した後に改行入れてから使う
interactiveなログインシェルとして起動したければ`bash -cli`とか
詳しくはman bashで

167:デフォルトの名無しさん
20/04/16 22:37:57 tywb42E3.net
bash -c は、よく見る

168:56
20/04/17 06:27:50 wSTFfL+S.net
>>56
ようやく、分かりますた!

xxx="$(command -v rbenv)"
と、端末で直接実行すると、xxx は、rbenv となって、パスが付かないのは、
すでに、rbenv という関数が定義されたファイルを読み込んでいるため、
同名のコマンドよりも先に、関数が見つかるから

一方、xxx="$(command -v rbenv)"
と、bash スクリプト内に書いて、スクリプトを実行すると、
xxx は、~/.rbenv/bin/rbenv とパスが付くのは、
rbenv という関数が定義されたファイルを読み込んでいないため、コマンドが見つかるから

シェル関数を使うには、その関数が定義されたファイルを読み込んでから使うのか

169:デフォルトの名無しさん
20/04/17 06:41:06 BxfxWji9.net
Ubuntuでシステムのシェルってdashになってるみたいですけど、確かこれってbashより
速いからって理由でしたっけ?

実際どのぐらい違うか興味があるんですが、どこかにdashとbashのベンチマーク比較した
情報とかあります? (自分でやれって? w)

170:デフォルトの名無しさん
20/04/17 10:38:11 9nBzfuh2.net
>>166
なんの速度かは言わないがあるツールをdashで動かしたら約3秒
bash 5.0 だと 11秒、kshだと6秒でzshだと9秒

171:デフォルトの名無しさん
20/04/17 10:44:00 9nBzfuh2.net
dashを選んでるのは速度もあるしPOSIX準拠ってのもあるだろうね

172:デフォルトの名無しさん
20/04/17 14:54:31 Urb0mH6b.net
関数を一行で書く時エラーで悩んでたけど波括弧ってに空白いるのな
foo(){ echo foo;}
小括弧だと必要ないのに何この初見殺し

173:デフォルトの名無しさん
20/04/17 15:09:03 xgpGiYXu.net
>>169
shellcheck使うといいよ

174:デフォルトの名無しさん
20/04/17 15:40:41 9nBzfuh2.net
>>169
zshは空白無くても動く

zsh -c 'foo(){echo test;};foo
test

dashはコンパイルエラー起こらないと思いつつ、実行するとエラーになり
dash -c 'foo(){echo test;}' # コンパイルエラー起こらない
dash -c 'foo(){echo test;};foo' # でも実行すると怒られる

実は"最後の" ; がおかしい
dash -c 'foo(){echo test;} foo' # これを実行するとこうなる
{echo: not found

エラー内容から、最初の { がおかしい事がわかる。これが正解
dash -c 'foo()echo test;} foo'
test

後ろの } はただのノイズだと思われるので、とってあげても動く
dash -c 'foo()echo test; foo'

↑これは POSIX 準拠なので(笑)zshやkshやmkshでも動く
でもbashやyashでは動かない

そこから考えると
dash -c 'foo()echo test;foo' は動くということがわかるし、
dash -c 'foo()echo test;}foo' は
foo()echo test +}foo になるので、 }foo: not found と表示されることも理解できる

175:デフォルトの名無しさん
20/04/17 16:52:28 nls2b0po.net
>>171
> dash -c 'foo()echo test; foo'
>
> ↑これは POSIX 準拠なので(笑)zshやkshやmkshでも動く
> でもbashやyashでは動かない

それは bash や yash の方が正解
関数定義の本体は複合コマンド(compound command)のみ
URLリンク(pubs.opengroup.org)

ちなみに yash や posh はこれに関して、bash よりも分りやすいエラーメッセージを吐く:

% yash -c 'f() echo'
yash -c:1: syntax error: a function body must be a compound command
% posh -c 'f() echo'
posh: f: function definition must use compound command
%


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

504日前に更新/283 KB
担当:undef