0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WindowsTerminal ペイン分割コマンドと、分割後のペインに文字を送るPowershellと、色を付けるエスケープシーケンス

Last updated at Posted at 2022-04-08

1章 ペイン分割コマンド

ステップ①上下分割

wt -w 0 sp -H

image.png

ステップ②上下分割 → 左右分割

wt -w 0 sp -H `; sp -V

image.png

ステップ③上下分割 → 左右分割 → フォーカスを左に移動させる

wt -w 0 sp -H `; sp -V `;mf left

image.png

ステップ④上下分割 → 分割先に文字を送る

wt -w 0 sp -H Powershell.exe -noexit echo "移動"

image.png

2章 分割後のペインに、元ペインから文字を送りたい(Powershell)

 ペイン分割と同時ならば、ステップ④のように他のペインに文字を書き込むことができるが、その一回だけだ。分割済みのペインに、改めて新しい文字を書き込むにはとうしたら良いのだろう。

お手本のLinuxの「端末」では、どうやっている?

 Linuxは、コンピュータに接続した周辺機器(例えばプリンター)をファイルシステム上の「ファイル」のように扱う「デバイスファイル」が存在する。(UNIXにも)デバイスファイルは、ファイルの読み書きと同じ手順で、データの入出力や制御をできる。
 またLinuxには「WindowsTerminal」の見本となった「端末=ターミナル」が存在するが、この「端末」にも「デバイスファイル」も存在する。Linuxで「端末」の「デバイスファイル」名を出力するコマンドは、「ps」となる。

ps

「ps」と入力した場合の出力結果は以下となる。

/dev/pts/0

そして端末が2つある時、もう一つの端末名は以下と出力される。

/dev/pts/1

結論から言えば、片方の端末から、もう一つの端末に表示するコマンドは以下となる。この方法はWindowsTerminalでは出来ない。

echo aho > /dev/pts/1

以下はイメージです。
image.png

Windowsではどうするのか?

 Windowsにも、Linuxと同じようなデバイスファイルの仕組みはある。しかしデバイスファイルを利用した、コマンドによるペインから別のペイン(端末)へのリアルタイム出力が出来ない。もしかして、存在するかもしれないが、私には見つけられなかった。

WindowsTerminalでの手段

 思いついたのは以下の手段だ。

(1) 空の「テキストファイル.txt」を作成する。
(2)「入力用ペイン」から「出力用ペイン」を作成する。
(3)「出力用ペイン」には"「テキストファイル.txt」を「監視」し、変更あれば「抽出」して表示する"設定にする。
(4)「入力用ペイン」から「テキストファイル.txt」に「書込」する。
image.png

いざ、やってみよう。

環境

  • Windows10
  • テキストファイルにはutf-8で出力する。(標準はShift-JIS)
  • WindowsTerminalを利用する。
  • Powershell 7.2を利用する。

(1)空の「テキストファイル.txt」を作成する。

New-Item テキストファイル.txt -type file 

(2)「入力用ペイン」から「出力用ペイン」を作成する。
(3)「出力用ペイン」には"「テキストファイル.txt」を「監視」し、変更あれば「抽出」して表示する"設定にする。
は以下の一行にまとめられる。

wt -w 0 sp -H powershell.exe -noexit get-content ./テキストファイル.txt -wait -Encoding utf8

(4)「入力用ペイン」から「テキストファイル.txt」に「書込」する。

echo 日本チャチャチャ >>  ./テキストファイル.txt 

結果

できました。
image.png

3章 分割後のペインに色🟥🟨🟦を付けたい。

Powershell 7.2では、単純に以下と入力すればよい

 echo 1:`e[31m`e[0m2:`e[32m`e[0m > テキストファイル.txt

出力結果

image.png

しかし、Powershell 5.1(=Windows PowerShell)では、単純にはいかない。
PowerShell 5.1 ではエスケープシーケンスの「`e」がまだ使えない為だ。
image.png
 ではどうするか? 単純な話で「エスケープ=脱出」しないで、正々堂々「27番目の制御文字ESC」を入力すればよい。ここで注意なのは以下の "^[" は "^" と "[" ではなく、「27番目の制御文字ESC」です。入力方法は、少し長くなるので他のサイトを検索して下さい。(エスケープ説明)
※ちなみに私は「27番目の制御文字ESC」を秀丸で入れました。ほかにサクラエディタや、NotePad++で入力する方法があるようです。
image.png

考察

 2022年4月時点でのWindows10や、最新のWindows11では、Powershell 5.1(=Windows PowerShell)が標準実装であり、Powershell 7.2は入ってない。その為、エスケープシーケンスは、会社のパソコンで使う為には少々使い辛い。
 (私、機械系エンジニアだし。黒い画面出してているだけで変な人扱いだし)
 どうしたものか思案中。

参考リンク

Windows ターミナルに対するコマンド ライン引数を使用する
Windows Terminalをコマンドで実行し、更に、その中でコマンド実行。
Windows Terminal 上でwebpack-dev-serverとdocker-composeを同時に起動し別のペインに表示

参考リンク:制御文字

サクラエディタで制御文字を入力する方法

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?