Как выполнить следующую команду во время выполнения предыдущего?

Работая в bash (обычно с git), то, что часто случается со мной, это то, что я запускаю некоторую команду, и пока эта команда выполняется (что может занять некоторое время), я хочу начать составлять следующую команду для выполнения сразу, не дожидаясь для завершения предыдущей команды. Если я закончу составление следующей команды, пока предыдущая команда все еще выполняется, следующая команда должна дождаться завершения предыдущего, прежде чем она начнется.

Неадекватные варианты, которые я нашел до сих пор:

  1. Просто начните писать следующую команду.

    Проблема в том, что я пишу слепой: я могу ввести следующую команду, но я не вижу, что я набираю. Это особенно проблематично, когда дело доходит до завершения табуляции, потому что оно ведет себя «непредсказуемо» (например, мне сложно догадаться, будет ли cd s Tab расширяться до cd src или нет).

  2. Выполните предыдущую команду в фоновом режиме, используя & .

    Это означает, что вывод предыдущей команды чередуется с командой, которую я пишу. Конечным результатом является то, что если предыдущая команда выдает достаточно часто, это почти так же плохо, как вариант # 1.

  3. Скрыть вывод предыдущей команды с помощью > /dev/null

    Проблема в том, что выход предыдущей команды часто важен, особенно в случае сбоя.

Чтобы повторить, есть ли способ получить среду, в которой:

  • Я могу написать следующую команду во время выполнения предыдущей команды
  • Я вижу команду, которую я пишу
  • нормально работает
  • выводится предыдущая команда

2 Solutions collect form web for “Как выполнить следующую команду во время выполнения предыдущего?”

У вас есть два варианта:

  • Утилита screen , хотя она не поставляется с некоторыми дистрибутивами Linux. Он также не включен в Solaris (Unix).

    Например, на Centos:

     yum install screen 

    Вот краткое руководство по использованию утилиты экрана.

  • Команда nohup ; перенаправить stdout и stderr соответственно:

    Пример:

     nohup command & 

Вы можете бросить текущую команду в фоновом режиме с помощью:

  • Ctrl-Z чтобы приостановить процесс, и
  • bg чтобы возобновить его в фоновом режиме.

Затем у вас появится своя подсказка, и вы можете начать вводить следующую команду.

Тем не менее, stdout предыдущей команды и stderr все равно будут идти на ваш терминал.

  • Команда для отображения содержимого каталога или вывода содержимого в файл?
  • Как именно создать сценарий sed и использовать его для редактирования файла?
  • Назначение определенной строки из переменной в другую переменную
  • случайное число
  • Как «hash -r» и обновить все оболочки?
  • Как я могу управлять выходом после выполнения команды?
  • Как получить последние N команд из истории?
  • Удалить последний символ из эхо-переменной
  • bash escape восклицательный знак внутри переменной с backtick
  • Удалить возврат каретки с помощью sed
  • Как запустить строку с командой из вывода другой команды
  • Linux и Unix - лучшая ОС в мире.