cmd.exe で Linux 用コマンドを打ってしまうことを想定した対策


Windows 10 上で cmd.exe と WSL のシェル (Bash) とを行き来していると、標準的なコマンドの差で躓くことが多々あります。私は
Bash の方が良く使うので、特に cmd.exe 上で Linux 用のコマンドを誤って打ち込んでしまうことがあります。

たとえば cmd.exe 上で `ls` と打って「コマンドとして認識されていません」という趣旨のエラーが出て初めて `dir`
を思い出すことが良くあります。他にも文字列を出力するつもりで`echo foobar` と打ってしまうと、cmd.exe 側にある同名の別コマンド
`echo` が呼び出されてしまいます。

このような打ち間違いは、上のような例だとかわいいものですが、きっといつかもっと深刻な例を引き起こすのではないかと心配しています。

そこで、何かしら打ち間違い自体を阻止したり、打ち間違いがあっても実行前にエラーや確認メッセージが出るなどして最低限の影響で抑えられたりするような、技術的な解決法はないでしょうか？
「cmd.exe で操作するときは伸びをしてからにする」みたいな慣習的方法ではなく、機械による (半) 自動的な方法を探しています。使用頻度は
cmd.exe の方が低いので、cmd.exe 側は多少操作が面倒になっても大丈夫です。cmd.exe を使うのは、たとえば Windows
側にインストールされた Go コンパイラを使いたいときなどです。

ただし cmd.exe
側のコマンドにあまり詳しくないのでそもそも「どっちでも動いてしまうようなコマンド」がどの程度あるのかも良く分かっておらず、この心配が杞憂の可能性もあるとは思っています。そうであればそのように回答頂ければ幸いです。




すべての打ち間違いを網羅することは難しいと思うので、あらかじめ把握しているいくつかのコマンドで注意を促す方法を考えてみます。

* * *

cmd.exeでは`doskey`でマクロ、Linuxでの`alias`のようなものを定義できます。

[code]

    C:\> doskey ls=echo * Linuxじゃないよ！
    
[/code]

必要なマクロを一通り設定した後、いったんテキストファイルに書き出しておき、cmd.exe起動時にそのファイルを読み込ませることで常に有効となるようにします。

[code]

    C:\> doskey /macros > %USERPROFILE%\macros.txt
    C:\> doskey /macrofile=%USERPROFILE%\macros.txt
    
[/code]

cmd.exeのショートカットのプロパティで引数にいくつかのパラメータを追加します。

[code]

    cmd.exe /k doskey /macrofile=%USERPROFILE%\macros.txt
    
[/code]

* * *

その他のアプローチとしてはターミナル等の背景色等をそれぞれ変更するとかですかね。ツールによっては画像を設定できるので、OSのロゴ等を表示させてもいいかもしれません。




質問の意図とちょっとずれるかもしれませんが、良く打ち間違うコマンド名のバッチファイルを作っておいて、間違っても意図した動作になるようにする、というのが一つの手ではないでしょうか。

ls.batの内容

[code]

    @echo off
    dir
    
[/code]

とか(コマンドラインオプションも必要応じて追加してもいいと思います)。

