ターミナルソフトでのコピペについて

メソ
2024-03-18
2024-03-18

設定ファイル等はcatで確認をしても末尾が文字で終わっているように見えますが、内部的に改行が含まれている場合があります。
そのため、今回はテキストファイルのテキスト部分だけではなく、その中身も見てみたいと思います。

Poderosa→VScode

Poderosa上に表示した情報をマウスでコピーし、ローカルに作成したファイルにペーストしてみます。

Linuxでファイルの中身を確認

まず、Linux環境で作成した公開鍵ファイルをcatすると、以下のように表示されます。

[user@example.com test]$ cat public.key 
~~~~~
-----END PUBLIC KEY-----

[user@example.com test]$ 

このように、ファイルの末尾は「-」で終わっているように見えます。
では、hexdumpコマンドを使って16進数ダンプを取ってみます。

$ hexdump -C public.key
~~~~~
000001b0  4e 44 20 50 55 42 4c 49  43 20 4b 45 59 2d 2d 2d  |ND PUBLIC KEY---|

000001c0  2d 2d 0a                                          |--.|
16進数 UTF-8
2d -
0a 改行

ダンプ結果を見ると「2d」が5つ続いた後、最後に「0a」があります。つまり、改行が含まれていることが分かります。

Windowsでファイルの中身を確認

このファイルを↓のようにマウスでコピーし、Windowsのローカル環境に作成したファイルをVSCodeで開き、ペーストしてみます。念のため、ファイルの改行コードはLinuxと統一しておきます。


PowerShellにてGet-Contentコマンドでファイル内を表示してみます。

> Get-Content ファイル名
~~~~~
-----END PUBLIC KEY-----

PS C:\user\>

Linux上でcatした時と同じく、「-」で終わっていることが分かります。

では、ファイルの16進数ダンプを取ります。

> Format-Hex ファイル名
000001B0   0D 0A 2D 2D 2D 2D 2D 45 4E 44 20 50 55 42 4C 49  ..-----END PUBLI

000001C0   43 20 4B 45 59 2D 2D 2D 2D 2D                    C KEY-----

改行を示す0aが無く、「2d」で終わっていることが分かります。

このように、表示上ではPoderosaでもVSCodeでも変わりないですが、内部的には改行が消えてしまうことがわかります。

ショートカットを使ったコピー

上記への解決策として、ターミナルでコピーする際、ショートカットでのコピーが可能です。
Poderosaでは「Ctr + ,」 でこのようなオプションが表示されます。

「コマンド結果をコピー」を選択すると、実行結果がクリップボードに保存されます。マウスでのコピーとは違い、見かけ上改行されていない改行部分もコピーすることができます。

まとめ

scpなどを利用すればファイルごとコピーできるのですが、コピペで対処する際、改行が含まれていないことでうまくいかないことがあります。
今回をきっかけにダンプを見ることができたことは興味深かったです。