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 ls
bashで)、xargsの代わりにGNU並列処理を使用します(parallel -j1
単一のCPUを使用する場合)。