端末に貼り付けたテキストを解析する関数を作成したいと思います。
$ cat <<eof | grep --color sometext
> foo
> sometext
> sometext1
> a sometext
> asdf
>
> eof
sometext
sometext1
a sometext
上記の操作が機能している間は、エイリアスまたはその機能を作成できません。
alias gsi='cat <<eof | grep --color "$1"'
gsi { cat <<eof | grep --color "$1" ; }
関数定義時にリダイレクトが行われないようです。
答え1
alias 'gsi=<<eof grep --color'
置換がシェルコードとして解釈されるプリプロセッサテキスト置換と同じエイリアスとして機能することができます。
あなたのシステムはあなたがやった方法で動作しません"$1"
。gsi file.txt
で置き換えられたcat <<eof | grep --color "$1" file.txt
シェルはコマンドラインの解釈を行い、$1
この時点であらかじめ実行しない限り、シェルの最初の位置引数は空にすることができますset something
。だから"$1"
ここで削除したいと思います。 UUOCを削除することもできます。
gsi() { cat <<eof | grep --color "$1" ; }
eof
後ろの行が欠落しているため、構文的な観点から見ると間違っていますcat <<eof
。
答え2
あなたの関数は次の文書を使用しません。
gsi () {
grep --color "$@"
}
grep
これにより、パブリックラインで他のオプションと一緒にパターンを渡し、grep
標準入力から読み取ることができます。
を押すと、入力が終了したことを知らせますCtrl+D。
上記の内容は、貼り付けた内容と結果が混在している場合がありますgrep
。まず貼り付けた内容を集めてくださいそれから実行するには、grep
次のものを使用できます。
gsi () {
trap 'rm -f "$buffer"' RETURN
local buffer="$(mktemp)"
cat >"$buffer" && grep --color "$@" "$buffer"
}
grep
ここで貼り付けた出力は、実行される前に一時ファイルに保存されます。関数が終了すると、一時ファイルが削除されます。bash
ここに文書を貼り付けるときに後ろで起こるのがおおよそです。
答え3
ターミナルに貼り付けたいとおっしゃいました。 here-docを完全に廃棄し、適切なクリップボードユーティリティxclip
(pbpaste
Mac OS Xの場合など)を使用してください。これがxclip
完了します。
xclip -o -sel clip | grep --color 'sometext'
また、見ることができます"xclip"対"xsel"両方のユーティリティの違いについて。