Как команда в трубе может читать с клавиатуры? [дубликат]

Это расширение параметра, которое возвращает длину параметра, или количество элементов в массиве, или количество позиционных параметров.

Прочтите, пожалуйста, руководство к вашей оболочке. Следующее взято из руководства bash :

$ {# параметр}

Длина в символах значения параметра заменяется на . Если параметр равен * или @ , подставляемое значение представляет собой количество позиционных параметров. Если параметр представляет собой имя массива с нижним индексом * или @ , заменяемое значение представляет собой количество элементов в множество. Если параметр является именем индексированного массива с нижним индексом отрицательного числа , это число интерпретируется как относительное к , большему, чем максимальный индекс параметра, поэтому отрицательные индексы отсчитывают от конца массива, а индекс -1 ссылается на последний элемент.


А также , пожалуйста, не делайте привычки работать в интерактивной корневой оболочке. Это в лучшем случае опасно и безрассудно. Используйте sudo экономно и только в ситуациях, когда требуются повышенные привилегии. Поиграться с bash - это то, что вы определенно можете сделать как обычный пользователь без полномочий root.

В последние несколько лет я использовал интерактивную корневую оболочку только для ручного добавления одного пользователя для себя.Это 2-минутная работа, и затем мне никогда никогда не нужно снова видеть приглашение # на этой машине.

1
13.04.2016, 12:39
2 ответа
cat /some/file | ssh user@machine 'cat >/destination/file

Это не работает, потому что ssh усекает свой stdin перед отображением запроса и чтением пароля (безопасность) . Возможный обходной путь - использовать сценарий expect , который будет взаимодействовать с запущенным процессом ssh .

1
27.01.2020, 23:35

Теги

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