xargsは私の「ls」エイリアスを使用しません。

xargsは私の「ls」エイリアスを使用しません。

AIXでは(ただし、これはHP-UXでも発生します)、私のパスにls

xargsを使用すると、エイリアスの代わりlsに標準のUnixを使用します。

たとえば、(flocateはトピックを検索するための正確なパスを見つける関数です):

flocate mirrorvg | xargs ls -lh
ls: illegal option -- h
usage: ls [-1ACFHLNRSabcdefgiklmnopqrstuxEUX] [File...]

ls -lh /usr/sbin/mirrorvg
-r-xr-x--- 1 root system 37K apr  3  2014 /usr/sbin/mirrorvg*

xargsがエイリアスを使用しないのはなぜですかls

ベストアンサー1

このコマンドは、xargsエイリアスではなくコマンドのみを実行できます。ただし、GNU Parallel は次の機能を実行できます。

The command must be an executable, a script, a composed
command, or a function. If it is a function you need to export
-f the function first. An alias will, however, not work (see
why http://www.perlmonks.org/index.pl?node_id=484296).

だから私は以下をお勧めします:

  • 使用したいlsバージョンのフルパス(またはglsシステムにインストールされている方法に応じて明示的な名前)をxargsに提供するか、シェルが許可する場合

  • ls関数として定義し(function ls { gls "$@"; }; export -f lsbashで)、xargsの代わりにGNU並列処理を使用します(parallel -j1単一のCPUを使用する場合)。

おすすめ記事