Strawberry PerlとコマンドプロンプトでLinux風環境を作る方法

Strawberry PerlとコマンドプロンプトでLinux風の環境を作る方法を紹介します。

Perlエンジニアは、開発やサーバー運用をするときは、Linux/Unix環境で作業をしていることが多いです。

Linux用に作ったプログラムをWindowsで試験をしたいといった場合に、実行するコマンドがLinuxとなるべく近いとやりやすいですね。

コマンドプロンプトでもLinuxと同じ感覚で作業ができる方法を紹介します。

Linux環境とコマンドプロンプトで同じ方法で作業ができること

先にLinux環境とコマンドプロンプトで、同じ方法で作業ができることはなんでしょうか? 2020年1月に、以下は、Windows 10の環境で確認した項目です。

cdコマンド

Linuxのcdコマンドは、コマンドプロンプトにも、cdコマンドとして存在します。

ファイルパスの区切りは「/」でOK

Windowsのファイルパスの区切りは「\」ですが、実は「/」を使うこともできます。コマンドプロンプトのcdコマンドで、「/」を使った例です。

cd labo/perlzemi

gccはStrawberry Perlがインストールされていれば使える

PerlのXSモジュールをインストールするのに必要な、C言語のコンパイラであるgccは、Strawberry Perlがインストールされていれば最初から使うことができます。

gcc --help

コマンドプロンプトを閉じる

コマンドプロンプトを閉じる場合は、Linuxのexitコマンドと同じコマンドがコマンドプロンプトにも存在します。

exit

右クリックで、コピーと張り付け

コマンドプロンプトの設定で、簡易編集モードにチェックをいれると、右クリックとで、コピーと貼り付けができます。

コマンドプロンプトのコピー&ペーストを簡単に−右クリック

&&によるコマンドの連続実行

コマンドプロンプトでも&&は、Linuxと同じように使えます。

command1 && command2

リダイレクトとパイプ

Linuxのリダイレクトとパイプは、コマンドプロンプトでも利用できます。

command > file.txt
command < file.txt
command1 | command2

コマンドプロンプトには、存在しないLinuxコマンド

次は、コマンドプロンプトには、存在しないLinuxコマンドです。存在しないのであれば、作ってしまいましょう。

Strawberry Perlがインストールされていれば、次のパスが、コマンドの検索パスに含まれているはずです。

C:\Strawberry\perl\site\bin

これは、ユーザーがインストールした実行ファイルやバッチファイルが格納される場所です。

このパスの中に、存在しないコマンドを書いてみましょう。

lsコマンドの作成

Linuxのlsコマンドに該当するコマンドを作成しましょう。

拡張子を「.bat」にするとWindowsは、それはコマンドとして認識します。

Strawberry Perlのコマンドの検索パスの中に「ls.bat」というファイルを作成してください。

以下の内容を書き込みます。これでlsコマンドでdirコマンドを呼び出します。

dir

コマンドプロンプトで以下のコマンドを実行できるようになります。

ls

makeコマンドの作成

gmakeというコマンドは、Strawberry Perlがインストールされていれば最初から使うことができます。

ですので、これをラッピングしてmakeコマンドを作成してみましょう。

Strawberry Perlのコマンドの検索パスの中に「make.bat」というファイルを作成してください。

以下の内容を書き込みます。これでmakeコマンドでgmakeコマンドを呼び出します。

gmake %1

%1は、コマンドライン引数です。これを指定しておくと「make test」のように、makeコマンドに引数を与えることができます。

コマンドプロンプトで以下のコマンドを実行できるようになります。

make

その他のLinuxコマンド

必要になればcatコマンドrmコマンドなども、同じ方法で、簡単につくれそうですね。

Linux風環境を試す

さぁ、Linuxのあれをやってみましょう。例のあれです。

cd proj/MyModule
perl Makefile.PL
make && make test

いいですね!

コマンドプロンプトの文字コードをUTF-8に変更する

Linuxでは、一般的にデフォルトの文字コードはUTF-8です。コマンドプロンプトのデフォルトの文字コードはcp932ですが、これをUTF-8に、変更することができます。

よくある質問

よくある質問です。

DOSKEYで、エイリアスを使えばよいのでは?

はい、これは試しました。ですが、&&を実行するときは、コマンドプロンプトは新しいプロセスを実行します。実はこのとき環境を受け継いでくれず、エイリアスが効かなくなります。よく使う「make && make test」が実行できないです。

パワーシェルではだめなのですか?

パワーシェルは、コマンドプロンプトの改良というよりは、Windowsの運用をやりやすい用に設計されたコマンドラインツールです。

リダイレクトやパイプは「.net」上に構築されていて、「.net」の内部データ構造へ変換されてしまいます。改行コードで、意図せず、予期しづらい変換がされた経験があります。

一方、コマンドプロンプトでは、リダイレクトやパイプで、そのままの情報が出力されます。

プログラム自体の動作を確認したい場合は、そのままの情報が出力される、コマンドプロンプトが優れています。

業務に役立つPerl

Perlテキスト処理のエッセンス

PerlでポータブルなLinuxファイル管理入門

ITエンジニアの求人情報など

 ITエンジニアの求人情報・Webサービス・ソフトウェア・スクールなどの情報。

システム開発のお問い合わせ