1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

cmdやPowershellで実行できるコマンドの概念

Posted at

初心者向けです。

まずは以下をご覧ください。

cdコマンド実行。publicというディレクトリに移動しているのが分かります。

image.png

pingコマンド実行。GoogleのキャッシュDNSサーバに通信しているのが分かります。

image.png

…うん、どちらもコマンドを実行しただけじゃないとお思いかもしれませんが、実はこの2つのコマンドは異なる仕組みで実装されています。
そもそもコマンドの正体とは、というのがこのブログの内容です。

内部コマンド(組み込みコマンド)

例:cd、rmとか
これらはcmd.exeなどのシェルの内部に組み込まれているコマンドです。
つまり、『もし cd と打ち込まれたら、それに続くパスに移動』というコードがそのままcmd.exe内で定義されているものと思われます。
cmd.exeの開発者が「これは使えた方が便利だよね」という意図で、cmd.exe単体で利用できるようにcmd.exeに埋め込んだもの…ということです。

cmd.exeの中身(バイナリデータ)を取り出したら、このへんのコマンドが定義されてそうな箇所があった。
image.png

外部コマンド

ping、とか
これは外部のファイルを参照して動いています。
つまり、ping.exeという外部にpingを飛ばす処理が書かれたファイルがあり、それを読み込んでいるだけです。
image.png
cmd.exeから、別の実行ファイル"ping.exe"を動かしている訳ですからcmd.exeだけで完結する処理ではありません。
タスクマネージャーを見ても、実行した瞬間にプロセスが発生していることが確認できます。
当然ですが、cdコマンドなどはcmdやpowershell内で完結しているので、新しいプロセスは発生していません。

実行前はping.exeはないが、

image.png

実行すると動く。結果が表示されたらping.exeのプロセスは勝手に終了して閉じる。

image.png

外部コマンドについて

結局はただファイルを実行しているだけ。
しかし、本来はこのように「CドライブのWindowsのSystem32にあるPING.exeを実行してください。」という風に、そのファイルの保存場所と拡張子(.exe)まで正確に指定しないと動かない。
image.png

私はDMMGamesからウマ娘をプレイしているが、DMMGamePlayer.exeだけでは実行できない。
image.png
ではなぜPing.exeは正確に入力した場合はもちろん、ファイル名だけで実行できるのか。
image.png

その答えは パスを通しているから。

パスを通すとは

指定したパス内にあるファイルは、ファイル名だけで実行できるというもの。
ここのPathで指定されているもの。確かにPing.exeがあるC:\Widnows\system32も登録されている。
image.png
目的はただ一つ。便利だから。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?