クリップボードにコピーしたTTYで実行する必要のあるかなり長いコマンドとファイルパスがありますが、ファイルパスが長すぎて再入力できないため、$
(Iその前にコマンドを再入力できます)、これを行う方法はありますか?
だから、コマンドを実行し、$
で始まる次の行に、クリップボードにコピーしたテキストを次のように入れたいと思います。
$ specialCommandToPasteText
$ pastedText
Ubuntu GNOME 16.04とGNOME 3.20を実行しています。
簡単ですが、追加のツールが必要です。
クリップボードにアクセスする簡単なコマンドを提供するパッケージxsel
をインストールします。
Sudo apt-get install xsel
デスクトップが使用している$DISPLAY
を確認します。通常は:0
である必要がありますが、GUIデスクトップのターミナルエミュレータで次のコマンドを実行して確認できます。
echo $DISPLAY
出力が:0
であると仮定し、異なる場合は、次のコマンドの実際の出力に置き換えます。
TTYで実行するコマンドをコピーします。を使用して Ctrl+C。
使用するTTYに切り替えます。を使用してTTY1に Ctrl+Alt+F1。
ユーザー名とパスワードを入力してログインします。
実行する完全なコマンドを入力しますが、クリップボードから挿入する部分を$(DISPLAY=:0 xsel -ob)
に置き換えます。
たとえば、インストールするパッケージの大きなリストをコピーした場合、これをTTYに入力できます。
Sudo apt-get update && Sudo apt-get install $(DISPLAY=:0 xsel -ob)
クリップボードスニペットは必ずしもコマンドの最後にある必要はありませんが、どこにでも表示される場合があります。
さらに簡単にするために、これを少し複雑なDISPLAY=:0 xsel -ob
をスクリプトに移動してみましょう。 PASTE
(paste
は既に使用されているため)という名前を付けますが、別の方法で呼び出すこともできます。
すべてのユーザーがフルパスを指定せずに実行できる場所にスクリプトファイルを作成し(これには/usr/local/bin
をお勧めします)、実行可能にするには、次の2つのコマンドを実行します。
( echo '#!/bin/bash' && echo 'DISPLAY=:0 xsel -ob' ) | Sudo tee /usr/local/bin/PASTE
Sudo chmod +x /usr/local/bin/PASTE
これで、TTYのコマンドに$(PASTE)
を埋め込むだけで、デスクトップからクリップボードのコンテンツを挿入できます。
個人的には、テキストファイルを使用しています。
デスクトップ環境で、ターミナルを開き、
echo "whatever long text you have copied" > file
Ttyにドロップして
$(cat file)
上記にリストされていない別の可能な回避策には、vim
の使用、コマンドモードでの:!unix_command
の貼り付けと実行が含まれます。
vim
を開き、コマンドモードに移動します Esc、プロンプトを入力します :