WSL2とWindows Terminalを使って生産性を上げよう!

2022/06/07 What's Up, 技術系 投稿者:原口

皆さんこんにちは、ネットワーク事業部の原口です。

Windows環境で「ちょっとしたシェルスクリプトの検証がしたい!」「普段からLinuxに触れているので、Windowsでも使い慣れたコマンドで効率よく作業したい!」などを思ったことがあるのではないでしょうか。「Windows Subsystem for Linux 2」を使用することにより、軽量かつ簡単に利用できるようになります。


 

Windows TerminalからWSL2を操作する

今回は、既にWSL2のセットアップはできており、Ubuntuが利用可能な状態からご説明いたします。
WSL2のインストール等はこちらをご確認ください。

[WSL を使用して Windows に Linux をインストールする(Microsoft)]
https://docs.microsoft.com/ja-jp/windows/wsl/install

Windows Terminalから以下のコマンドを実行して「WSL2の有効」と「既定の Linux サブシステム」を確認します。

「NAME」欄に「* Ubuntu-20.04」と表示されていれば、Ubuntu-20.04が規定となっています。
「VERSION」欄に”2″と表示されていれば、WSL2が有効となっています。
※WSLの場合「VERSION」欄が”1″と表示されます。

Windows Terminalから「WSL」コマンドを実行し、WSL2用Ubuntuを起動します。
作成したユーザとディレクトリが表示されたら成功です。

その他のWSLコマンドの例は以下にようになります。

「wsl –help」で、WSLコマンドのオプションとコマンドの一覧を確認することができますので、気になる方は調べてみてください。


LinuxからWindows環境へアクセス

シンボリックリンク作成   

Linux側からWindows側のフォルダにアクセスする場合は、「/mnt/{ドライブ名}」からアクセスが可能です。WindowsのCドライブの場合は「/mnt/c」にマウントされています。

 

Linux側からWinodws環境内のフォルダにアクセスする際に、フォルダパスが深くなってしまうことがあります。
例として、Windows環境内のドキュメントファイルを参照する際に
/mnt/{ドライブ名}/Users/{ユーザ名}/Documents」へ移動する必要があるため、
ファイルパスが深くなってしまい、素早くアクセスするにはネックとなります。

LinuxのホームディレクトリからWindowsのドキュメントフォルダに簡単にアクセスできるよう、シンボリックリンクを作成しましょう。
今回の環境では、Ubuntuのインストール時にLinuxのユーザとして「testuser」というユーザを登録しています。

  • シンボリック名:to_documents
  • シンボリック作成場所(Linux側) :/home/testuser
  • シンボリック参照先(Windows側)  :/mnt/c/Users/haraguchi/Documents

Linuxのホームディレクトリにシンボリックリンクが作成されていることが確認できます。

作成したシンボリックリンクに移動し、Windows側の「Documents」フォルダに移動できたことが確認できます。

 


LinuxコマンドでWindows環境を操作

ファイル名を置換する(rename)

スマートフォンやデジタルカメラで撮った沢山の写真をマウスやキーボードを使用して、名前を変更をしていくには大変な作業になってしまいます。
そこで、Linuxコマンドを用いればまとめてファイル名を変更できます。

例えば下記のような複数のファイルをリネームしてみましょう。

「rename」コマンドを使用するため、以下のコマンドでインストールします。

「rename」コマンドを使用して「photo_1.jpg」~「photo_20.jpg」から「image_1.jpg」~「image_20.jpg」に変更します。
対象のファイルが複数存在する時には、ワイルドカードを用いて末尾に「jpg」を含むファイルを対象として処理をするコマンドを実行します。

「photo_1.jpg」~「photo_20.jpg」⇒「image_1.jpg」~「image_20.jpg」
に変更されていることが確認できます。

 

ファイルの差分を調べる(vimdiff)

更新したファイルと更新前のファイルの差分をチェックする場合、フリーソフトなどを使用する方法もありますが、Linuxには簡単に差分を確認できるコマンドがあります。

以下の作業環境として、同じフォルダ内に「List1.txt」と「List2.txt」が存在します。
「List1.txt」と「List2.txt」の中身は以下のとおりで、ファイルの中身に差異があります。

「diff」コマンドでも差分確認ができますが、表示結果が見にくいので今回は「vimdiff」コマンドを用いた差分確認を行います。

「vimdiff」コマンドでは、文字列の差分をハイライトで表示され、視覚的で見やすいことが特徴となっております。差分をチェックする際には非常に便利なコマンドとなります。

 

ファイル内の文字を検索する(grep)

Windowsからファイルの中身を検索する際に、エクスプローラーの設定を行い検索ボックスからファイルの中に記述されている文字を検索します。
素早くファイルの中身の記述を検索するにはLinixコマンドが有効です。

作業環境としまして、先程と同じ環境を使用します。
同じフォルダ内に「List1.txt」と「List2.txt」が存在します。

ファイルの中身検索をする際には「grep」コマンド使用します。
現在のフォルダから「りんご」が含まれるファイルを抽出していきます。
「-n」オプションを付けることにより、検索結果に行番号を表示することができます。

次に、現在のフォルダから「300」が含まれるファイルを抽出していきます。

 

ファイル名で検索する(find)

次にファイルの名前検索をしていきます。Windowsではエクスプローラーの検索ボックスから検索ができますが、Linuxコマンドを使用することにより簡単に検索が可能となります。
以下の作業環境とし、様々なファイルが混在している環境で行います。

ファイルやフォルダを検索する際には「find」コマンドを使用します。

「売上」が含まれるファイルを検索します。
「-name」オプションで検索するファイル名を指定して、ワイルドカード「*」で「売上」を含むファイルを検索します。

「-newermt」オプションを使用することで「~より新しいファイル」「~より古いファイル」の検索が可能となります。
2022年01月01日から2022年7月7日18時00分の期間に変更されたファイルを検索します。


シェルスクリプト

これまでご紹介したLinuxコマンドを組み合わせて複雑な処理を行ったり、
繰り返しの操作を自動的に行ったりするための仕組みとして『シェルスクリプト』があります。
当該フォルダをzipで圧縮して、別のフォルダに退避させる処理を行うシェルスクリプトを実行していきます。作業環境として先程の環境を流用します。

バックアップシェルスクリプト

バックアップ元の「/mnt/c/Users/haraguchi/Documents」をzipで圧縮し、バックアップ先の「/mnt/c/Users/haraguchi/backup」に移動させます。
「testuser」のホームディレクトリ直下にシェルスクリプトを作成します。

  • シェルスクリプト名:backup_dir.sh
  • バックアップ元:/mnt/c/Users/haraguchi/Documents
  • バックアップ先:/mnt/c/Users/haraguchi/backup

実行権限を付与して、以下のコマンドを実行します。

バックアップ先「/mnt/c/Users/haraguchi/backup」にzipで圧縮したデータを確認します。


まとめ

Windows terminalとWSL2を利用することで、LinuxコマンドをWindows環境で活用する方法をご覧いただきました。
今回「Ubuntu-20.04」を使用しましたが、その他のWSL2版ディストリビューションとして「Debian」「kali-linux」等が使用できます。2022年4月からWSL2版「AlmaLinux」が使用可能になり、RHEL系のディストリビューションを長年使用しているユーザ視点では、WSLが身近な存在になってきているのではないでしょうか。今回ご紹介したLinuxコマンドを使用したファイル操作以外の用途では、Windows環境で「WSL2」+「Docker」を使用することにより、手軽にLinuxの開発環境を用意することができます。Linuxコマンドを使用してWindows環境のファイルを操作したり、シェルスクリプトなどの検証したりするには非常に便利なツールとなります。一度お使いになられてはいかがでしょうか。

カレンダー

1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
1234567
891011121314
15161718192021
22232425262728
       
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
     12
3456789
10111213141516
17181920212223
24252627282930
31      
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
     12
3456789
10111213141516
17181920212223
242526272829 
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
    123
45678910
11121314151617
18192021222324
25262728   
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
   1234
567891011
12131415161718
19202122232425
262728    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
     12
3456789
10111213141516
17181920212223
24252627282930
31      
   1234
567891011
12131415161718
19202122232425
2627282930  
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728     
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
1234567
891011121314
15161718192021
22232425262728
29      
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
  12345
6789101112
13141516171819
20212223242526
27282930   
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
      1
2345678
9101112131415
16171819202122
232425262728 
       
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
     12
3456789
10111213141516
17181920212223
24252627282930
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
1234567
891011121314
15161718192021
22232425262728
2930     
       
    123
45678910
11121314151617
18192021222324
25262728293031
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
 123456
78910111213
14151617181920
21222324252627
282930    
       
     12
3456789
10111213141516
17181920212223
2425262728  
       
  12345
6789101112
13141516171819
20212223242526
2728293031  
       
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
    123
45678910
11121314151617
18192021222324
252627282930 
       
 123456
78910111213
14151617181920
21222324252627
28293031   
       
      1
2345678
9101112131415
16171819202122
23242526272829
30      
   1234
567891011
12131415161718
19202122232425
262728293031 
       
1234567
891011121314
15161718192021
22232425262728
293031    
       
U・Iターン転職しませんか?
群馬データセンター
群馬の法人ITサポートサービス Wide Net[ワイドネット]
ワイドオフィス
イヤホンのブランドでハイクラスを誇る | n+um(エニューム)