vs code에서 redirection은 어떻게 할까요? 요새 vscode를 심심찮게 이용하다 보니 간단하게 짚고 넘어가고 싶어졌습니다. 그래서, 간단하게 알아보았습니다.

 


 제 목적은 이 java 파일을 디버그 하는 것입니다. 그런데, 파일로부터 입력을 받는 것입니다. 특히, 백준 같은 경우 예제가 상당히 긴 경우가 많은데요. 이럴 때 일일히 손으로 입력할 수는 없을 겁니다.

 

 

 정말 간단한 방법은 console에 intergratedTerminal을, args에 ["<", "1.in"]을 입력해 주는 것입니다. 여기서 args는 실행시킬 때 받을 추가 인자를 의미합니다. 추가 인자에 <와 1.in이 들어갔다는 점이 중요합니다. 이는 1.in으로부터 입력을 받는다는 의미입니다. 여기까지만 설정하면 끝일 줄 알았습니다. 그런데, 윈도우는 변수가 하나 더 있습니다. 바로 power shell입니다.

 

 < 연산자가 나중에 사용하도록 예약되어 있다는 에러가 뜨면서 거부당하게 됩니다.

 

 


 그러면 어떻게 하면 좋을까요? 가장 손쉬운 방법은 vs code에서 인식하는 기본 터미널을 바꿔주면 됩니다.

 

 터미널 탭의 + 옆에 있는 버튼을 누른 다음에, 터미널 설정 구성을 클릭하겠습니다.

 

 

 다음에 Terminal > Integrated > default Profile : Windows 탭에 들어가겠습니다. 여기서 Git Bash를 선택합니다. 보통 git은 깔려있는 경우가 많을 테니, git bash를 선택하였습니다. 그러면 윈도우에서 사용되는 기본 프로필이 Git bash로 바뀌게 됩니다. 다시 터미널을 켜 보겠습니다.

 

 

 그러면, git bash로 터미널이 바뀝니다. 이제 디버그를 실행해 보겠습니다.

 


 실행되는 인자를 보겠습니다. 여러 인자가 있는데요. < 1.in이 보입니다. 1.in으로부터 입력을 받는다는 의미입니다. 1.in을 보겠습니다.

 

 3이 있네요. 제가 디버그 하려는 프로그램은 하나의 수를 입력받아 출력하는 것입니다.

 

 

 변수에 n이 3으로 잘 찍혔음을 볼 수 있습니다. 이제, 1.out으로 출력하게끔 redirect를 해 보겠습니다. 어떻게 하면 될까요? >는 출력을 리다이렉트 하는 것을 의미합니다. 고로, args에 ">", "출력 파일명"을 추가해 주면 됩니다.

 

 

 args에 ">", "1.out"을 추가하겠습니다. 다음에 다시 디버그를 실행해 보겠습니다.

 

 

 1.out에 3이 출력됩니다.