このコマンドライン( `echo $1 | xargs -n 1 basename | cut -d '.' -f1`)は何をしますか? [閉鎖]

このコマンドライン( `echo $1 | xargs -n 1 basename | cut -d '.' -f1`)は何をしますか? [閉鎖]

このコマンドラインを理解する必要があります。

file=`echo $1 | xargs -n 1 basename | cut -d '.' -f1`

ベストアンサー1

ファイル名の一部(パスを含む)を変数に割り当てますfile。具体的には、.ファイル自体のファイル名の最初の文字の前のビットです。つまり、このようなことを取り、ビットを/some/path/hello.world解析しますhello

1つの秘密は、コマンドラインでパイプラインの各部分を実行することです。

$ thing="/some/path/hello.world"

$ echo "$thing"
/some/path/hello.world

$ echo "$thing" | xargs -n 1 basename
hello.world

$ echo "$thing" | xargs -n 1 basename | cut -d '.' -f 1
hello

バックティックはパイプの出力を返し、に割り当てるために使用されますfile。これは$1、コマンドラインの最初の引数(対応するスクリプトまたはその関数が属するシェル関数の場合)です。

xargs -n 1 basenameプレーンの代わりに使用する唯一の理由は、ユーティリティが標準入力から読み取らず、標準入力から読み取るbasenameためです。basenamexargs

bashorで同じもののより短くて速いバージョンksh93です。

file=${1##*/}
file=${file%%.*}

おすすめ記事