тут подключаешься к устройству и пишешь команды, в фоне крутится cat который выводит результаты.
Когда введешь пустую строку, скрипт завершится и прибьет фоновый cat.
Fedor_Korpatov,
Да просто надо много писать. В процессе написания сталкиваешься с тем, что как разрастается твоя поделка, становится неудобно что-то делать, в этот момент осознаешь смысл архитектурного планирования и становится понятным применение определенных паттернов или технологий.
Можно подключиться к какой-нить опенсорс разработке, посидеть там несколько месяцев чтобы понять что происходит в проекте, и последить за работой других.
Просто я ответственно заявляю, что на хелловордах ничего не будет понятно. Понятно становится, когда проект становится достаточно сложным, чтобы влезать в голову одного человека - тогда становится понятно зачем все эти ООП, гиты, почему берут готовые библиотеки, вместо того чтобы писать свои велосипеды. И становится понятно на видимых примерах, которые в голове уже остаются надолго, потому что чужой опыт прочитанный в книжках - вылетает из головы на раз-два, не успеваешь обложку закрыть.
да.
Можешь просто поэкспериментировать - введи команду, проверь хистори. Введи пробел и команду, проверь хистори - если команда с пробелом там отсутствует, значит уже все правильно. Если нет, то выполни
HISTCONTROL=ignorespace
и поэкспериментируй снова.
Если запускаешь скрипт, то линукс по умолчанию запускает отдельный баш процесс, который выполняет скрипт. Твой баш процесс и баш процесс скрипта естественно имеют разную историю.
Но, команды, которые были выполнены внутри скрипта, в историю не записывают, запишется только сам запуск скрипта.
Если хочешь скрыть выполнение единичной команды, в баш просто пишешь пробел и команду - она не попадет в историю.
(потому что обычно переменная HISTCONTROL имеет значение ignorespace, иначе ее нужно установить:
HISTCONTROL=ignorespace)
Вкратце, логика хистори такова:
все команды сохраняются в памяти шелла.
При корректном выходе, из памяти оно сохраняется в файл.
Если запустить скрипт обычным способом, он же запускает НОВЫЙ шелл, у которого в памяти будет не то, что было выполнено, а то, что уже скинуто в файл.
поэтому можно запустить скрипт без запуска дочернего баш-процесса.
Пример:
myscript.sh: history
запуск:
./myscript.sh
выведет только то, что в файле
запуск
source ./myscript.sh
выведет последние команды текущего шелла
p.s. у команды source есть алиас - точка, поэтому часто можно увидеть так:
. ./myscript.sh
тут не нужно путать первую и вторую точку - первая это команда source, вторая - указание что это текущая директория ./
с пайпом рут не нужен, просто на файловой системе пайп и доступ обоим пользователям.
read можно в цикл обернуть, чтобы вычитывать все что туда пишет другой юзер (ну или если не на баш, просто вычитывать потихоньку)
залогиниться и умел в командную строку - разные вещи.
у меня малой тоже в два года мог напечатать на компе буквы, и не было проблем с тем, чтобы сказать ему "напиши логин и пароль". Но это не тоже самое, и никакого отношения к программированию это не имеет.
SHA_bash,
А пораскинуть мозгами и внимательнее посмотреть на свой вопрос ОБЪЕКТИВНО?
Я вот не вижу никаких подвохов - просто две команды.
Ты попробовал их выполнить?
Если да, то что конкретно не получилось? Какая возникла проблема, что пришлось обратиться сюда?
Можно на баше сделать примерно так, чтобы писать команды и получать ответ:
тут подключаешься к устройству и пишешь команды, в фоне крутится cat который выводит результаты.
Когда введешь пустую строку, скрипт завершится и прибьет фоновый cat.