Atribui um pouco de um nome de arquivo (possivelmente com um caminho) à variável file
. Especificamente, o bit antes do primeiro caractere .
no nome do arquivo do próprio arquivo. Em outras palavras, é preciso algo como /some/path/hello.world
e analisa o hello
bit.
Uma dica seria executar cada parte do pipeline na linha de comando:
$ 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
Os backticks são usados para retornar a saída do pipeline e atribuí-la a file
. O $1
é o primeiro argumento na linha de comando (para qualquer script ou função de shell da qual faça parte).
É provável que a única razão xargs -n 1 basename
seja usada em vez de basename
simples é que o utilitário basename
não lê da entrada padrão, mas xargs
faz.
Uma versão mais curta (e mais rápida) da mesma coisa em bash
ou ksh93
seria
file=${1##*/}
file=${file%%.*}