이전 명령을 실행하는 동안 다음 명령을 작성하는 방법은 무엇입니까?

이전 명령을 실행하는 동안 다음 명령을 작성하는 방법은 무엇입니까?

bash(및 일반적으로 git)에서 작업할 때 자주 겪는 문제는 일부 명령을 시작하고 해당 명령이 실행되는 동안(시간이 걸릴 수 있음) 다음 명령을 기다리지 않고 즉시 실행할 다음 명령 작성을 시작하고 싶다는 것입니다. 완료하려면 이전 명령을 사용하세요. 이전 명령이 계속 실행되는 동안 다음 명령 작성을 마치면 다음 명령은 실제로 시작하기 전에 이전 명령이 완료될 때까지 기다려야 합니다.

지금까지 내가 찾은 부적절한 옵션은 다음과 같습니다.

  1. 다음 명령 작성을 시작하세요.

    문제는 내가 맹목적으로 작성하고 있다는 것입니다. 다음 명령을 입력할 수는 있지만 입력하는 내용을 볼 수는 없습니다. 이는 탭 완성과 관련하여 동작이 "예측할 수 없기" 때문에 특히 문제가 됩니다(예: cd sTab으로 확장될지 추측하기 어렵습니다 cd src).

  2. 백그라운드에서 이전 명령을 실행하는 데 사용됩니다 &.

    이는 이전 명령의 출력이 내가 작성 중인 명령과 인터리브된다는 의미입니다. 최종 결과는 이전 명령이 충분히 자주 출력된다면 옵션 #1만큼 나쁘다는 것입니다.

  3. 다음을 사용하여 이전 명령의 출력을 숨깁니다.> /dev/null

    문제는 특히 실패할 경우 이전 명령의 출력이 중요한 경우가 많다는 것입니다.

다시 한번 말씀드리자면, 다음과 같은 환경을 얻을 수 있는 방법이 있습니까?

  • 이전 명령이 실행되는 동안 다음 명령을 작성할 수 있습니다.
  • 내가 쓰고 있는 명령을 볼 수 있어요
  • 탭 완성이 제대로 작동함
  • 이전 명령의 출력이 표시됩니다.

답변1

두 가지 옵션이 있습니다:

  • 하지만 이 screen유틸리티는 일부 Linux 배포판에는 포함되어 있지 않습니다. 또한 Solaris(Unix)에는 기본적으로 포함되지 않습니다.

    Centos를 예로 들어보겠습니다.

    yum install screen
    

    이것은짧은 튜토리얼화면 유틸리티 사용법.

  • 명령 nohup; 그에 따라 stdout 및 stderr을 리디렉션합니다.

    예:

    nohup command & 
    

답변2

다음을 사용하여 현재 실행 중인 명령을 백그라운드에 넣을 수 있습니다.

  • Ctrl-Z프로세스를 일시 중지하고
  • bg백그라운드에서 다시 시작하세요.

그러면 메시지가 표시되고 다음 명령을 입력할 수 있습니다.

그러나 이전 명령의 stdout 및 stderr은 여전히 ​​터미널로 이동합니다.

관련 정보