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

Работая в 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 все равно будут идти на ваш терминал.

  • Как переименовать каталог из всех учетных записей пользователей
  • Разница между ". myscript "и" ./myscript "
  • Как я могу совместно использовать stdout между несколькими процессами?
  • Как быстро перейти к каталогу команды после использования 'which' или 'type'
  • Почему мы используем двойной дефис в «tar -anchored» и один дефис в «tar -b»?
  • -bash: auto: команда не найдена
  • Как я могу сделать bash более удобочитаемым?
  • bash на командном событии (или оболочке)
  • Как я могу управлять выходом после выполнения команды?
  • Можно ли определить команду в bash?
  • Какую программу я использую для проверки почты?
  • Interesting Posts

    Etekcity Scroll E1 Беспроводная мышь USB не работает с Ubuntu 14.04

    произошла ошибка tpm (7), пытающаяся прочитать значение pcr в centos

    пакетное переименование имен файлов, включая пробелы и шаблоны

    Автоматически снимать скриншот определенного дисплея в X

    Можно ли удалить префикс папки из команды `ls`

    xsetwacom Как назначить скрипт кнопке

    почему PATH не работает, когда я добавляю env в него и хочу запустить программу под env?

    Можно ли найти время прошлых сеансов пользователя?

    Заменить «o» на «0» в большом списке слов и сохранить исходное слово?

    Как рекурсивно перемещать партии из 20 файлов в пронумерованные папки из папки из 1000 файлов

    Различные стили перенаправления с netcat и tee дают разные результаты

    Эквивалент этих команд в следующих дистрибутивах

    Почему знак «меньше» не работает в качестве замены кошки в bash?

    Как читать разные строки файла для разных переменных?

    Запустить программу OpenGl на удаленном сервере

    Linux и Unix - лучшая ОС в мире.