Я думаю, вы могли бы также просто использовать пару синтаксисов Bash Parameter Expansion .
Главное было бы:
# Use a '_' as IFS value to concatenate arguments while expanding them
IFS=_
# Expand all arguments as "$*", removing their suffix if it matches ".txt"
names="${*%.txt}"
# Provide all arguments as "$@" to a `cat`, redirected to
# a file named as the concatenated names made uppercase
cat "${@?}" > "${names^^?}.txt"
# The ${@?} syntax prints an error if you don't provide arguments
Можно использовать как один -вкладыш, как в:
bash -c 'IFS=_ names="${*%.txt}"; cat "${@?}" "${names^^?}.txt"' joiner USA.txt Florida.txt Miami.txt
Или сделал функцию:
joiner () {
local IFS=_
names="${*%.txt}"
cat "${@?}" > "${names^^?}.txt"
}
для включения в сценарий или source
для редактирования из вашей интерактивной оболочки, а затем для использования так же, как в:
joiner USA.txt Florida.txt Miami.txt
Чего вы пытаетесь достичь? Если вы хотите запретить локальному пользователю покидать виртуальную машину и использовать хост-систему, все, что вам нужно, — это выйти из хост-системы после запуска виртуальной машины. Затем, если пользователь выключит виртуальную машину и покинет ее, ему будет представлен запрос на вход в систему, и он не сможет ничего сделать.
Если вы хотите, чтобы они вообще не выключали виртуальную машину, вам нужно добиться этого с помощью мер безопасности гостевой ОС.
Комбинацию Ctrl+Alt+Fx нужно отключать отдельно -это особенность ядра.
В целом то, что вы пытаетесь создать, называется «режим киоска». Попробуйте погуглить что-нибудь по этому поводу. Обычно он настраивается для браузера, но между окном виртуальной машины и любым другим приложением нет никакой разницы.