私は~/bin
自分PATH
のシステムのすべてのシェルからアクセスできるお気に入りのデフォルトを含む短いスクリプトを作成し、保持しています (さまざまな時期に Dash、Bash、Fish を使用しています)。それは小さいです:
!/usr/bin/env sh
exec xargs -rd\\n "$@"
スクリプトは、標準のデフォルトx
を期待するスクリプトとの競合を避けるために呼び出されます。xargs
自分自身を置き換えようとする場合はxargs
、お勧めしませんが、 your~/bin
が system よりも PATH の上位に表示されるようにしてくださいxargs
。私のシステムには だけが存在するwhich -a xargs
ことを教えてくれるので、ホーム ディレクトリ は次のようにその前に表示されなければならないことがわかっています。xargs
/usr/bin/xargs
/home/stephen/bin
$ echo "$PATH"
/home/stephen/bin:...:/usr/bin:...
find|x grep
いずれにせよ、すべてのプログラムからアクセスできるスクリプトとして、これは、や などのことができることを意味しますsh -c 'x ...'
。
Bash を使用していて、エイリアスが必要な場合は、次のものを使用することもできます。
alias x=xargs -rd\\n\ # \n delim, don't run on empty in, + alias expansion
エイリアス展開の末尾のスペースに注意してください。これにより、エイリアスをチェーンできます。たとえば、上記のエイリアスに加えて、grep のエイリアスがあったg
場合、次のように動作します。
# extended regex, skip binaries, devices, sockets, & dirs, colored, & line
# -buffered. use a non-canonical alias instead of GREP_OPTIONS which may wreck
# assuming scripts
alias g='grep -EID skip -d skip --color=auto --line-buffered'
$ find|x g foo
x
/スクリプトのxargs
アプローチだけでは、これを効果的に行うことはできません。
私はシェルを切り替えてほとんど 1 台の PC を使用するので、必要ないくつかのエイリアスを の個別のスクリプトとして保持し、シェルに依存しないエイリアスを、をソースと~/bin
するヘルパー スクリプトに保持します。これらはすべて Bash のようなエイリアス構文をサポートするためです。 . 定期的に複数の PC で作業している場合は、代わりにこれらを 1 つに統合しようとするでしょう。~/.sh_aliases
~/.shrc
~/.bashrc
~/.config/fish/config.fish
~/.bashrc