コマンドラインから実行されたコマンドの出力の一部を別のxtermで使用するか、別のコマンドの一部として使用したいと思います。例えば:
> grep error error.log
error: can't find file ~/<some very long path>/thisfile
そして私はこれをしたい:
>ls ~/<some very long path>/
私はこれを行う2つの方法を知っています:
1。コピー~/<some very long path>/
マウスで。
2。 head
/tail
/awk
/sed
/Perl
/cut
/etc ..の組み合わせを使用します。出力から必要なものだけを抽出し、バッククォート内でthatを使用します。
マウスを使わずにテキストをコピーする方法はありますか?頭に浮かぶ例はVIM内のビジュアルモードですが、xterm内でそれを行う方法がわかりません。
GNU画面のコピーアンドペーストコマンドを使用できます。
クイックチュートリアル:
screen
(またはscreen myprog my args here
)画面はそれよりもはるかに強力です(特別な端末エミュレーターを必要とせずに複数の仮想端末をタブで移動するために使用します。また、Xがクラッシュしたときにセッションが失われないようにします)。画面を終了するには、シェルセッションを終了するか、次のように入力します Ctrl+a、 Ctrl+\。
XSel も同様の状況で役立ちます。 Xの選択を操作するツールです。たとえば、これはコマンドの出力をクリップボードに保存します。
grep error error.log | xsel -bi
同様の機能 からtmux
までのscreen
を使用することもできます。 tmux
に移動し、コピーする出力ができたら、次の手順でコピーして貼り付けることができます。
tmux
内のみ)貼り付けることができるようになりました Ctrl + B、 ]これらの命令は、emacsキーバインディングが有効になっていることを前提としています。 viバインディングについては、これを参照してください 比較 または単に this ステップバイステップガイドに従ってください。
OPは彼がこれをしたくないと言った、しかしここに後世のためにそれをするためのunixutilsの方法がある。これらの小さなUNIXユーティリティを学ぶと、非常に強力になります。
ls $(dirname $(grep error error.log | head -1 | cut -d "" -f 5-))
注:メモリからの構文
Xtermデバイス番号を使用して、関連するxtermに直接出力を送信できます。これがコマンドです。
xyz$ls /home/ankit/documents/etc/x/y/z > /dev/pts/0
(またはwateverはデバイス名です。開いたxtermに対してコマンド「w」を使用して取得できます)
それを試してみて、これがあなたの問題を解決するかもしれないことを願っています。