Blank?=Falseスマートフォン用の表示で見るBlank?=False「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々Blank?=Falseこの広告は、90日以上更新していないブログに表示しています。CentOS7LinuxのコマンドをMacOSXでやってみたところ、そのままでは動かない、といことがありました。LinuxのコマンドがなぜMacOSXで動かないのか?をちょっと調べてみました。やりたかったことMacOSXだと動かなかったなぜ動かなかったのかLinuxとMacOSXは実装が違うやりたかったこと特定の拡張子のファイルを、指定したフォルダに移動する、ということがやりたかったのです。テキストファイルをfooディレクトリに移動する、という例で説明すると、下のようなコマンドになります。~/fooこのコマンドは以下の記事を参考にさせていただきました。hiropo.co.ukためしにCentOSでやってみたらちゃんと出来たので、MacOSXでもできるかな、と思ったんです。MacOSXだと動かなかったこれを、MacOSXでやろうとしたところ、以下のようなエラーが発生しました。次に大文字の-Iをオプション指定すると、また別のエラーが出ます。directory今度は、{}はファイルでもないしディレクトリでもないよ、というエラーです。ここで、OSXだと動かないコマンド、ということに気づきました。動かなかったのか結論から言えば、MacOSXとLinuxでは、xargsコマンドのオプションが多少異なっていた、というのが原因でした。Linuxのxargsコマンドの展開オプションは、-iと-Iの2つですが、MacOSXの場合は-Iと-Jでした。Linuxの-iオプションは展開文字を指定しなければが{}となりますが、MacOSXの-Iオプションの場合、回数制限付きの展開オプションとなります。※MacOSXの-Iオプションは挙動が少しよくわからないところがあります...。今回、Linuxの-iコマンドに相当するものはMacOSXにはないので、-Iオプションに相当する-Jオプションと展開文字の指定が必要だった、というわけです。LinuxとMacOSXは実装が違うLinuxのコマンドは、GNU版、そしてMacOSXのコマンドはFreeBSD版です。同じようなコマンドに見えても、開発元が違うんですね。開発元を確認する正しい方法がわからなかったので、manコマンドでオンラインマニュアルを見て確認しました。BSDの子孫だということ、そしてFreeBSD5の環境を実装していることによるものです。@ITBSDとLinux、何が違うの?同じUnixでしょ?と疑問を持たれる方もおられるかもしれません。これは昔、私もそう思ったことがあります。そもそも、Unixというのは今は特定のOSではなく、かって存在したUnixOSの設計哲学などを継承したOSを指す言葉となっています。設計哲学に準拠されていればUnix系OSと呼ばれることになっており、カーネルの実装が全く異なっていても、Unixと言われるんですね。いったことになっているので、似たような操作感でも微妙にコマンドの動きが異なる、ということはよくあることです。いうOSの歴史を勉強するのも結構面白いので、もし興味を持たれたら色々調べてみると良いと思います。OSを有効活用するアプリケーションが作れるようになります。いうわけで、Linuxで動くコマンドがMacOSXだと動かない、というのは普通に有ることです。MacOSXはMacOSXのコマンドでやらなきゃな、ということに気付かさた日でした。機会があればFreeBSDもさわってみようかな。Unixをより知りたいと思った方は以下の書籍がおすすめです。22:00LinuxのコマンドはMacOSXでそのまま動くとは限らないTweet広告を非表示にする関連記事2017-01-04Macに.NetCoreをインストールしてもdotnetコマンドが使えない時は先日、CentOSでASP.netを動かす記事を書きました。新年あけましておめでとうございます。その2以前、こんな記事を書きました。stonebeach-dakar.hatenablog....2016-07-13CentOS7のVNCサーバーが動かないこの記事は色々と間違っています。反省として残してあります。»Profile某製造業の社内Sler。今のお仕事のメインはAccessとVBA。元パッケージソフト開発者。VBA、そしてRDBやNoSQLを組み合わせたアプリケーション開発を得意としています。福岡県、もしくは熊本県へIターン転職に向けて、DB/NoSQLの業務に関われる会社を探しています。レベル1取得しましたリファクタリングの帽子をかぶるということ勉強は大変だが役に立つCUIなCentOS7にcinnamonを導入するLinuxのコマンドはMacOSXでそのまま動くとは限らない月別アーカイブTwitterGooglePocketはてなブログをはじめよう!stonebeach-dakarさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。