TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
【.cmd】 バッチファイルスクリプト %13 【.bat】
スレ立てるまでもない質問はここで 149匹目
本当に必要ものは人工知能ではなくて検索エンジン
師匠!1週間よろしくお願いするぞ!
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】
GARMIN社のGPSのプログラム
■特許庁新システムを作る■
【コメント】doxygen【コンソメ】
Java入門・初心者質問スレ Part.7
シェルスクリプト総合 その33

シェルスクリプト総合 その33


1 :2020/03/23 〜 最終レス :2020/06/14
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

シェルスクリプト総合 その32
https://mevius.2ch.sc/test/read.cgi/tech/1571929725/

2 :
・特記なき場合、POSIX準拠シェルが既定です(古きBourneシェルはほぼ絶滅しました)
 POSIX準拠シェルは(d)ash, bash, zsh, (m)ksh, yash, posh, (p)boshです
 参考 https://unix.stackexchange.com/questions/145522/
 特定のシェルの専用機能に依存する場合は明示しましょう(特に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に準拠しましょう
 仕様 http://pubs.opengroup.org/onlinepubs/9699919799/
 参考 https://en.wikipedia.org/wiki/POSIX
・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 http://heirloom.sourceforge.net/sh.html
  Schily Bourne Shell: obosh http://schilytools.sourceforge.net/bosh.html
 歴史的資料 https://www.in-ulm.de/~mascheck/
・csh/tcshでのシェルスクリプトは*まったく推奨しません*
  参考 http://www.speech-lab.org/~hiroki/csh-whynot.euc
・Linux/UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。Manページや各種リンクを見ましょう
 aproposやman -kでそれらしい単語による簡単な検索もできます
・ワイルドカード・パターンは正規表現ではありません。正規表現の話題はスレ違い(正規表現スレへ)
・シェル芸はシェルスクリプトとは異なります
・シェルスクリプトのことをシェルってゆうな

3 :
関連スレ

【Bash】Windows Subsystem for Linux【WSL】7
https://mao.2ch.sc/test/read.cgi/linux/1579395785/l50

Bashでプログラミング [転載禁止](c)2ch.sc
https://mao.2ch.sc/test/read.cgi/linux/1443885102/

シェルスクリプト総合 その28
https://mevius.2ch.sc/test/read.cgi/unix/1533154936/

zsh その7
https://mevius.2ch.sc/test/read.cgi/unix/1337844883/

【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.sc
https://mevius.2ch.sc/test/read.cgi/unix/1443103705/

4 :
タコシェルが一番好きです。なぜならおいしいから。

5 :
>>1 乙
ところで早速の質問なんだけど,GNU Bashの履歴展開に関して,
<<. cat |
&#
.
cat
↑このコマンドを実行した時に,履歴展開「!$」の値が「&」になるのと,
<<. cat |
#&
.
cat
↑このコマンドを実行した時に,履歴展開「!$」の値が「|」になるのって,
バグ?仕様?
ちなみに履歴展開「!!」の値は正常(つまり直前のコマンドライン全体に復元される)だし,
ヒアドキュメントの内容が&xやx&だったりした場合は
期待通りの挙動(すなわち最後の引数,この場合は「cat」)になる。

6 :
catコマンドがあるのにdogコマンドってないんですか?
気になります。

7 :
tac コマンドがあるよ

8 :
>>6
wachdog

9 :
t忘れた

10 :
私は可愛い猫と女の子を見ていたいです。

I want to watch girl with cute cat.

11 :
>>10
短い文なのに英語力の低さがダダ漏れ

12 :
touchやcatみたいに本来とは違う用途で使われるコマンドって他にもあるんだろうか
mvでリネームも最初は不可解だったが

13 :
>>12
どんな使い方だ?

14 :
触るだけだったのに作ってしまう
猫だったのに

15 :
結合結果を出力するものだが単独ファイルの中身を表示するのに使うとか

16 :
touchは?

17 :
タッチは触るツールやろ

18 :
>>5
これ分かる方いらっしゃいますか。

19 :
履歴展開はインタラクティブシェルが行う
シェルスクリプト実行前の処理だと思ってるので興味がないw

20 :
touchは空ファイルも作れるってだけで本来の用途はタイムスタンプの変更でしょ
catだって中身の連結が本来の用途なんだから
だけど実際はそれ以外でよく使うってお話

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

22 :
新しいファイルを作るなら
:>file
コマンド呼び出ししないから最短で最速!

23 :
touchに代わるいい名前ないかね?

24 :
別に違和感とか全くないな
open(2)で無かったら作るというのがあるし

25 :
「touchがよくない名前」って考えてるあたり,
touchの*本来の*目的が「ファイルを新規作成すること」だと思ってそう。

26 :
$ man touch
TOUCH(1) User Commands TOUCH(1)
NAME
touch - change file timestamps

27 :
唾を付けておくという表現が英語にあれば
spitだろう。

28 :
お願いtouch touch ここにtouch

29 :
>>22
>file

30 :
>>29
それPOSIX準拠?

31 :
算術展開 $(()) って、代入文が使えるんだな。
ループ廻すときに,i=$((i + 1))っていう増分と$iの値の判定を別々にやってたのが,
$((i += 1))という値を判定するだけで済むとは。

32 :
>>31
POSIXでどこまで決まってるか知らんけど、
ふる〜いdashでは失敗する

33 :
あと $((i = 1)) とか $((i++)) とかも使えるよ
注意点としては

i=0
while [ "$i" -lt 100 ]; do は iは0から始まるが
while [ $((i+=)) -lt 100 ]; do だとiは1からになるって所だな

34 :
>>33
$((i++))という書き方は,少なくともPOSIXでは保証されてない。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_04

35 :
>>34
本当に?
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html#tag_17_01_02_01

36 :
>>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 :
あるけど?
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html#tag_17_01_02_01
Operation
postfix ++
postfix --

38 :
嘘つくのは犯罪やぞ

39 :
>>37

++と--はシェルの算術展開では必須じゃないって書かれてあんのが読めねーの?

これだから文盲と会話するのは疲れるんだよ。
バカの一つ覚えみてーに同じURL貼ってさぁ。

40 :
馬鹿を相手にお疲れ様ですw

41 :
>>39
間違っちゃいないが >>35 の書き込みに対する反論を放棄(つまり
反論を潰しに行っていない/無視)して自分の主張を繰り返した点が
指示/説明下手。

結果 >>35 の再プッシュを食らうという互いに後味の悪い手戻りが
発生している。

42 :
ちなみに
$((i+=1))って書き方はPOSIXでは保証されてる……筈だけど,
↑上にも書き込んでた人がいるように,一部シェルで動かないことがあるので使わんほうがいい。

43 :
>>41
読めなさすぎだろ。>>36はお前も読めないのかよ

44 :
>>34を提示
それに対して>>35を提示
それに対して>>35があろうが>>34で提示したのに書いてあるだろとご丁寧にその部分を抜粋
と読めないのか??なんで>>41なんてしゃしゃり出るのか不思議

45 :
>>43
ここもそうだ
お前は俺の「間違っちゃいないが」を全く無視して「お前も読めてないのかよ」
と返してしまっている
読めてないのはお前じゃないのか?
よくある「自己紹介乙」状態だわ

46 :
>反論を潰しに行っていない/無視)して自分の主張を繰り返した点
>指示/説明下手
ここだよ。お前の主題はここだろうが、そんな前置きではなく

47 :
この会話のならなさはなんとかの一つ覚えのようにURL貼った本人ではないか?w

48 :
35 のレスが「本当に?」だけで URL がなかった場合の 36 の返は申し分ないよ
逆に URL だけだったら 36 のような返しはしなかっただろう?
35 のURL 側を潰さなかった/35 の URLをあたかも無視したような解が下手だと言っている

49 :
なに言ってるのこのシトw

50 :
いつもレスバに負けるから ID 変えて書き込む癖が抜けてないようですね

51 :
>>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

52 :
書いてある内容は正しいって一番最初にいってるんでそこ何度説明されてもね
平行線みたいなんでやめるね

53 :
平行線も何もあんた変な論は変な論というデバッグwし終えたてとこかな
>>36はちゃんとフォローしてる、疑問疑義を否定している、>>41なんてイチャモンもいいとこだったということで
てかさ、ちゃんと>>34を読んだらあんなURL張るはずもないもんだな、そこのURL先で Arithmetic Precision and Operations が>>35のURLのリンクじゃん
謎だなw

54 :
ガガイ

55 :
エイプリールフールはまだだぞ

56 :
Windows 10, WSL, Ubuntu 18.04 に、Ruby のバージョンマネージャーのrbenv を、
rbenv-installer を使ってインストールしたのですが、
https://github.com/rbenv/rbenv-installer/blob/master/bin/rbenv-installer

これの34行目について、
rbenv="$(command -v rbenv ~/.rbenv/bin/rbenv | head -1)"

これを、bash スクリプト内に書いて、スクリプトを実行すると、
xxx="$(command -v rbenv)"

xxx は、~/.rbenv/bin/rbenv とパスが入り、

これを端末で直接実行すると、
xxx は、rbenv となって、パスが入らない!

bash スクリプト内に書いて、それを実行した時と、
端末に直接入力した時では、結果が異なってしまう!

57 :
>>56
あのさ、シェルで変数Aに123って代入して
別のプログラム実行したら、変数Aに123が入ってなかった!
みたいな間抜けなレスは要らないから

58 :
>>56
command -V rbenv
type rbenv
してみ、端末で直接実行時に
最優先実行対象を返すんだからその結果で何もおかしなことはないよ

59 :
端末で、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
}

60 :
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
以下省略するが読め
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html

61 :
ちゃんとリンク,引用までしてあげて親切だなぁ。
黙ってNGすりゃいいのに。

62 :
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ipcs.html
ipcsコマンドとかのXSI通信系コマンドを使ったことある人いる?
どういう場面で使ったのか知りたい。

63 :
IPC使ったことがないとしか思えない。XSIに限らず他のIPCすらも
IPC使ったことがあるならそんなの聞かないだろう

64 :
使ったことがないから聞いてるんだろうに使ったことがないとしか思えないとはとんちかな

65 :
無知だからしょうがないんだろうがとんちんかんすぎ
シェルスクリプトとは関係ない、IPC使う場合の場面に決まってるだろってことだよ

66 :
誰かawkの互換性についてまとめてる人いない?
どれだけの実装があって、POSIXにどれだけちゃんと準拠してるとのとか
awkはどのLinuxにも入ってるって前提でいいのか?とか

67 :
まずは隗より始めよ

68 :
脱ケージ活動 ワロタw
(ケージ=鳥かご、おり、捕虜収容所)
まあそうなるよね。シェルスクリプト(笑)
ハンズラボとユニケージのあゆみ
https://www.hands-lab.com/tech/entry/5600.html
突然ですが、ユニケージ開発手法というのものをご存知でしょうか?
→ 詳しくは弊社の以下記事にて説明しております。
ハンズラボが採用しているユニケージという謎テクノロジーについて 第1回
弊社でのユニケージの現在
そんなユニケージですが現在のハンズラボでは技術的負債としての認識が強いです。
ユニケージからの脱却、通称脱ケージ活動は現在社を上げた取り組みの一つです。
負債の解消に向けて、様々な取り組みを実施しています。

69 :
>>62
共有メモリとかセマフォとかメッセージキューとかの確認で使ったことあるよ。そういうのを使うプログラムのデバッグ中とか動作確認でな。

70 :
>>68
プレゼンテーションみてみ、主にはシェルスクリプトだからというのではないから
シェルスクリプトはど素人にとっつきやすいのか?

71 :
>>70
>主にはシェルスクリプトだからというのではないから

は?

72 :
プレゼンテーションみてみ「素人が作った」だから

73 :
juniとかsm1,sm2,sm3,sm4,sm5(5までかな?w)、ハンズラボ内製かと思ったら、ユニケージ元が提供してるヤツかw
ダメすぎに見えるな見えるだろうな、他の言語メンテを考えて開発してるのから見たら

74 :
いや、プレゼンテーションにある、sm2,sm4,sm5だけなのか
1,3が欠番、2/4/5にちょっとは深い意味があるのか?
他でも命名がある意味無茶苦茶だなあ、仕事として使おうとは全く思えない

75 :
>>70
Windows以前はMS-DOSが使われていた。
GUIなんてものはなく、コマンドプロンプトと
バッチファイルを触るのがパソコンを使う第一歩だった

これはLinuxにも当てはまる。Linuxを使う第一歩は
シェルスクリプトを触ること。GUIだけならWindowsを使えばいい。
Linuxを使うという第一歩はシェルスクリプトを触ることになる。

その第一歩の知識だけで仕事をした結果。
シェルスクリプトが悪いのではなく
第一歩の知識だけで仕事をした結果
知識を得る努力をせずに、今の知識で努力した結果

結局の所知識不足なので何しても破綻する

76 :
日本語不自由すぎやろw
言語関係なく組織の人的負債になるタイプ

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

78 :
>>69
ありがとう。

79 :
>>77
> そんなこと言ってるからLinuxが普及しないんだよw

そのとおりだと思うが?正確には俺が言ったから普及しないんじゃなくくて
Linuxがそういう状態であるから普及しない。俺はそのことを言っただけ。
俺が言うのをやめたところで、Linuxが改善されないと普及しないよw

更に言うならLinuxを普及させたければ、ソフトウェアするんじゃなくて
いい営業部隊を雇うことだよ。雇う金を出せないなら永遠に無理ってことだけどな。

オープンソースなんだから営業を雇う金なんて集まらないって言うけど、
そもそもオープンソースにしたのは誰かに言われたのではなく
自分で決めたんだろうから、文句言うなって話だがな

80 :
LinuxはPCのデスクトップ環境では伸びなかったがその他では使われまくってるよな。
PCと似たような使われ方もするAndroidのベースOSがLinuxだし。もうこれだけでも恐ろしいぐらいの普及率だ。
その他薄型テレビだのネットワーク機器だのそこらじゅうで使われている。

81 :
Linuxが普及しないのはオープンソースを言い訳に使うから。byチコ

82 :
Linux(UNIX)のコマンドとバッチファイルのコマンドは
どちらもCLIだがスタイルがぜんぜん違う
例えば、echoを引数無しで実行すると
ECHO は <ON> です。と表示される。
もしバッチファイルのコマンドのスタイルが
Linux(UNIX)に混じったらとても使いづらくなるだろう
一貫性ある形で統一することは重要。Linux(UNIX)は
GUIでこの統一に失敗した。

83 :
じじいの知識自慢

84 :
GUI環境を好みで選べるのが良いところじゃん
GNOME
KDE
Xfce
LXQT
MATE
等々

85 :
良いところがあれば、世界で一位になれる。

これはマクドナルドに味で勝負した高級ハンバーガー店が
惨敗するまでの悲しいストーリーである。

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

87 :
意訳:俺の好みじゃない。Windowsがいちばん

88 :
ただWindowsを使ってて知ってることが多いってだけだな
単にそれで基準がWindows
それ以上手がかかってもダメだし手がかけられないとダメ、
Windowsで知ったことの範囲でWindowsの手順でできなきゃダメってだけ

89 :
Linuxと言うかオープンソース界隈でいやなのは
先駆者が先輩面したり初心者を馬鹿にして
さも自分がすごいんだと言いたげなところかなあ
これと対極をなすのがスマホとかなんだけど
知り合いの若いのにアプリの使い方聞いてみ?
親切に教えてくれるぞ
要するに俺はLinuxを知ってる!
オープンソースを知ってる!
でも誰も褒めてくれないから
新参者がきたら牢名主のように
小言を言い続けてやると思ってそうなところ

90 :
まあ手に入れた数少ないスキルだからしゃーないか

91 :
俺にLinuxや他のOSSを教えてくれた人はそんな人じゃなかったな。
懇切丁寧に教育してくれた。

寧ろ大学やらでWindowsやExcelの使い方を指導してた教員のほうが態度が酷かった。

まぁ,どういう人に恵まれるかで,その「教えた対象」の評価すら変わるってのは,ちょっと非論理的だけど,
かく言う俺も,多分上で話した教員のせいで,Microsoft製品を色眼鏡で見てしまうきらいがある。

92 :
>>88
> ただWindowsを使ってて知ってることが多いってだけだな

だから営業部隊の話につながる。
使ってもらうにはどうしたらいいか?答えは宣伝だよ。
パソコン屋に置いてもらうネットやテレビで宣伝する。

いずれも金がかかる方法だ。だからオープンソースいう
選択をした時点で積んでいるんだよ。自分で自ら王手されに行った。
いや王手がだめって言ってるんじゃないよ。
相手(利用者)にとってはいい捕虜だから

93 :
Linuxが普及してない世界線でシェルスクリプト書いてるやつもおるんやなw

94 :
>>93
世界=俺の知っている世界、または
世界=俺の見たい世界
って奴がたまにいるからね

95 :
変な位置で改行するやつ多いな
みんな同じ環境で見てると思ってるんだろうな

96 :
同じ環境で見てるとは思ってないが、
最低横80文字(笑)ぐらいで見てると思ってる
スマホぐらいだろ?そのスマホで長い文字が読みづらいなら
それはサイトの仕様が悪いだけ

97 :
マックをLinuxに加えれば結構シェアが取れていると思うぞ。

98 :
MacでLinux用バイナリがそのまま動かないなら、Linuxとは認められません

99 :
なにを主張したいのか
なにを否定したいのか
シェルスクリプトと全然関係ないことには変わりなさそう

100 :
サーバーOSシェアはLinuxがダントツだからな
WSLの環境作るのも楽になったしWindowsは単なるコンテナになった


100〜のスレッドの続きを読む
【Electron】ハイブリッドアプリ開発総合【Cordova】
VisualBasic6.0 対 VisualBasic .NET 2003
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
ほぼ初心者プログラマでするべき事がわからない
【O3D】HTML5用 3D API WebGL 【Canvas:3D】
MFC vs .NET
Visual Studio 2012 Part8
なぜ「staticおじさん」は叩かれたのか?
ハッシュ使うのやめてクラスにしましょう
プログラミングを勉強したいのだが
--------------------
【ワッチョイ】NHKから国民を守る党218【全レス将軍お断り】
【TOYOTA】MorphyOne440【DOGサークル】
第五人格実況者&ランカースレPart70【identityV】
BiSH 清掃109回目
【コイ】鯉釣り総合スレ22【Carp】
正義マン「あの客テイクアウトっていったのにイートインしてる脱税だ!」
牟田口廉也中将の魅力 [778992118]
【タガタメ】 誰ガ為のアルケミスト Part.1162 【糞詐欺赤信号運営】
機動戦士ガンダム バトルオペレーション2#20
新宿御苑前のおいしいお店希望 part.5
悪質なブロガーをANA、JALなどに通報しよう!
【Juice=Juice】段原瑠々応援スレPart66【だんばらん、るるちゃん、るーちゃん】
ヘッドランプについて語ろう 59灯目
【決算速報】カプコン2020年3月期Q1決算 営業利益50.8%増 過去最高益をまたも更新
こんなノエル・ギャラガーは嫌だ
火曜JUNK 爆笑問題カーボーイ part240
名古屋 こいずみ形成クリニック
/cV^_V^Vトッリ冷えてますか〜!!???????(・8・)?今年は暖冬ちゅんよ
【39歳】おっさんヲチ専用スレ3【童貞】
【RE/100】 REBORN-ONE HUNDRED総合スレ 41
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼