$ _ - возвращает последний аргумент предыдущей команде. При запуске оболочки он дает абсолютное имя файла исполняемого сценария оболочки. Когда вы выполняете
mkdir test
mv file.c $_
Проверьте, является ли ваш mv, cp псевдонимом
В bash для доступа к последнему аргументу предыдущей команды в истории используйте!: $, Например:
> mkdir test
> mv file.c !:$
mv file.c test