개발/Visual Studio Code

커맨드 팔레트 36부: VS Code Terminal 탭에서 같은 Task 바로 재실행하기

반응형
VS CODE 초보자 시리즈 · 커맨드 팔레트 36부

Terminal 탭에서 같은 Task 바로 다시 실행하기

완료된 Task Terminal을 그대로 선택해 Rerun Task를 실행하고, 같은 전용 Terminal에서 새 실행 결과를 확인합니다.

JCOS Task Terminal 재실행을 한 번 실행한 뒤 그 Task Terminal의 Rerun Task 액션 또는 Ctrl+Shift+R을 사용합니다.

같은 전용 Terminal 탭에서 새 RUN_ID가 출력되고 이전 값과 달라지면 완료입니다.

1. 시작하기 전에

난이도는 초급입니다. .vscode/tasks.json 한 파일을 편집하고 안전한 로컬 PowerShell 프로세스를 두 번 실행합니다. 확장 설치, 관리자 권한, 외부 전송은 없습니다.

준비할 것

  • 자신이 만든 연습 폴더 — Explorer의 최상위 폴더명과 일반 Terminal의 Get-Location이 일치하는지 확인합니다.
  • Windows PowerShell — 일반 Terminal에서 $PSVersionTable.PSVersion을 실행해 버전이 보이는지 확인합니다.
  • 복원 수단 — 기존 .vscode/tasks.json이 있으면 백업하거나 소스 제어 상태를 확인합니다.

적용 환경 Windows 11 · VS Code Stable 1.136.1 · 영어 명령명 기준 · PowerShell 5.1 이상

안전하게 시작하기 예제는 화면에 문자열만 출력하지만 Task 실행은 새 로컬 프로세스를 시작합니다. command가 powershell.exe이고 마지막 args가 Write-Output뿐인지 사람이 확인한 뒤 실행하세요. 중단 조건: 실제 프로젝트이거나 기존 Task의 소유·복원 방법을 모르면 파일을 바꾸지 않습니다.

2. 알아둘 핵심 개념

Task Terminal

FACT VS Code Task가 만든 Terminal입니다. VS Code는 이 Terminal에 마지막으로 연결된 Task를 추적하며 Task 전용 액션을 제공할 수 있습니다.

Rerun Task와 Rerun Last Task

FACT Rerun Task의 command ID는 workbench.action.tasks.rerunForActiveTerminal입니다. Task Terminal이 활성일 때 그 Terminal과 연결된 Task를 다시 시작합니다. 전역 Rerun Last Task(workbench.action.tasks.reRunTask)와 대상 범위가 다릅니다.

전용 Terminal

FACT presentation.panel의 String 값 "dedicated"는 같은 Task가 자기 전용 Terminal을 선호하게 합니다. 다른 Task의 출력과 섞이지 않아 재실행 전후를 비교하기 쉽습니다.

3. 순서대로 진행하기

각 단계의 정상 결과를 확인한 뒤 다음 단계로 이동합니다.

1. 연습 폴더와 백업 확인

목적 기존 작업을 보호합니다.

  1. Explorer에서 현재 폴더명과 .vscode/tasks.json 존재 여부만 확인합니다. 일반 Terminal의 Get-Location도 확인합니다.

입력 위치 VS Code Explorer와 일반 PowerShell Terminal

Get-Location
정상 결과 연습 폴더가 맞고 기존 Task를 복원할 방법이 있습니다.

확인 Explorer와 Get-Location의 폴더가 같습니다.

실패 신호 실제 프로젝트이거나 기존 파일의 소유·내용을 모릅니다.

주의 확인 전에는 파일을 편집하지 않습니다. 되돌리기: 자신이 소유한 새 연습 폴더를 연 뒤 Step 1부터 다시 시작합니다.

2. Task 실행 영향 확인

목적 실행 전 Human Gate를 통과합니다.

  1. 아래 예제의 command와 마지막 args가 Write-Output만 수행하는지 읽습니다.

입력 위치 Step 3의 JSON 예제

Write-Output ('RERUN_TASK_LAB RUN_ID=' + [guid]::NewGuid().ToString('N').Substring(0,8))
정상 결과 삭제, 덮어쓰기, 설치, 권한 상승, 네트워크 전송 명령이 없습니다.

확인 Remove-Item, Set-Content, Invoke-WebRequest가 없습니다.

실패 신호 예제가 아닌 명령이 섞였거나 내용을 설명할 수 없습니다.

주의 이해하지 못한 명령은 실행하지 않습니다. 되돌리기: 실행을 중단하고 예제와 정확히 대조한 뒤 Step 3으로 이동합니다.

3. 전용 Terminal Task 만들기

목적 Terminal별 재실행 대상을 분명히 합니다.

  1. 연습 폴더의 .vscode/tasks.json에 아래 Task를 추가하고 저장합니다. 기존 tasks Array가 있으면 전체 파일을 덮어쓰지 말고 객체 하나만 추가하세요.

입력 위치 Workspace 루트의 .vscode/tasks.json

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "JCOS Task Terminal 재실행",
      "type": "process",
      "command": "powershell.exe",
      "args": [
        "-NoLogo",
        "-NoProfile",
        "-Command",
        "Write-Output ('RERUN_TASK_LAB RUN_ID=' + [guid]::NewGuid().ToString('N').Substring(0,8))"
      ],
      "problemMatcher": [],
      "presentation": {
        "reveal": "always",
        "panel": "dedicated",
        "clear": false,
        "focus": false,
        "showReuseMessage": false
      }
    }
  ]
}
정상 결과 Problems에 JSON 오류가 없고 Task 목록에 label이 보입니다.

확인 파일 우측 아래 언어 모드와 빨간 밑줄 유무를 확인합니다. Placeholder는 없습니다.

실패 신호 Expected comma, Property expected 또는 label 누락입니다.

주의 기존 Task 파일을 통째로 대체하지 않습니다. 되돌리기: 오류 원문과 줄 번호를 보존하고 괄호·쉼표·따옴표를 복구한 뒤 Step 3에 재합류합니다.

4. 첫 실행으로 Task Terminal 만들기

목적 재실행 액션이 연결될 Task Terminal을 만듭니다.

  1. Command Palette에서 Tasks: Run Task를 열고 JCOS Task Terminal 재실행을 한 번 선택합니다.

입력 위치 Command Palette

RERUN_TASK_LAB RUN_ID=<8자리 값>
정상 결과 Task Terminal이 열리고 종료 코드 0으로 끝납니다.

확인 첫 RUN_ID 8자리를 복사하거나 눈으로 기억합니다.

실패 신호 label을 찾을 수 없거나 PowerShell 오류가 납니다.

주의 확인한 예제 Task만 실행합니다. 되돌리기: Terminal 오류 원문을 보존하고 Step 3의 label·command·args를 확인한 뒤 다시 실행합니다.

5. Task Terminal 액션 확인

목적 전역 마지막 Task가 아니라 현재 Terminal의 Task를 대상으로 합니다.

  1. Terminal 탭 목록에서 JCOS Task Terminal 재실행을 선택하고 순환 화살표 버튼을 찾습니다. 보이지 않으면 탭을 오른쪽 클릭해 Rerun Task를 찾습니다.

입력 위치 Terminal 탭의 인라인 도구 모음 또는 컨텍스트 메뉴

Command ID: workbench.action.tasks.rerunForActiveTerminal
정상 결과 Task Terminal에서 Rerun Task 액션이 보입니다.

확인 일반 PowerShell Terminal 탭과 Task Terminal 탭을 번갈아 선택해 차이를 봅니다.

실패 신호 Task Terminal이 선택되지 않았거나 액션이 어느 Terminal에도 없습니다.

주의 일반 Terminal의 명령 재실행 기능과 혼동하지 않습니다. 되돌리기: Step 4의 Task를 다시 실행하고 그 Task Terminal을 선택한 뒤 Step 5에 재합류합니다.

6. 같은 Terminal에서 Task 재실행

목적 선택한 Terminal에 연결된 Task를 즉시 다시 실행합니다.

  1. Rerun Task를 한 번 누릅니다. 키보드 경로는 Terminal에 포커스를 두고 Ctrl+Shift+R을 한 번 누릅니다.

입력 위치 활성 Task Terminal

첫 실행: RERUN_TASK_LAB RUN_ID=3a91c7e2
재실행: RERUN_TASK_LAB RUN_ID=b84d205f
정상 결과 같은 전용 Terminal 탭에서 새 프로세스가 실행되고 새로운 RUN_ID가 보입니다.

확인 두 값이 다르고 Terminal 탭이 별도 일반 Terminal로 바뀌지 않았는지 확인합니다. 예시 ID는 실행마다 달라지는 Placeholder입니다.

실패 신호 아무 반응이 없거나 다른 Task가 실행되거나 Terminal 탭이 사라집니다.

주의 실행 중 Task라면 재실행은 먼저 해당 Task를 종료하려고 합니다. 실제 장기 작업에는 사용하지 마세요. 되돌리기: 단축키 대신 컨텍스트 메뉴를 사용하고, 실패하면 오류를 보존한 뒤 Step 7로 이동합니다.

7. 액션이 없을 때 안전한 fallback

목적 대상이 불분명한 상태에서 잘못된 Task를 실행하지 않습니다.

  1. 같은 Task가 확실히 마지막 실행이었다면 Command Palette의 Tasks: Rerun Last Task를 한 번 사용합니다. 확실하지 않으면 Tasks: Run Task에서 정확한 label을 다시 선택합니다.

입력 위치 Command Palette

대상 확인: JCOS Task Terminal 재실행
출력 확인: RERUN_TASK_LAB RUN_ID=<새 값>
정상 결과 정확한 label의 출력만 새로 생깁니다.

확인 실행 label과 출력 접두사 RERUN_TASK_LAB을 함께 확인합니다.

실패 신호 다른 Task 출력이 보이거나 Quick Pick이 예상과 다릅니다.

주의 마지막 Task가 불분명하면 전역 재실행을 쓰지 않습니다. 되돌리기: 추가 실행을 중단하고 Tasks: Terminate Task로 상태를 확인한 뒤 Step 4에 재합류합니다.

8. 완료 확인과 롤백

목적 완료 조건을 독립 확인하고 연습 변경을 되돌립니다.

  1. Terminal 탭 이름, 서로 다른 두 RUN_ID, panel: "dedicated"를 교차 확인한 뒤 추가한 Task 객체만 제거하거나 백업을 복원합니다.

입력 위치 Terminal 탭과 .vscode/tasks.json

완료: 같은 Task Terminal + 서로 다른 RUN_ID 2개 + panel="dedicated"
정상 결과 재실행 성공이 확인되고 기존 Task 구성은 보존됩니다.

확인 저장 후 Tasks: Run Task에서 연습 label이 사라지고 기존 Task는 남아 있습니다.

실패 신호 기존 Task까지 사라지거나 JSON 오류가 생깁니다.

주의 자동화가 독자의 파일을 삭제하지 않습니다. 되돌리기: VS Code Undo 또는 준비한 백업으로 복원하고 JSON 오류가 0인지 다시 확인합니다.

4. 완료 확인하기

입력 화면과 독립된 방법을 포함해 결과를 교차 확인합니다.

  • 실제 Task 파일을 JSON으로 파싱했을 때 presentation.panel이 String "dedicated"입니다.
  • 같은 명령을 새 프로세스로 두 번 실행하면 두 결과 모두 RERUN_TASK_LAB RUN_ID=로 시작하고 ID가 다릅니다.
  • UI Human Gate에서 Task Terminal의 Rerun Task를 사용한 뒤 같은 탭에 새 ID가 보입니다.
완료 기준 대상 Task Terminal을 선택하고 Rerun Task를 한 번 실행해 같은 전용 Terminal에서 서로 다른 두 RUN_ID를 확인하며, Rerun Last Task와 대상 차이를 설명할 수 있습니다.

5. 문제가 생겼다면

Rerun Task가 보이지 않습니다

먼저 확인 일반 Terminal이 아니라 Task가 만든 Terminal인지, Task 실행이 한 번 완료됐는지 확인합니다.

복구 Tasks: Run Task에서 정확한 label을 다시 실행하고 그 Task Terminal 탭을 선택합니다.

재합류 Step 5.

Ctrl+Shift+R이 다른 동작을 합니다

먼저 확인 Terminal 포커스와 사용자 키 바인딩 충돌을 확인합니다.

복구 단축키 대신 탭 오른쪽 클릭의 Rerun Task를 사용합니다. 단축키를 임의로 재지정하지 않습니다.

재합류 Step 6.

다른 Task가 실행됩니다

먼저 확인 사용한 명령이 Rerun Task인지 Rerun Last Task인지 확인합니다.

복구 잘못 실행된 작업의 영향과 출력을 보존하고 필요할 때만 Tasks: Terminate Task를 사용합니다.

재합류 Step 5.

새 Terminal 탭이 생깁니다

먼저 확인 presentation.panel이 String "dedicated"인지, 다른 label의 Task를 실행한 것은 아닌지 확인합니다.

복구 값을 수정하고 기존 실습 Terminal을 닫은 뒤 정확한 Task를 다시 실행합니다.

재합류 Step 4.

재실행 여부를 모르겠습니다

먼저 확인 두 RUN_ID를 비교합니다. 동일하거나 한 줄뿐이면 완료로 판정하지 않습니다.

복구 컨텍스트 메뉴의 Rerun Task를 한 번만 누르고 새 8자리 값을 확인합니다.

재합류 Step 6.

핵심 판단 원인을 확인하지 못하면 Terminal의 오류 원문과 Task label을 보존하고 임의 변경 없이 중단합니다.

6. 핵심 정리와 공식 자료

  • FACT Rerun Task는 Task Terminal 컨텍스트의 명령이며 command ID는 workbench.action.tasks.rerunForActiveTerminal입니다.
  • FACT Stable 소스는 Terminal 인스턴스와 연결된 Task를 찾아 다시 시작합니다.
  • FACT panel: "dedicated"는 같은 Task의 전용 Terminal 재사용을 선호합니다.
  • PROCEDURE 첫 실행으로 Task Terminal을 만든 뒤 그 탭의 액션 또는 Ctrl+Shift+R을 사용합니다.
  • RECOMMENDATION 대상 Terminal이 불분명하면 전역 재실행 대신 Tasks: Run Task에서 정확한 label을 다시 고릅니다.

공식 자료

아래 자료는 2026-09-04 Asia/Seoul에 확인했습니다. Stable API와 고정 commit 소스는 Windows x64 User Stable 1.136.1에 적용되며, UI 배치와 번역 명칭은 이후 버전·언어 팩에서 달라질 수 있습니다.

다음 편 예고 커맨드 팔레트 37부에서는 Tasks: Rerun All Running Tasks로 실행 중인 여러 Task를 한 번에 다시 시작하고, 개별 출력 표식과 안전한 중단 경로를 확인합니다.
반응형
이 글이 유용했다면 링크를 공유해 보세요.