端末 - マウスを使用せずにCLIからコピー

端末 - マウスを使用せずにCLIからコピー

CLIでコマンドをトリガーするとき、先ほど実行したコマンドをコピーしたいです。または、私が端末に書くものは何でも他の場所に貼り付けてください。マウスを使用する必要はありません。

下の画像のように更新コマンド(全体または部分)をコピーして、マウスを使わずにどこかに貼り付けたいです。

マウスを使わずにCLIからコピー

答え1

あなたはそれを使用することができますscreen(1) 選択した端末エミュレータ(xterm、、、gnome-terminal…)。

必要な機能はに内蔵されていますscreen。仕組みをよく理解してください。

  • デフォルトでは、「コマンド」キーバインディングはCtrl+Aで、「コマンド」シーケンスと特定のタスクを実行してコマンドを作成できます。
  • 「コピー」コマンドは次のとおりです。 AltGr+[
  • 「貼り付け」コマンドはAltGr+]

コマンドを「コピー」して他の端末に「貼り付け」できます。

screen面白いですね。いったん使い始めたら、どのようにまったく使われなかったのか気になります。

答え2

すでに提供されている回答に加えて、より柔軟なターミナルエミュレータに切り替えることを検討することもできます。

端末を次に変更する準備ができたらrxvt - Unicode、次のツールを使用できます。urxvt-perls:この端末エミュレータで次のキーボード機能を提供するスクリプトのコレクション。

  • テキストの選択、コピー、貼り付け
  • 順方向および逆方向検索
  • お気に入りのブラウザでURLを強調表示して開きます。

パッケージをインストールして数行だけ追加すると、~/.Xresourcesげっ歯類を永久に取り外すことができます。

答え3

次のプログラムを使用してこれを実行できますxclip

NAME
   xclip - command line interface to X selections (clip‐
   board)

インストールしたら、それを使用してXクリップボードに接続できます。残念ながら、この方法はあなたの環境では機能しませんmysql(行コピー用の独自のバッファがあります)。ただし、「一般」コマンドを実行したい場合は機能します。たとえば、

$ This is a long command line

CtrlA行の先頭に移動してコマンドを引用符で囲んでエコーするには、次のように入力します。

$ echo -e "This is a long command line" |xclip 

クリップボードをマウスの中央ボタンでクリックすると、「長いコマンドラインです」というメッセージが表示されます。

マウスを使用せずに貼り付けるには、貼り付ける場所によって異なります。次のコマンドを実行して他の端末に貼り付けることができます。

$ xclip -o

同じ端末に貼り付けることができます。 kill(切り取り)コマンドを使用してCtrlKからCtrlY

bashの履歴を使用して、端末全体にコマンドを保存することもできます。次の行を次の項目に追加します~/.bashrc

PROMPT_COMMAND='history -a; history -r'

PROMPT_COMMAND特別なbash変数です。この値を設定すると、新しいプロンプトを発行する前にコマンドとして実行されます。history -a現在のセッションの履歴が履歴ファイルに書き込まれ、history -rファイルが再ロードされます。これは、実行するすべてのコマンドが即座に履歴ファイルに書き込まれることを意味します。

長いコマンドラインを実行したときに別の端末に切り替えてEnterキーを押すと(実行または$PROMT_COMMAND新しい端末ウィンドウを開く)、その端末履歴にアクセスできるようになります。今クリックするとUp新しい端末で実行できます。

答え4

このコマンドはbashの履歴拡張を使用します(したがって、!!端末に入力した最後の行に展開されます)。xclipまたはをインストールする必要がありますxsel

echo "!!" | xclip -selection clipboard

echo "!!" | xsel -i --clipboard

これにより、最後のコマンドがCtrl+クリップボードに保存されるため、すべてのGUIプログラムに貼り付けることができます(またはvほとんどの端末エミュレータでCtrl+を使用するShiftか、vimで+を使用)。v"+p

これは二重引用符を含む特定の行で中断されます。たとえば、次のようになります。

$ echo "foo;bar"
foo;bar
$ echo "!!"
echo "echo "foo;bar""
echo foo
The program 'bar' is currently not installed. You can install it by typing:
sudo apt-get install bar

ただし、例として示したコマンドでは機能しますが、; & && | ||二重引用符がエスケープされている場合にのみ問題が発生します。

関連情報