VirtualBoxのCUIコンソールでクリップボードのコピーペースト

Pocket

VirtualBoxのCUI(Character User Interface)コンソールでCtrl-Vでコピーペーストをしようとしたけど^Vが表示されるだけで困っている。コピーペーストはマウスを使わないといけないのかな。

そんな人の悩みに答えます。

この記事では、次のことがわかります。
1. Gnomeデスクトップの端末で、コピーペーストをする方法
2. Gnomeデスクトップが立ち上がる前のVirtualBoxのコンソールでコピーペーストをする方法
3. まとめ

1. Gnomeデスクトップの端末で、コピーペーストをする方法

Gnomeデスクトップが立ち上がっている場合、コピーペーストは端末アプリの編集に、コピーと貼り付けがあります。コピーしたいところをマウスで白黒反転させておいてから、コピーを選び、貼り付けたいところにカーソルを持っていって、貼り付けを選べばいいです。

なお、ゲストOSとホストOSの間でコピーペーストができない場合は、VirtualBoxのGuestAdditionsが動作しているかどうか確認してください。

このときに、キーボードショートカットのCtrl-C/Ctrl-Vを使おうとすると、画面に^Vと表示されてしまって貼り付けできません。

解決方法は、Ctrl-Shift-CとCtrl-Shift-Vを使えばよいです。

Ctrl-Cは、プロセスの終了に割り当てられているため、Gnomeデスクトップの設定でこうなっています。

2. Gnomeデスクトップが立ち上がる前のVirtualBoxのコンソールでコピーペーストをする方法

Gnomeデスクトップが立ち上がる前のVirtualBoxのコンソールでは、ショートカットキーは使えません。そこで、xselというコマンドを使います。

サーバーバージョンのCentOSを使っていて、Gnomeデスクトップがない場合などに相当します。

ここでは、CentOSについて説明します。

2-1. xselのインストールと動作の確認

コンソールでxselと打ち込んでコマンドがない場合は、xselをインストールします。このときに、Xvfbという画面のないXサーバーを使いますので、同時にインストールします。

sudo yum install xsel Xvfb

Xvfbを立ち上げます。

Xvfb -screen 0 1280x720x24 &
export DISPLAY=:0

もし、Xvfbが立ち上がっていなくてxselを使おうとすると、次のようなエラーが出ます。DISPLAY変数がexportされてないときも同様です。

xsel: Can't open display :(null)

準備の最後にVBoxClientを立ち上げます。

VBoxClient --clipboard

これで、ホストOSとゲストOS間でコピーペーストできます。準備は終わりです。

例えば、文字列aaaをクリップボードへにコピーするには、次のようにします。

echo aaa |xsel --input --clipboard

クリップボードからのペーストは次のようにします。

xsel --output --clipboard

これでクリップボードをコマンドで使うことができるようになりました。

2-2. pbcopy/pbpasteコマンドにまとめる

いちいちxselのコマンドを打ち込むのは手間がかかりますので、pbcopy/pbpasteというコマンドにまとめます。pbcopy/pbpasteは同名のMac OSのコマンドです。

ホームディレクトリの.bash_profileの最後にaliasで定義します。

.bash_profile

alias pbcopy="xsel --input --clipboard"
alias pbpaste="xsel --output --clipboard"

aliasを書いたあとは $ source .bash_profileで有効にします。

2-3. viで使う

コンソールの中でviを使ったとき、コピーペーストするにはもう一工夫必要でした。viの中では、:r! 外部コマンドを打つとコマンドの実行結果が入力されます。上で設定したpbpasteを実行しようとしてもエラー127のcommand not foundになってしまいます。

そのため、環境変数BASH_ENVの設定と、.bashenvの設定が必要でした。

.bashenvというファイルを作ります。
.bashenv

shopt -s expand_aliases
alias pbcopy="xsel --input --clipboard"
alias pbpaste="xsel --output --clipboard"

.bashrcの最後でこのファイルを有効にします。

export BASH_ENV=~/.bashenv

これで、viのコマンドモードで

:r!pbpaste

とすると、クリップボードにコピーされた内容を取り込むことができます。

コピーしたいときはビジュアルモードで範囲を選択して、次のようにします。

:!pbcopy;pbpaste

ちなみにpbcopyとpbpasteの間はセミコロンです。

pbopyの前のビックリマークが必要です。また、pbpasteがないと切り取りになってしまいます。

3. まとめ

VirtualBoxのCUI(Character User Interface)コンソールでコピーペーストを使えるようにしました。

CentOSのGnomeデスクトップが立ち上がる前のコピーペーストの方法について説明しました。

設定が完了するとviでクリップボードへのコピーペーストができるようになります。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください