Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

UNIX(Linux)
Beginner

  1. What is UNIX (Linux)? - Japanese Only
  2. What are Distributions? - Japanese Only
  3. About CentOS, macOS, and CUI - Japanese Only
  4. Installing CentOS with Virtualization Software and macOS CUI Environment - Japanese Only
  5. Login, root User, and Shutdown - Japanese Only
  6. Command Structure and Important Notes - Japanese Only
  7. File System and Navigating Directories (cd and pwd) - Japanese Only
  8. Key Directories and Listing Contents (ls) - Japanese Only
  9. Advanced Directory Navigation (cd) and Paths - Japanese Only
  10. Advanced ls Command (Part 1) and Dotfiles - Japanese Only
  11. Advanced ls Command (Part 2) - Japanese Only
  12. Tab Completion for Input - Japanese Only
  13. Creating Directories (mkdir) - Japanese Only
  14. Quick File Creation (touch) and About Files - Japanese Only
  15. Standard I/O, Redirection (> and >>), echo, and cat - Japanese Only
  1. Deleting Files and Directories (rm) - Japanese Only
  2. Copying Files and Directories (cp) - Japanese Only
  3. Moving and Renaming Files and Directories (mv) - Japanese Only
  4. What is the vi Editor? - Japanese Only
  5. Basic vi Usage (Part 1) - Japanese Only
  6. Basic vi Usage (Part 2) - Japanese Only
  7. Remote Operations via Terminal (SSH and Tera Term) - Japanese Only
  8. Installing Software (yum and Package Managers) - Japanese Only
  9. User Overview, Verification, Creation, and Switching (adduser and su) - Japanese Only
  10. User Passwords, Deletion, Modification, and sudo (passwd, userdel, usermod) - Japanese Only
  11. About Groups and the groups Command - Japanese Only
  12. Adding, Deleting, and Modifying Groups (groupadd, groupdel, groupmod) - Japanese Only
  13. About Permissions - Japanese Only
  14. Setting Permissions (chmod and chown) - Japanese Only
  1. Home
  2. UNIX(Linux)Beginner - Command Structure and Important Notes

Command Structure and Important Notes - Japanese Only

みなさまどうも。

続きまして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』コマンドの解説をやっていきます。

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

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .