Как вывести вывод `read -p` на стандартный вывод и в другой файл

Вы можете изменить разрешение на монтирование папок, чтобы другие пользователи могли получить к ним доступ.

chown -R user:group <folder name>

P.S Смонтируйте папку на раздел перед запуском chown.

0
17.01.2020, 18:39
2 ответа

После небольшого чтения я нашел это , любезно предоставленное @lesmana, которое может помочь

Запустите скрипт с помощью

script -q -a -f logfile -c 'sh./yourscriptname'

Чтобы скрыть это ведение журнала от «пользователя», я просто поместил этот однострочный скрипт в качестве оболочки для целевого сценария, а затем вызвал целевой сценарий из оболочки.

1
28.01.2020, 02:39

РЕДАКТИРОВАТЬ:Я понял, что teeможет читать из оригинала stdin, если к нему ничего не передано, поэтому я подумал, что добавлю другое решение на случай, если оно поможет любому, кто наткнется на это позже.

Спасибо @steeldriver за указание на то, что read -pпечатает в stderr, а не stdout. Так что самое близкое, что у меня есть, это:

read -p "  - This directory is not empty, purge? (Y/N): " choice 2> >(tee -a $mylogs)
echo $choice >> $mylogs

Источник и объяснение происходящего можно найти здесь . В этом конкретном примере первая строка может перенаправить stderrна teeдля печати приглашения в $mylogsи на stdout.

Тем не менее, read, кажется, делает что-то, чтобы сделать невозможным перехват пользовательского ввода и отправку его $mylogs, а не только $choice.

Другое решение проще и короче, но менее удобно для пользователя и читабельно (, если только многие люди не знают, что read— не единственная команда для такого простого чтения ввода):

echo -n "  - This directory is not empty, purge? (Y/N): " | tee -a $mylogs
choice=$(tee -a $mylogs)

Таким образом, во второй строке teeпредоставляет способ предоставить пользователю ввод для как $mylogs, так и $choice, в отличие от read, но, очевидно, нет опции подсказки (-p). Так еще 2 строчки.

Кроме того, вы должны нажать Enter , затем Ctrl + D для отправки. Это может быть плохо для моей ситуации Y / N, но может быть хорошо для многострочных ответов -, поскольку вы можете нажать Enter несколько раз, прежде чем нажимать Ctrl + D , чтобы остановиться.

1
28.01.2020, 02:39

Теги

Похожие вопросы