Как продолжить работу в командной строке после запуска sh-скрипта?

Вот небольшой пример:

#!/bin/bash
screen -x 21236.pts-0.194-67-90-155

в этом окне открыт файл через nano, и получается, что после определенного запроса в нем должно меняться содержимое строки, соответственно я не понимаю как можно автоматически ее там заменить.

Если прописать следующую строку в bash скрипте, то он ее пытается выполнять в консоли с которой я переходил в screen.

Как такое решить?


Ответы (2 шт):

Автор решения: Sergey

я не понимаю как можно автоматически ее там заменить.

Некоторые программы просмотра/редактирования делают это сами. Например, если во время просмотра pdf файла программой okular изменить этот файл, то изменения сразу же отобразятся в окне просмотра.

Однако nano - слишком простой редактор и я сомневаюсь, что он так умеет делать.

Существует общая методика обработки таких задач:

  1. С помощью inotify задаём отслеживание изменений файла, который потом будет показываться в nano (См: https://mnorin.com/inotify-v-bash.html)
  2. Запускаем nano на этот файл
  3. Получив сигнал об изменении файла, прибиваем nano и запускаем его по новой.

Но всё это как-то не очень красиво... :-(

→ Ссылка
Автор решения: Total Pusher

Если вы хотите смотреть какие изменения произошли в файле, то вот варианты.

  1. Через команду tail -f файл можно отслеживать запись в конец файла
  2. watch -n1 cat файл будет выводить содержимое всего файла на консоль каждую секунду, обновляя весь экран
  3. Если файл большой, то можно указать номера строк watch -n1 "awk 'NR >= 2 && NR <= 4' файл" - будут печататься строки 2-4 каждую секунду.
  4. watch -n1 "diff файл файл.old" - наблюдение за различиями текущего файла и его прошлой версии
  5. Если умеете пользоваться git, то можно попробовать watch -n1 "git diff"

nano следить за изменениями в файле не умеет

→ Ссылка