Как продолжить работу в командной строке после запуска sh-скрипта?
Вот небольшой пример:
#!/bin/bash
screen -x 21236.pts-0.194-67-90-155
в этом окне открыт файл через nano, и получается, что после определенного запроса в нем должно меняться содержимое строки, соответственно я не понимаю как можно автоматически ее там заменить.
Если прописать следующую строку в bash скрипте, то он ее пытается выполнять в консоли с которой я переходил в screen.
Как такое решить?
Ответы (2 шт):
я не понимаю как можно автоматически ее там заменить.
Некоторые программы просмотра/редактирования делают это сами. Например, если во время просмотра pdf файла программой okular изменить этот файл, то изменения сразу же отобразятся в окне просмотра.
Однако nano - слишком простой редактор и я сомневаюсь, что он так умеет делать.
Существует общая методика обработки таких задач:
- С помощью inotify задаём отслеживание изменений файла, который потом будет показываться в nano (См: https://mnorin.com/inotify-v-bash.html)
- Запускаем nano на этот файл
- Получив сигнал об изменении файла, прибиваем nano и запускаем его по новой.
Но всё это как-то не очень красиво... :-(
Если вы хотите смотреть какие изменения произошли в файле, то вот варианты.
- Через команду
tail -f файлможно отслеживать запись в конец файла watch -n1 cat файлбудет выводить содержимое всего файла на консоль каждую секунду, обновляя весь экран- Если файл большой, то можно указать номера строк
watch -n1 "awk 'NR >= 2 && NR <= 4' файл"- будут печататься строки 2-4 каждую секунду. watch -n1 "diff файл файл.old"- наблюдение за различиями текущего файла и его прошлой версии- Если умеете пользоваться git, то можно попробовать
watch -n1 "git diff"
nano следить за изменениями в файле не умеет