現在の行にコマンドを少なく適用しますか?

現在の行にコマンドを少なく適用しますか?

私たちがリストしたと仮定する/usr/binと、ls次のようになります。

CC                file2c            man               sscop
Mail              find              mandoc            ssh
addftinfo         finger            manpath           ssh-add
addr2line         flex              merge             ssh-agent
...

しかし、使用することもできますls -1。以下を取得します。

CC
Mail
addftinfo
addr2line
afmtodit
alias
apply
apropos
...

1行に1つずつすべてのファイル名のリストが含まれています。出力構造は次のとおりです。ファイル名、改行文字(\n)、...

これを次にパイプできますlessls -1 | less

これで、現在行に含まれている文字列にコマンドを簡単に適用できますか?

正確にどのように実行されたかは重要ではなく、ステップ数が少なくなければならないということだけです。これは少ない量を使用するか!(不可能に見えますか?)、次のようにすることができます。何とか現在行に含まれる文字列をシェル変数などに入れます。

もちろん、Xorgでは簡単です。マウスの中央ボタンを使って貼り付けるだけです。しかし、テキストモードではできるあまり複雑ではありませんか?

答え1

あなたはそれを使用することができます|注文するファイルの一部は他のプログラムを介して転送されますが、その部分には常に少なくとも2行あります。マークでハッキングできます。tail、しかし:

  1. 目的の行を一番上に置きma(または2番目の文字の場合は別の文字)を押します。
  2. kまたはを使用して1行上にスクロールしますUp
  3. を押した|後、目的の文字をタップしてa上記の文字を置き換えます。
  4. input tail -n 1 | ......この行を標準入力として使用するコマンドはどこにありますか?

tail -n 1私たちが興味を持っている2番目の行だけを提供します。...ラインが好きなようにしてください。

標準入力の代わりにその行をコマンドの引数として使用するには、次のようにします。使用xargsまたは他の包装紙:

tail -n 1 | xargs ls -l

コマンドが何も表示されても、画面には表示されませんが、less再パイプすることができます。

tail -n 1 | xargs ls -l | less

これは入れ子になりますless。終了して元の状態に戻ってlessプロセスを繰り返すことができます。


コマンドがテキストエディタのようにインタラクティブで、標準入力がパイプまたは空であることを好まない場合は、次のことを使用できます。sh中間プロセスはコマンドを実行し、ttyを再び開きます。

xargs sh -c 'vim "$@" < /dev/tty' sh

BSDにも同じことを行うオプションがxargsあります。-o

答え2

これを達成する1つの方法は次のとおりです。

  1. 目的の選択開始位置に移動します(例:検索)。
  2. mXその後に設定表示であることを示す文字が続きます。
  3. 選択項目の終わりに移動します。
  4. |X!(これにより、標準入力で選択したコマンドを作成する必要があるプロンプトに切り替わります。
  5. 命令を入力して押します。RET

関連情報