【POSIX】UNIXプログラミング【BSD】 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
$ cat ./file.txt
foo
bar
buzz
$ yes aaa | head -n $(cat file.txt | wc -l) | paste -d '' - ./file.txt
aaafoo
aaabar
aaabuzz
かwww意味不明だなw
しかも file が標準出力の場合やりようがないという……
paste って同時に複数の標準出力無理だよな POSIX原理主義って保守?
Unix哲学という考え方は新しい部類に入るからリベラル? findコマンドってオプション各々の優先順序を丸括弧で指定できるじゃん。
その時にシェルにサブシェルだと解釈されないようにエスケープ記号で無効化する必要があるけれども,
一々エスケープ記号を付けるのが面倒なので,どうにかして一気に無効化したい。
そこで
$ find ~ "( -type f -type l ) -print"
とかやってみたが,当然引用符全体が一つのオプションとしてfindに渡されてエラー。
なにか案ありますかね。
やはり一々エスケープして,
$ find ~ \( -type f -type l \) -print
とかやらないといけないんですかね……。 あ,エスケープ記号じゃなくてエスケープ文字かも。
そこらへんの用語曖昧なので適宜無視して下さい。 >>106
サブシェルをサポートしていないシェルを使う。
なければ作る。それこそプログラマ。 yesってheadで切り出せるのか……今更知ったわw
^Cで止めないといけないのにどうしてheadで中断できるんだろうと思ったが、headがSIGINTを送ってるのかな? POSIXってCLIのUI/UXについては規定してないのかな?
例えば
Install? [Y/n]
っていうプロンプトをよくみかけるけど、
あれ大文字小文字の区別とか入力後にエンター押すか押さないかとか既定値はあるのかないのかとかが曖昧で嫌でさ。
どっかの団体が規格作ってくれてないかなぁ >>113
既定は一切ないよね
紳士協定すらもない
一旦過去をリセットすることをせず、かといって後方互換もない
混沌こそ*nixの理想 >>113
既定を右にするか左にするかだけでも話がまとまらないと思うので、誰も手をつけないと思う MakefileをPOSIX互換にしたいと思っているのですが、
installコマンドのよい代替コマンドはありますか?
というかかなり多くのMakefileがinstallコマンドを使っていて、
そうでないものはなにか特殊な (例えばGo関連ならgo installみたいな) コマンドになっていて
良い例が見付かりませんでした… >>116
autotoolsにinstall-shというシェルスクリプトがついてくるので、それを使えばいい。 帰結が、超有利なのは、皆さんご存知でしょうが
だからといって
過程の者を、あざ笑うなどという
愚
は、もういらないのです そして、それを考慮に入れた上での
共産に関しては、拒否
の選択を取ろうと思います
今はね 例えば我が
真理に向かう魂だとしても、
それを、世に公開せぬほうが
結果として、我自身が、得してしまう
それが、我に、かけられた、呪いでありましょう。 我が子を食らうサトゥルヌス
様に
我が展望を語るなどの
愚
は、もう、やめようと思います unix + Cの経験のために
大規模な回線キャリアの、サービスの追加を行い
実際には、店舗スタッフなどに、新規オプションに対する認知努力などの複雑さを与え
消費者に対して、押し付けさせる
社会悪を実装してしまっていた
などという
愚を
二度と行いません システムの意味が、社会の複雑性の縮減に向かうものなのか
十分に、考慮すべきであった MakefileってPOSIXの範囲内だと函数が一切合切使えないんだな
shell函数も使えないとなると厳しいなぁ https://www.cs.cmu.edu/~mihaib/kernighan-interview/
カーニハン(C言語の開発者、Unixの開発者)のインタビュー grepの-A/Bオプションの再現ってPOSIXの範囲内だとやっぱりsed使わないと厳しいのかな。 sedコマンドでファイルの先頭に行追加(ヘッダを追加)したいんですが
ググったら出てくるようなとこに書かれてる方法がAIXじゃ使えません
AIXでのやり方を教えてください AIXしらんけど
sed '1i\
foo
' hogefile
でだめなん? >>126
awkなら簡単だと思うけど、sedでできる自信がない。 >>128
ありがとうございます
リアル改行を挟むという発想が無かったです nprocコマンドってPOSIXの範囲で代替できないかね。
そもそも/proc以下がFHSでしか定義されてないから土台無理な話なのかなぁ……。 >>131
POSIXだと無理じゃないかなあ。
POSIXにこだわらなければ、
getconf _NPROCESSORS_ONLN
か、あるいは
getconf NPROCESSORS_ONLN
でとれるOSがわりと多いけど、とれないOSもあるしなあ。 愚痴というかいちゃもんに近いけど,POSIXユーティリティの殆どが「その機能を表わした名前」であるのに対して
awkという名前に違和感を覚える。
sed→Stream EDitor, cal→CALendar とか分かりやすいのにawkだけ「開発者の頭文字」という非合理的な命名をされたせいで
何の目的に使うのかよくわからない。
awkじゃなくて例えばexsed(EXtended SED)とか。 sedは普通のツールの範疇に入るけど(とはいえチューリング完全ではある)、
awk は完全にプログラミング言語だからな。
プログラミング言語の名前なんてそんなもんよ。 Linux と Mac のどちらでも動かしたいとか Macてbsdだっけ? あれはちゃんとしているの? MacってUNIX(TM)ではあるけど(ちゃんと許可も貰ってる)、別にPOSIX互換じゃないんじゃない?
bcとかはデフォで入ってなさそう。 POSIX互換、昔はシェルもtcshだったが10.3からbashになってる
POSIX互換だけど、Linux(GNU)ではないのでコマンドのオプションが違ってる
BSD系のコマンドはGNUにくらべて基本的に機能が少ない
homebrewなどのサードパーティ製のパッケージ管理ツールを使うと
GNU系のコマンドを追加導入することができる
POSIXであってLinuxではないので当然だけど
Linuxカーネルを必要とするDockerは仮想マシンを使って動かすしかない POSIXにはcsh関係ないし、DockerもLinuxカーネル前提じゃないだろ今は MacOSもWindowsもLinux仮想マシンを使うんだけど、
いつDockerがLinuxカーネル前提じゃなくなったの? >>141
POSIXに適合することを確認するtest suiteに合格しないと
UNIX(tm)は名乗れないというのに、いったいどこからこういう誤解が? >>144
AIXのDockerもLinux仮想マシンを動かすの?
まじで? >>146
いつAIXでDockerが動くようになったの?
それDockerクライアントじゃないの? 1. Dockerが動くのはLinuxだけ
2. AIXはLinuxではない
この二つから動く理由が他になければ動かないでしょうね
そして動く理由は一つも見つかってないので、動かない >>150
Linux の cgroups に依存してるから、じゃない?
FreeBSD の Linux エミュレータ以外で Dockerが
動いているという話は聞かないし。興味を持ってる人は
ある程度いるようだけど。 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
BRYP2 >>145
ttps://www.opengroup.org/openbrand/register/ >>153
そこの Learn More というリンクを辿ると、最初に
Only systems that are fully compliant and certified according to the Single UNIX Specification are qualified to use the UNIX® trademark.
って書かれてるわけで、
このページ見た上でPOSIXに適合しないと誤解したなら、
それはすなわち英語読めないのに勝手に誤解したってこと?
ちなみにGoogle翻訳でも
Single UNIX Specificationに従って完全に準拠し、認定されているシステムのみがUNIX®商標を使用する資格があります。
と正しく翻訳できてるので、Google翻訳の使い方も知らないってことになるが... >>154
Single UNIX Specificationって書いてあるけどPOSIXって書いてないじゃん
よしこれだ! >>155
その発想はなかった!
可能性としてはありうるか。
Single UNIX Specification とは何なのか調べよとは思うが... LinuxはUnixじゃないのに、なぜサブセット? C99のPOSIX仕様書(http://pubs.opengroup.org/onlinepubs/9699919799/utilities/c99.html)を見ると
-Wallや-pandemicや-O2などGCCやClangなど主要コンパイラに標準的に搭載されているオプションがありません。
これらは独自拡張なのでしょうか? つまり使うべきではないのでしょうか。 言語仕様はあくまで言語仕様であって、
オプションの規定はない。
コマンドライン版コンパイラが存在しなくても仕様上問題ないわけで。
-Wallや-pandemicはgcc拡張。
gcc以外でもclangでも使える。
Intel コンパイラでも -Wall は使えるし、
-pedantic は無視されるので指定して構わない。
それ以外のコンパイラだと存在しないことが多い。
とは言え特に -Wall は有用なので開発環境では使うし、
たとえば autoconf を使ってれば $GCC = yes で判定して
オプションに追加したりする。
-O2 の方は多くのコンパイラに存在する。
特に UNIX 上のコンパイラならまず存在すると思う。 >>161
ありがとうございます。
c99(1)はコマンドであってC99そのものを規定している訳ではないということですね。 今ってc99というコマンドがあるのか
直球でわかりやすいな >>159
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html#tag_20_76_13_09
もう解決してるっぽいけど,POSIX makeが解釈するMakefileのCFLAGS変数に
-O 1が「-O 1」が代入されている以上POSIXは-Oオプション程度は想定してるという認識でいいんじゃないかな。
もちろん最近のCコンパイラは-Wall,-pandemic,-O 2くらいはみんな持ってるだろうが。 $ gcc -pandemic
gcc: error: unrecognized command line option ‘-pandemic’; did you mean ‘-mandroid’? 私たち日本人の、日本国憲法を改正しましょう。
『憲法改正 国民投票法』、でググってみてください。 私たち日本人の、日本国憲法を改正しましょう。
『憲法改正 国民投票法』、でググってみてください。
拡散も含め、お願い致します。 私たち日本人の、日本国憲法を改正しましょう。
『憲法改正 国民投票法』、でググってみてください。
平 和は勝ち取るものです。拡散も含め、お願い致します。 LinuxはPOSIXに沿ってるから部品単位でUNIXと共通かも知れないがUNIXではないと
そのためにはまずUNIXの細かな規格のSingle UNIX Specificationを通せってことなのか
SUSの攻略に加えて大金払うんだろ?Appleがいくら払ったか知らんけど そう。LinuxもWindowsも、それ自身で信用できる存在になったんだよ
Appleとは違う 今のPOSIX標準化にはLinux関係者が関わっていて発言力もあるし、実際glibc独自機能がPOSIXに入ったりしてるよ。 まあPOSIXが大事だよね。
SUSという区切りはあまり意味ないと思う。 昔はともかく今やPOSIXとSUSって同一の規格だから、片方だけ意味ないって変よ。 >>178
今年の3月7日の回の議事録だと Red Hat の人間が参加してる。
ttps://www.mail-archive.com/austin-group-l@opengroup.org/msg03735.html
IBMの名前はないな。 >>179
あ、打ち間違い。
3月7日じゃなくて27日だった。 いや確かに最近そうなったけど、まだ独立性高いし社風も全然違うっしょ 20年前のLinuxブームのとき莫大な投資をしてLinuxの商用利用を進めたのはIBM。
LinuxとIBMの関係は昔から深いよ。IBMが投資しなかったら今のLinuxの地位はないよ。
だから犬厨はIBMとケンカしてくれたMSに対して足を向けて寝れない。はず。 いや、MSとIBMの下り。Linuxに何の関係があるのかと。 当時、MSとIBMがIBM互換機のOSを開発していた。
だけど、IBMのアホ要求の連続でゲイツがブチギレして独断でOSを開発した。それがNT。
MSは既に裏切ってるのにもかかわらず表面的にIBMと開発を続行してできたのがOS/2。
市場はMSの圧勝で終わって、発狂したIBMが担ぎ出したのがLinux。
他方、OS開発に莫大な投資をして大失敗したAppleが担ぎ出したのがおまえらのBSD。 IBMがLinuxを担いだ理由が間違っとる。
Microsoft対抗じゃないよ。
自社のハードウェア製品の種類があまりに多くて
おまけに全部互換性がないから
同じソフトウェアを走らせることができるようにするためでしょ。
つまりIBMがJavaを担いだ理由と同じ。 > 同じソフトウェアを走らせることができるようにするためでしょ。
当時のIBMの各部門はソフトの統一とかOSの統一とかそういう思想などなかった。
IBMがMSに要求してきたのは、既存ハードにOSを合わせろという要求。
ハードが固定フォントだがらOSも固定フォントにしろとか。日本の縦割り行政みたいなもの。で、ゲイツがキレた。
プライド捨ててあれこれやりだしたのは市場で大敗してから。 そのページにも以下の記述があるぞw
同じIBMのハードウェアを使っていても、
Intelベースのサーバーから、Unixサーバー、
さらにメインフレーム・コンピューターへと機種を
上げていくと、そのたびにユーザーはOSを変更しなければならず、
そのためのユーザー・ソフトウェアの変更やテストなど、
多大な労力がかかる。
これはIBMにとっても、決してよい状況ではない。
これを、LinuxによってすべてのIBMハードウェアをサポートすることにより、
解消できるようになったわけである。 >>187
>市場はMSの圧勝で終わって、発狂したIBMが担ぎ出したのがLinux。
MSの圧勝をどの時点で捉えるかによるけど、
5年から10年くらい時間が空いてるんだけども >>189
>当時のIBMの各部門はソフトの統一とかOSの統一とかそういう思想などなかった。
上から下までSAAで統一しようとしてる(してた)じゃん。 ハードの差をOSで統一したいだけなら、
IBMはLinuxじゃなくてもOS/2を展開しても良かったんだよ。AIXでも良かった。
でも既に両OSともWindowsNTにサーバ市場で大敗したんだから仕方がない。
人気のある対抗馬が必要だったんだ。 Linuxを担ぎ始めた頃だったら、AIXとWindowsNTはまだ市場がだいぶ違ってたころじゃないか?
まあ直に飲み込まれたのは歴史を知ってるからそう思うだけで。まだあの段階では
Linuxはともかくx86はここまで信頼を勝ち取るとは思えなかったけどなあ。
だからintelだってイタニウムを作ったのだろうし。 イノベーションのジレンマに書かれてるパターンそのままだから
x86の成功を予測してた人はいたと思う。
でもMicrosoft対抗って感じはまったくしなかったな。
当時も今もマーケットがかなり違うと思う。
Sun対抗ってなら当たってると思うが。 確かにUNIX市場だけで見ればSolarisはLinuxに食われたのだから、Sun対抗だったともとれるが、
Solaris相手ならAIXで戦えばよく、自社製品ではないLinuxを担ぎ出す理由はないな。それもコンピュータの巨人が。 >>197
>>190にもSun対抗って書いてあるぞw ■ このスレッドは過去ログ倉庫に格納されています