Присваивает часть имени файла (возможно, с путем) переменной file
. В частности, бит перед первым .
символ в имени самого файла. Другими словами, он берет что-то вроде /some/path/hello.world
и анализирует бит hello
.
Советом будет запускать каждую часть конвейера в командной строке:
$ 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
Обратные кавычки используются для возврата вывода конвейера и назначения его файлу
. $1
— это первый аргумент в командной строке (для любого скрипта или функции оболочки, частью которой он является).
Вероятно, единственная причина, по которой xargs -n 1 basename
используется вместо обычного basename
, заключается в том, что утилита basename
не читает стандартные ввод, но xargs
.
Более короткая (и более быстрая) версия того же самого в bash
или ksh93
будет
file=${1##*/}
file=${file%%.*}