シェルスクリプトに挑戦しよう(2)Windows 10のbashを試す!:“応用力”をつけるためのLinux再入門(22)(2/2 ページ)
Windows 10 Fall Creators Update(バージョン1709)から「Windows Subsystem for Linux(WSL)」の正式版が提供されました。これを有効にすることで「bash」などのシェルが、Windows 10上で利用できるようになります。今回は、Windows 10でbashスクリプトを試す方法を紹介します。
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の画面が開きます。
コマンドプロンプトで「bash」と入力して実行すると、実行時のカレントディレクトリのままでbashを実行できます(画面6)。
Windows環境で保存したテキストファイルは、パーミッションが「0777」となっているため、「chmod」コマンドによる操作なしで「./ファイル名」でシェルスクリプトを実行できます。
- [パーミション参考]「ls -l」コマンドの表示からファイルの属性を理解しよう(本連載 第9回)
今後もこのディレクトリを使用するのであれば、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 ホームディレクトリの「.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)。
「.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つの数字で表示色を設定します。使用できる数字は以下の通りです。
文字色の指定 | 背景色の指定 | |
---|---|---|
00 | デフォルト | |
01 | 強調(明るい色、太字) | |
04 | 下線 | |
07 | 反転 | |
※1桁目の「0」は省略可能 |
文字色の指定 | 背景色の指定 | 文字色の指定 | 背景色の指定 | |
---|---|---|---|---|
30 | 黒 | 40 | 黒 | |
31 | 暗い赤 | 41 | 暗い赤 | |
32 | 暗い緑 | 42 | 暗い緑 | |
33 | 暗い黄(オレンジ) | 43 | 暗い黄(オレンジ) | |
34 | 暗い青 | 44 | 暗い青 | |
35 | 暗い紫(マゼンダ) | 45 | 暗い紫 | |
36 | 暗い水色(シアン) | 46 | 暗い水色(シアン) | |
37 | 暗い白(薄いグレー) | 47 | 暗い白(薄いグレー) |
文字色の指定 | 背景色の指定 | 文字色の指定 | 背景色の指定 | |
---|---|---|---|---|
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/
【※】筆者が試した環境では、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/」ディレクトリにカラースキームファイルを保存します。カラースキームは以下のサイトなどでダウンロードできます。
- 公式サイト:Vim - the ubiquitous text editor(「Search for Vim Scripts」で「color scheme」を検索)
- ~/.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に設定行を追加)
vim実行中にカラースキームを変更することもできます。この場合は、「:」に続けて「colo スキーム名」と入力します。「colo」は「colorscheme」の省略表記です。画面11は「:colo ron」を実行した画面です。なお、現在の設定は「:colo」で確認できます(※)。
【※】筆者が試した限り、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ラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.