web-dev-qa-db-ja.com

コマンドをTTYに貼り付ける方法は?

クリップボードにコピーしたTTYで実行する必要のあるかなり長いコマンドとファイルパスがありますが、ファイルパスが長すぎて再入力できないため、$(Iその前にコマンドを再入力できます)、これを行う方法はありますか?

だから、コマンドを実行し、$で始まる次の行に、クリップボードにコピーしたテキストを次のように入れたいと思います。

$ specialCommandToPasteText
$ pastedText

Ubuntu GNOME 16.04とGNOME 3.20を実行しています。

20
user364819

簡単ですが、追加のツールが必要です。

  1. クリップボードにアクセスする簡単なコマンドを提供するパッケージxselをインストールします。

    Sudo apt-get install xsel
    
  2. デスクトップが使用している$DISPLAYを確認します。通常は:0である必要がありますが、GUIデスクトップのターミナルエミュレータで次のコマンドを実行して確認できます。

    echo $DISPLAY
    

    出力が:0であると仮定し、異なる場合は、次のコマンドの実際の出力に置き換えます。

  3. TTYで実行するコマンドをコピーします。を使用して Ctrl+C

  4. 使用するTTYに切り替えます。を使用してTTY1に Ctrl+Alt+F1
    ユーザー名とパスワードを入力してログインします。

  5. 実行する完全なコマンドを入力しますが、クリップボードから挿入する部分を$(DISPLAY=:0 xsel -ob)に置き換えます。

    たとえば、インストールするパッケージの大きなリストをコピーした場合、これをTTYに入力できます。

    Sudo apt-get update && Sudo apt-get install $(DISPLAY=:0 xsel -ob)
    

    クリップボードスニペットは必ずしもコマンドの最後にある必要はありませんが、どこにでも表示される場合があります。


さらに簡単にするために、これを少し複雑なDISPLAY=:0 xsel -obをスクリプトに移動してみましょう。 PASTEpasteは既に使用されているため)という名前を付けますが、別の方法で呼び出すこともできます。

すべてのユーザーがフルパスを指定せずに実行できる場所にスクリプトファイルを作成し(これには/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)を埋め込むだけで、デスクトップからクリップボードのコンテンツを挿入できます。

28
Byte Commander

個人的には、テキストファイルを使用しています。

  1. デスクトップ環境で、ターミナルを開き、

    echo "whatever long text you have copied" > file
    
  2. Ttyにドロップして

    $(cat file)
    
20
terdon

上記にリストされていない別の可能な回避策には、vimの使用、コマンドモードでの:!unix_commandの貼り付けと実行が含まれます。

  1. コマンドとパスをクリップボードにコピーします
  2. vimを開き、コマンドモードに移動します Esc、プロンプトを入力します :
  3. 強打 ! そして貼り付けます Ctrl + Shift + V プロンプトで以前にコピーして実行したコマンド
4
Marcellinov