• ベストアンサー

LinuxとMacのコマンドのオプションの違い

LinuxとMacのターミナルコマンドのオプションの違いについて質問があります。 例えば、lsコマンドを用いる場合、Linuxでは 「ls -l /」と「ls / -l 」は同じ動作をしますが、Macでは、後者(オプションを後ろにつける)と動作しません。 同様にrmコマンドの-rなども後ろにつけると動作しません。 この違いは何の違いから生じるものなのでしょうか? ターミナル?コマンド?shell?OS? また、macで動作させる方法はあるのでしょうか? よろしくお願いいたします。 LinuxはUbuntu16.04、MacはMojaveです。 シェルは共にbashです。

質問者が選んだベストアンサー

  • ベストアンサー
  • sat000
  • ベストアンサー率40% (324/808)
回答No.3

MacはMach OSでBSD系、LinuxはLinus Torvalds氏が独自に開発したOSですが、作法はSystem V系です。そして、どちらの系列であっても、コマンドの基本は、 コマンド {オプション} 引数 の並びで書くのが基本です。従って、あなたが書かれたlsコマンドの場合、ls -l / と書くのが通常です。そうではない並びで書いて、言うことをきかないというのは、まあそうでしょうね、ということです。

choko343
質問者

お礼

なるほど、linuxが融通してくれていたのですね。 これからはオプションを前につけるように心がけたいと思います。 ありがとうございました。

その他の回答 (2)

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.2

macOSの基本コマンドラインツールはFreeBSD由来です。 つまりGNUのツールではなくBSDからの継承です。 https://github.com/freebsd/freebsd/blob/master/bin/ls/ls.c LinuxディストリビューションはGNUツールを使っているのが一般的です。 https://github.com/wertarbyte/coreutils/blob/master/src/ls.c

choko343
質問者

お礼

ありがとうございました。

  • hiodraiu
  • ベストアンサー率15% (448/2821)
回答No.1

パラメータの処理手順が違うのだろうってのは、容易に想像できます。ソースを見ていないので、あくまで想像です。

choko343
質問者

お礼

ありがとうございました。

関連するQ&A

  • Linux の shell プログラミングについて

    すみません、どなたがご存じでしたら教えてください。 Linux の shell プログラミングですが、 実行するコマンドをそのまま表示する良い方法が無いでしょうか? 現在は実行するコマンドをechoで書いています。 たとえば次のような感じです。 #!/bin/bash var1=/etc echo 'ls -l $var1 | wc -l' ls -l $var1 | wc -l 結果 ls -l $var1 | wc -l 205 でも(echoで)同じ内容を2行書きたくないので いろいろ調べて次のようにしてみました。 #!/bin/bash var1=/etc set -x ls -l $var1 | wc -l set +x 結果は + ls -l /etc + wc -l 205 + set +x 思ったようになりませんでした。 他に良い方法が何かありますでしょうか? よろしくお願いいたします。

  • 環境を区別して、動作を分岐させる方法 シェルスクリプト

    bashのシェルスクリプトで、Windows(cygwin)とLinuxの環境を区別して、動作を分岐させる方法が知りたいです。 #!/bin/bash #Windows(cygwin)の場合 ls win/ #linuxの場合 ls linux/ #freebsdの場合 ls freebsd/ #MacOSXの場合 ls mac/

  • Linuxのコマンドの抑止方法

    Linuxである特定のユーザだけLinuxの標準のコマンド(cd,mv,ls などなど)の使用を抑止させ、特定のシェルスクリプト10個くらいのみしか使用できなくするにはどうしたらよいでしょうか?

  • lsコマンドのオプションについて

    Linuxのlsコマンドのオプションについて質問です。 以下のオプションの意味が良く分かりません。具体的にどういうことなのでしょうか。 また、実際の現場では良く使われるオプションですか? -F:タイプ識別子 (*/=>@| のうちの一つ) を付けて出力する

  • LinuxのtopコマンドでLoad Avgの行のみをテキスト出力方法

    LinuxのtopコマンドでLoad Avgの行のみをテキスト出力方法はありますか? 環境はMac miniで カーネルはDarwin Kernel Version 10.4.0 です。 FedoraやUbuntuなどとはコマンドのオプションや表示のされ方が違うみたいなので、 top -n 1 でコマンドを終わらせることが出来ず困っています。 他のLinuxでは top -n 1 | grep Cpu >> output.txt のようにしてCPUの状態を残すようなシェルを使ってCPUの状態をログ化していました。 ご教示願います。

  • linuxのfor文についてです。

    linuxのfor文(C言語風)を利用して/var/log/httpd/にあるaccess.logのファイルのうち130301~130309のものをls -lで情報を表示したいです。 ここでbashのfor文を使って最後の1文字だけを変化させながらls -lを9回実行するシェルスクリプトを作りたいのですがどのように書いたら良いのかわかりません。 どなたか教えていただけないでしょうか。

  • LinuxのShellの仕様について

    こんにちは。 現在、WindowsVistaで、CygwinのBashを使っています。 そこで、LinuxのShellの仕様がどのようになっているのかを、詳しく知りたいと考えています。 具体的に知りたいのは、 「LinuxのShell、はコマンドラインをどのような順序で、どのように解釈し、処理しているのか?」 という事です。 Windowsでは、まず、コマンドプロンプトがコマンドラインを処理し、 処理された後のコマンドライン引数を、各コマンドが受け取るようになっています。 これはLinuxのShellでも同じだと思うのですが、例えば、 「コマンドプロンプトはワイルドカードを展開せず、ワイルドカードは各コマンドが処理している。」 といったような違いが見られます。 説明して下さるのが面倒だとお考えの場合は、役に立つサイトのURLだけでも教えて頂けると 大変助かります。 では、よろしくお願い致します。

  • Linuxのtarコマンドについて

    Linuxのtarコマンドについてわかる方がいれば教えてほしいです。 (tarコマンドというよりはLinuxの仕様かもしれません) Linuxで以下①パターンと②パターンでコマンドを実行したときに 指定の仕方でtarファイルの作成されるディレクトリが違うのですが なぜでしょうか。 Linux初心者なので詳しく教えていただけると助かります。 共通(前準備 (#はプロンプトです)) # DIR=/tmp/hoge/2021 # ls -l ${DIR} ~ test1.txt ~ test2.txt ~ test3.txt # cd ${DIR} ①パターン # tar -cvf ${DIR}.tar ./* (アスタリスクです) # ls -l /tmp/hoge ~ 2021.tar ⇒/tmp/hoge配下にtarができる ②パターン # tar -cvf 2021.tar ./* (アスタリスクです) # ls -l /tmp/hoge ~ 2021.tar ⇒/tmp/hoge/2021配下にtarができる

  • Macのターミナルコマンドを教えて!

    Mac歴約1週間のAndroidアプリ開発初心者です。 Androidのtoolsのパスを通すところで今苦労しています。 ターミナルで.bash_profileをvi .bash_profileで編集しようとすると、変なのが出て、編集できません。 なので、一回作った.bash_profileを消して、もう一度作り直そうと思っているのですが、削除のコマンドがわかりません。 どなたか教えていただけませんか? よろしくお願いします。 追記 vi .bash_profileで出てきた内容はこのコンピュータの個人情報的なのかもしれないので、申し訳ございませんが、お見せすることができません。 申し訳ございません。 ではよろしくお願いします。

  • Linuxのシェル(sh,bash等)について

    Linux上でコマンドを実行するとき、その窓口となるものが、シェル(sh,bash)という認識です。 つまり、 (1)CUI環境でLinuxを操作する上で、シェル以外でコマンドを実行する事はありうるのか? (2)Windowsのコマンドプロンプトも一種のシェルと言えるか 以上、2点についてお教え頂きたいです。 宜しくお願いします。