シェルスクリプトに挑戦しよう(2)Windows 10のbashを試す!“応用力”をつけるためのLinux再入門(22)(2/2 ページ)

» 2018年09月19日 05時00分 公開
[西村めぐみ@IT]
前のページへ 1|2       

Windows環境で作成したシェルスクリプトをWSLで実行するには?

 シェルスクリプトの練習ということであれば、Windows環境で作成したテキストファイルを使ってもよいでしょう。

 「メモ帳(notepad.exe)」の場合、ファイルを保存すると自動で「.txt」という拡張子が付きます。拡張子があってもシェルスクリプトとして使用できますが、一般的には「拡張子なし」か「.sh」を使用します。メモ帳で拡張子を付けずに保存したい場合は「名前を付けて保存」で「ファイルの種類」を「すべてのファイル」にし、ファイル名を「hello.」のように末尾にドット(.)を付けて保存します。

 シェルスクリプト内で日本語を使いたい場合は、「UTF-8」で保存する必要があります。メモ帳の場合、UTF-8で保存するとBOM付き(Byte Order Mark:符号化の種類判別に使用するデータ)となるため、シェルスクリプトには使えません。BOMなしのUTF-8に対応しているテキストエディタを使用しましょう。フリーで使用できるテキストエディタとしては、「TeraPad」や「Visual Studio Code」などがあります。

 WSL側でテキストファイルの文字コードを変換したい場合は、「iconv」コマンドを使用します。

Windowsのカレントディレクトリのままでbashを実行する

 エクスプローラのアドレスバーで「bash」と入力して[Enter]キーを押すと(画面5)、現在表示しているフォルダの位置をカレントディレクトリとして、bashの画面が開きます。

画面5 画面5 エクスプローラのアドレスバーで「cmd」と入力して[Enter]キーを押す

 コマンドプロンプトで「bash」と入力して実行すると、実行時のカレントディレクトリのままでbashを実行できます(画面6)。

画面6 画面6 実行時のカレントディレクトリでbashを実行できる

 Windows環境で保存したテキストファイルは、パーミッションが「0777」となっているため、「chmod」コマンドによる操作なしで「./ファイル名」でシェルスクリプトを実行できます。

 今後もこのディレクトリを使用するのであれば、WSLのホームディレクトリからアクセスしやすいように、シンボリックリンクを作成しておくとよいでしょう。以下のコマンドで作成できます。なお、「pwd」は現在のカレントディレクトリを表示するコマンドです。

ln -s `pwd` ~

(現在のディレクトリへのシンボリックリンクをホームディレクトリに作成する)


WSLの色設定について(1)bashのプロンプト

 bashのデフォルト設定では、プロンプトに「ユーザー名@ホスト名:カレントディレクトリ$ 」が表示されます。カレントディレクトリは黒地()に青い文字で表示されるため、少々読みにくいかもしれません。

【※】黒背景と青い文字は、Windows環境のコマンドプロンプト画面の設定に従っています。設定の変更は、スタートメニューの「Windows Subsystem for Linux」で開いた画面の左上(Ubuntuアイコン)をクリックして表示されるメニューから「プロパティ」→「画面の色」タブにある「画面の文字」と「画面の背景」で行います。



 プロンプトの色は、ホームディレクトリの「.bashrc」で変更できます。ディレクトリの表示は「PS1=」の行の「\[\033[01;34m\]\w」部分なので、例えば「\[\033[00;36m\]\w」(暗い水色)にすると見やすくなります。色と番号の対応については、後述するを参照してください。

 「nano」コマンドの場合、[CTRL]+[W]キーで「PS1」(プロンプトの表示を設定するシェル変数)を検索するか、画面7を参考に矢印キーで該当箇所まで移動して変更してください。修正したら[CTRL]+[X]キーで終了します。画面下部に確認メッセージが表示されるので、画面に従い[Y]キーで保存します。

画面7 画面7 ホームディレクトリの「.bashrc」を編集して、「\[\033[01;34m\]\w」を「\[\033[00;36m\]\w」に変更。「vi(vim)」コマンドの場合、「1」にカーソルを合わせて「r」「0」で、「1」を「0」に変更できる(本連載第20回参照)

 viコマンドの場合、Ubuntuで設定されているデフォルトの色設定ではコメント行(#以降)が暗い青で表示されるため、黒地での表示では読みにくいでしょう。この場合「vi -u NONE .bashrc」のように「-u NONE」を付けて実行することで、設定ファイルを使用せずに起動できます。viの表示色を変更したい場合は「【参考】vimのカラースキームを変更するには」を参照してください。

 修正したら「. .bashrc」を実行するか()、bashプロンプトを開き直すと設定が反映されます。

$ cd(ホームディレクトリへ移動する)
$ nano .bashrc(nanoコマンドで.bashrcを編集する:viコマンドを使用する場合)
$ vi -u NONE .bashrc
$ . .bashrc(修正した設定内容を反映させる)

【※】「. .bashrc」は「source .bashrc」と同じ意味で、現在実行中のシェル(bash)で「.bashrc」を実行します。これによって、「.bashrc」に書かれた内容が反映されます。



WSLの色設定について(2)lsコマンドのカラー表示

 WSLのUbuntuでは「ls」コマンドがカラー表示になるよう設定されており、こちらもディレクトリ名が青で表示されます。

 ディレクトリ名の色を変更したい場合は、「dircolors」コマンドの「-p」オプションで現在の設定を出力してホームディレクトリの「.dircolors」に保存し、ディレクトリ用の設定を修正します。「DIRスペース」を検索すると、該当箇所にジャンプできます(画面8)。

画面8 画面8 ホームディレクトリの「.dircolors」を編集して、「01;34」(青)を「00;36」(暗い水色)に変更した

 「.dircolors」を修正したら「eval `dircolors -b .dircolors`」を実行するか()、bashプロンプトを開き直すと設定が反映されます。

【※】lsコマンドの表示色は環境変数「LS_COLORS」で設定します。「dircolors -b .dircolors」は「.dircolors」ファイルに従って環境変数LS_COLORSを設定するためのコマンドラインを生成するという意味で、evalコマンドによってdircolorsで生成したコマンドラインを実行しています。



$ cd(ホームディレクトリへ移動)
$ dircolors -p > .dircolors(現在のlsコマンドの色設定を.dircolorsに保存する)
$ nano .dircolors    (nanoコマンドで.dircolorsを編集する)
$ eval `dircolors -b .dircolors`(.dircolorsの内容を現在の設定に反映させる)

 PS1およびdircolorsでは、「設定1;設定2」という2つの数字で表示色を設定します。使用できる数字は以下の通りです。

PS1およびdircolors使用できる主な色設定(1)
文字色の指定 背景色の指定
00 デフォルト
01 強調(明るい色、太字)
04 下線
07 反転
※1桁目の「0」は省略可能

PS1およびdircolorsで使用できる主な色設定(2)
文字色の指定 背景色の指定 文字色の指定 背景色の指定
30 40
31 暗い赤 41 暗い赤
32 暗い緑 42 暗い緑
33 暗い黄(オレンジ) 43 暗い黄(オレンジ)
34 暗い青 44 暗い青
35 暗い紫(マゼンダ) 45 暗い紫
36 暗い水色(シアン) 46 暗い水色(シアン)
37 暗い白(薄いグレー) 47 暗い白(薄いグレー)

PS1で使用できる主なエスケープシーケンス(2-2)
文字色の指定 背景色の指定 文字色の指定 背景色の指定
90 明るい黒(濃いグレー) 100 明るい黒(濃いグレー)
91 明るい赤 101 明るい赤
92 明るい緑 102 明るい緑
93 明るい黄 103 明るい黄
94 明るい青 104 明るい青
95 明るい紫 105 明るい紫
96 明るい水色 106 明るい水色
97 107

【参考】vimのカラースキームを変更するには?

 CentOSやUbuntuでは、viはvimコマンドへのシンボリックリンクとなっています。vimはシェルスクリプトや、よく使われる言語の文法に対応しており、カラースキームを選択することで表示色を変更できます。

 ここでは、デフォルトで用意されているカラースキームを使う方法を簡単に紹介します。本稿で紹介している画面では、Windows 10上のUbuntu環境を使用していますが、もちろん他の環境でも同じです。

 表示色を変更したい場合、まずはデフォルトで用意されているカラースキームを試してみるとよいでしょう。インストールされているカラースキームは「ls /usr/share/vim/vim80/colors/」で確認できます(画面9)。「スキーム名.vim」というファイルがカラースキームです。ディレクトリ名の「vim80」部分はバージョンによって異なります()。

$ ls /usr/share/vim/vim74/colors/

画面9 画面9 インストールされているカラースキームを確認

【※】筆者が試した環境では、WSL環境ではなく、ネイティブ版のUbuntu 18.04LTSのデフォルトでインストールされていたviコマンドはSmall versionで、後述する「:colo」が使用できず、カラースキームファイルもインストールされていませんでした。「sudo apt upgrade vim」でvimパッケージをアップグレードすることで通常版になり、「/usr/share/vim/vim80/colors/」にカラースキームファイルがインストールされます。



 例えば、「pablo」というカラースキームを使用する場合、ホームディレクトリの「.vimrc」(~/.vimrc、存在しない場合は作成)に以下の行を追加します。

~/.vimrcの設定例

colorscheme pablo


 自分用に新しいカラースキームを追加する場合は、「~/.vim/colors/」ディレクトリにカラースキームファイルを保存します。カラースキームは以下のサイトなどでダウンロードできます。

 以下では、公式サイトから「molokai.vim」をダウンロードし、カラースキームとして「molokai」を指定しています。この設定で、「/etc/bash.bashrc」(CentOSでは「/etc/bashrc」)を実行すると画面10のようになります。

$ mkdir -p ~/.vim/colors/(ホームディレクトリにカラースキーム用のディレクトリを作成)
$ cd ~/.vim/colors/(カラースキーム用のディレクトリへ移動)
$ curl http://www.vim.org/scripts/download_script.php?src_id=9750 > molokai.vim(開発サイトより「molokai.vim」という名前でダウンロード)
$ cd(ホームディレクトリへ移動)
$ echo colorscheme molokai >> .vimrc(.vimrcに設定行を追加)

画面10 画面10 「molokai」(追加したスキーム)による表示例

 vim実行中にカラースキームを変更することもできます。この場合は、「:」に続けて「colo スキーム名」と入力します。「colo」は「colorscheme」の省略表記です。画面11は「:colo ron」を実行した画面です。なお、現在の設定は「:colo」で確認できます()。

画面11 画面11 「ron」(標準でインストールされているスキーム)による表示例

【※】筆者が試した限り、WSLのUbuntuでvimでは、背景色付きのカラースキーム(blueやshineなど)を.vimrcで設定した場合には、画面全体の背景色がうまく切り替わらないことがありました。



 色が変更されない場合は、「/etc/vimrcまたは/etc/vim/vimrc」で「syntax on」が設定されていることを確認してください。設定されていない場合は、「~/.vimrc」に「syntax on」という行を追加します。

 vimのオプションおよび設定ファイルについては本連載第19回を参照してください。

筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。