Это приглашение оболочки, точнее, это основное приглашение оболочки (их несколько). Это способ оболочки сказать: «продолжайте, я готов к вводу данных сейчас».
Подсказка %
часто встречается в оболочках типа csh
, а в оболочках sh
(таких как bash
и ksh93
) обычно использует $
в качестве подсказки.
Подсказка обычно меняется на #
для пользователя root, поскольку достаточно опытный пользователь должен напоминать об этой возможности, имея альтернативную подсказку (согласно стандарту POSIX).
Основное приглашение в оболочках типа sh
определяется значением переменной оболочки PS1
.
Резюме приведенных ниже комментариев с дополнениями:
Символ #
приглашения root (используется оболочками sh
и csh
) чтобы совпадать с общим символом комментария оболочки. Копирование и вставка команды от имени пользователя root приведет к тому, что вставленная команда станет неработоспособной, если также будет скопировано приглашение оболочки. Обратите внимание, что #
был принят в качестве приглашения root до того, как в оболочке появилось соглашение о комментариях (ссылка: электронное письмо от Дуга Макилроя ).
Оболочки es
и rc
Plan 9 используют символ ;
в качестве подсказки по умолчанию. Следствием этого является то, что копирование и вставка команды, включая подсказку, по-прежнему будет означать, что вставленная команда действительна (и она будет выполнена).
Один из способов включения пользовательского, но по-прежнему доступного для копирования приглашения оболочки — использовать : something ;
, где something
может быть текущим каталогом, имя хоста или время, например.
Мне удалось найти решение, но пока не в одной строчке. Я все еще работаю над этим.
Предполагая, что вы можете доверять дате создания / изменения файловой системы, можно использовать find для создания списка файлов, вывода его в текстовый файл, а затем с помощью цикла выполнить scp на целевом сервере. Кажется, я не могу правильно получить результат поиска непосредственно в scp.
Я использовал вспомогательную программу sshpass , но было бы лучше использовать ключевые файлы, я знаю
найти файлы на исходном сервере с целевого сервера и сохранить результат, ограничив результат только одним каталогом и только файлы.
sshpass -p 'MyPassword' ssh [user@server] "find [path/to/look/in] -maxdepth 1 -mtime -1 -type f" > /tmp/last-24-hours-file-list.txt
Зациклить выходной файл и вызвать scp для каждого файла
while read filename; do sshpass -p 'MyPassword' scp -Crpv [user@server]:$filename [path/to/save/to]; done < /tmp/last-24-hours-file-list.txt