Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

UNIX(Linux)
入門編

  1. UNIX(Linux)とは
  2. ディストリビューションとは
  3. CentOSとMacOSとCUIについて
  4. 仮想化ソフトウェアを使ったCentOSのインストールとMacOSのCUI環境について
  5. ログインとrootユーザーとシャットダウン等について
  6. コマンドの構造と注意点について
  7. ファイルシステムとカレントディレクトリの移動と表示(cdとpwd)について
  8. 各主要ディレクトリの解説とディレクトリ等の内容表示(ls)について
  9. ちょっと高度なディレクトリの移動(cd)とパスについて
  10. 『ls』コマンドの応用(1)とドットファイルについて
  11. 『ls』コマンドの応用(2)
  12. タブキーを使った入力補完について
  13. ディレクトリの作成方法(mkdir)について
  14. ファイルの簡易作成(touch)とファイルについて
  15. 標準入出力とリダイレクション(>と>>)を使ったファイル生成とechoとcatについて
  1. ファイルとディレクトリの削除(rm)について
  2. ファイルとディレクトリのコピー(cp)について
  3. ファイルとディレクトリの移動と名前変更(mv)について
  4. viエディタとは
  5. viの基本的な使い方(1)
  6. viの基本的な使い方(2)
  7. ターミナル(sshとTera Term)を使ったリモート操作について
  8. ソフトウェアのインストール方法(yumとパッケージ管理ツール)について
  9. ユーザーの概要と確認と追加と切り替え(adduserとsu)について
  10. ユーザーのパスワードと削除と更新と管理者権限での実行(passwdとuserdelとusermodとsudo)について
  11. グループの概要と確認方法(groups)について
  12. グループの追加と削除と設定変更(groupaddとgroupdelとgroupmod)とユーザー追加方法について
  13. パーミッション(権限)について
  14. パーミッションの設定方法(chmodとchown)について
  1. トップページ
  2. UNIX(Linux)入門編 - コマンドの構造と注意点について

コマンドの構造と注意点について

みなさまどうも。

続きましてUNIX系OSのコマンドの仕組みというか構造みたいなやーつとちょっとした注意点についてやっていきましょう。

まず前回紹介したPCの電源を切るコマンド『shutdown -h now』がありましたがこれはどういった構成になっているのかというとこういった構成になっています。日本語で書いてみました。

コマンド名 オプション(複数可) 引数(複数可)

このように『コマンド』などを記述した後に半角スペースを区切り文字として『オプション』とか『引数』(ひきすう)を指定しつつ実行するような形になります。各部分についてそれぞれみていきましょう。

まず『コマンド名』って部分ですね。これはその名の通り実行したいコマンドを書けばOKで今回の場合は『shutdown』が該当します。

これは複数来る事は滅多にないので最初に打ち込む単語はコマンド名だなってイメージを持ってしまってOKです。

次に『オプション』についてですが『オプション』を指定したい場合は『shutdown -h now』の『-h』のように頭に『-』を置くのが一般的な形式となっています。さらに頭に『-』では無く『--』を付ける形式になっているコマンドも多いのでこれも覚えておいて下さい。

そんでもって『オプション』は複数指定できるようになっている場合が多いのでそこも注目ですね。

そして最後の『引数』ですが、これは「処理を行うファイルを指定したり」とか「移動先を指定したり」とかそういう使われ方をするものになり、イメージとしては「処理を行う対象や目的を指定する」というような感じでOKかなと思います。英語文法で言うと「目的格」みたいな感じですかね。あと『引数』は「いんすう」では無く「ひきすう」と読みますのでそこもちょいとご注意です。

この『オプション』と『引数』についてはUNIXをいじっていくうちに自然と把握できるものなのでこの時点で特別意識する必要はありません。よく分からんくても次に進んでしまってOKです。

そして何かコマンドを実行させる際の『コマンド名』は必須となりますが『オプション』と『引数』は必須ではございません。

例えば前回解説したPCの電源を切る『poweroff』ってコマンドありましたよね。あれが『オプション』も『引数』も無いコマンドとなりますので「こんな感じなんだなー」ってイメージを持つと良いかもです。

ただちょっと注意点となりますが、これらのことは「コマンドを作る(プログラムを作る)際に絶対に守らないといけないかと言われると全くそんな事はない」ので気をつけて下さい。

この部分はコマンド(ソフトウェア)を作るプログラマーさんが好きなように構成出来る部分なので『オプション』だけど『-』を付けないようにしてもOKだし『_』を付けるようにするとしてもOKだし〜って感じで好きなように出来ちゃいます。

まあコマンドを0からプログラミングするときに上記のお作法を守らず作る必要性はまず無いのでほぼ上記のルールが採用されてますが念のため覚えておいて下さい。

そしてちょっとした小テクみたいなものですが『オプション』は複数をまとめて指定できる仕組みになっているものが多いのでそれも軽く紹介しておきます。

今現在のディレクトリの中身を出力出来る『ls』コマンドという子が居るのですが、この『ls』コマンドは「隠しファイルとかも全て表示する」という機能を持った『a』オプション、中身を詳細出力してくれる『l』オプションが用意されています。『ls』コマンドの『オプション』の頭に付ける接頭詞は『-』です。

ということはこれまでのことを鑑みるに『a』と『l』をオプションとして『ls』コマンドを実行させるとなるとこういう感じになりそうですよね。

[root@localhost ~]# ~]$ ls -a -l

これでも問題なく実行出来て大正解なのですが実は『オプション』は以下のようにまとめることができます。

[root@localhost ~]# ~]$ ls -al

『-a -l』ではなく『-al』となっていますね。このように「『-』をぽんっと置いてその後に必要なだけ『オプション』を指定する」という記法が使えますのでこれも覚えておきましょう。

ちなみに実行するコマンドによってはNGな場合もありますので100%イケるというわけではないのでそこは気をつけて下さい。

あと『オプション』を指定する順番も自由であることが多いです。なのでさっきのコマンドを以下のようにしても同じ結果となります。『-al』が『-la』になっているところに注目です。

[root@localhost ~]# ~]$ ls -la

ただしこちらもコマンドによってはNGとなる場合がありますので気をつけて下さい。

さてここで避けたほうが良い項目や気をつけるべき項目がいくつかあるのでちょいと確認していきます。

まずUNIX系OSではコマンドやファイル名などの大文字と小文字は区別されるようになっている場合と区別されない場合があります。

例えば『ls』コマンドを打ちたい、となった場合に『CentOS』で以下のように打つとダメでございます。

[root@localhost ~]# ~]$ LS -la
[root@localhost ~]# ~]$ Ls -la

じゃあ『MacOS』の『ターミナル』で上記のコマンドを打つとどうなるか、というとちゃんと動いちゃいます。

これ結構ややこしいのでUNIX系OSでは特別な事がない限り小文字のみを使って構成する事がおすすめかもですね。まあこの辺はお好みになってしまうかもですが頭の片隅にでも置いておいて下さい。

続いてファイル名についてです。

ほぼ全てのUNIX系OSではファイル名に『-』を使うことができ、それをファイル名の頭に持っていく事も出来ます。ということはつまり『-a』というようなファイル名も生成できるという事になり、こういうファイルを作るとコマンドを打つ際に「オプションなのかファイル名なのかが区別できなくなってしまう」という事態が起こってしまうので「ファイル名の頭に『-』を付けるべきではない」という暗黙の了解みたいなものがあったりします。

例えば『cat』というコマンドがありましてこの子はファイルの中身を出力してくれるコマンドなのですが『-n』とオプションを付けてファイル名を引数で渡すと行番号を付けた状態で出力してくれるようになります。こんな感じですね。

[root@localhost ~]# ~]$ cat -n ファイル名

じゃあ上記の事を踏まえて『-n』というファイル名が付けられたファイルを開こう、となるとこうなりますよね。

[root@localhost ~]# ~]$ cat -n

これ動くかどうかと聞かれるとご想像の通り動きません。『-n』という部分がオプションの扱いになってしまっていてファイル名と認識されていないのですね。

じゃあ『-n』ってファイルをどうしても『cat』コマンドで出力したい場合はどうするかというとこうします。

[root@localhost ~]# ~]$ cat -- -n

なにやら『--』が入っていますね。このように「『--』と付けるとそこから先は全てオプション意外のものとして扱う」事が出来ますので『cat -- -n』とすることでちゃんと『-n』と名付けられたファイルの内容を出力することが出来ます。

ただこんな事をいちいちするのも面倒くさいだけですよね。なので特別な理由がない限りは「『-』を頭に付けたファイルは作成しない」という事を守るようにするのがベストなわけでございます。

というわけでコマンドの構造とコマンド周りに関する注意事項は以上となりますね。

次の記事ではUNIX系OSのCUI操作の基本となる『ファイルシステム』についてと『cd』コマンドと『pwd』コマンドの解説をやっていきます。

ではまたお会いしましょう。

この記事は桜舞が執筆致しました。

著者が愛する小型哺乳類

桜舞 春人 Sakurama Haruto

ISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。