コマンド出力を新しいコマンドで編集します。

コマンド出力を新しいコマンドで編集します。

編集してコマンドで実行したい文字列を出力するスクリプトがあります。

たとえば、私は

cat ... | xsel -p

その後、「xsel -op」の出力を編集し、編集した文字列を新しいコマンドで実行しようとします。

だから私は努力しています:

cat ... | xsel -p
$(xsel -op) TAB

しかし、当然失敗しました。

xsel -opもしそうなら(この場合)、内容をコマンドラインに出力し、新しいコマンドを編集してからそのコマンドを実行するにはどうすればよいですか?

ありがとう

答え1

~からzsh 組み込み関数:

-zスペースで区切られた引数を編集バッファスタックにプッシュします。

xselの内容をコマンドラインに出力するには:

print -z $(xsel -op)

答え2

次のようにして履歴に追加できます(少なくともbashでは、zshではわかりません)。

history -s $(xsel -op)

その後、検索して編集します。

それ以来、私は発見した。

print -s $(xsel -op)

zshでも有効です。

答え3

レコードに手動で追加する必要なく、bashshell-expand-lineキー(M-C-e)を押すだけです。

   shell-expand-line (M-C-e)
          Expand the line as the shell does.  This performs alias and his‐
          tory expansion as well as all of the shell word expansions.  See
          HISTORY EXPANSION below for a description of history expansion.

答え4

私はあなたが何をしたいのか完全にはわかりませんが、次のように動作するはずです。

`xsel -op | sed 'do something'`

バックティックを使用すると、BASHが実行されます。この場合、sedで編集したXのデフォルト選択バッファに保存されているすべてのエントリが実行されます。たとえば、

echo "find . -name foo" | xsel -p
`xsel -op | sed 's/foo/bar/`

上記のコマンドをfind実行すると、「bar」というファイルまたはフォルダの検索が実行されます。

関連情報