Это был мой коллега, который выполнил кучу команд в терминале, [...] он выполнил cat|bash
перед вставкой этого набора команд
Он, вероятно, это остановит Bash интерпретировать что-либо в командах как редактирование ввода, переопределять любые специальные сочетания клавиш и псевдонимы, которые он настроил, и / или предотвращать использование команд потоком команд в качестве ввода.
Рассмотрим эту команду с двумя встроенными символами табуляции:
if true
then
echo "yup"
fi
Вот что происходит, когда вы вставляете ее в оболочку (поскольку символы табуляции вызывают завершение табуляции при интерактивном вводе):
$ if true
> then
>
Display all 2600 possibilities? (y or n)
! grub-mkfont pnmmontage
./ grub-mkimage pnmnlfilt
: grub-mklayout pnmnoraw
А вот фрагмент кода, который включает ssh
:
ssh localhost uptime
echo "Finished"
Когда вы вставляете его в оболочку, вторая команда получает в качестве ввода ssh
, так что вы получите следующее:
$ ssh localhost uptime
09:53:40 up 28 days, 18:33, 25 users, load average: 0.06, 0.01, 0.00
В обоих случаях вставка вместо cat | bash
вызовет выполнение команд как есть.