Pipe, Redirect

스윗포테이토·2022년 11월 5일
2

간단한 리눅스 명령어 두가지와... 소소한 사용예제를 포스팅하려 한다.

Pipe

Pipe는 | 기호를 사용하며, 두 프로그램을 실행하는데, 먼저 실행한 프로그램의 결과를 다음 실행한 프로그램의 입력값으로 주는 상황에서 사용한다.

prog1 | prog2

Redirect

Redirect는 > 기호를 사용하며, 프로그램 실행 결과 출력값을 다른 곳에 저장할 때 사용한다.

prog1 > result.txt

리눅스 명령어를 잘 활용하면 반복작업에 굉장히 유리하다. 테스트 코드를 돌려볼 때 파일 입출력 코드를 작성하는 것보다는 리다이렉션으로 넘겨주는 것이 편하고, 테스트 할 때마다 코드를 썼다 지웠다 할 필요도 없다.

파이프 명령어도 은근히 많이 쓰이는데, 나는 알고리즘 문제를 풀 때도 유용하게 쓴다. 백준 등 IDE를 제공하지 않는 환경에서 문제를 풀 때, 한번에 풀면 참 좋겠지만 이상하게 잘 안풀릴 때가 있다. 예제를 계속 복사 붙여넣기로 넣는게 지칠 때 사용하면 좋다.

아래 두 파일을 한 폴더에 넣고, 텍스트 파일에 예제 입력을 써둔다.

- 실행 파일 (ex. solution.py, main)
- 예제 텍스트 파일

그리고 코드를 수정한 후 해당 폴더 위치에서

cat input.txt | python3 solution.py

해주면 매번 입력을 붙여넣을 필요가 없다.
한번 입력하면 화살표로 지난 명령어에 접근이 가능하므로 개인적으로 IDE의 실행버튼 보다 쉬운 느낌이다.

CLION 등 CMake를 사용하는 환경이라면, build 폴더 (clion - cmake-build-debug)에 접근해서

make # 변경된 소스코드를 컴파일
cat input.txt | ./main

# 혹은 한줄로
make && cat input.txt | ./main

이렇게 실행해주면 된다.

만약 실행 결과가 길거나, 알고리즘이 어떻게 돌아가는지 모르겠어서 사방 팔방에 프린트 문을 써두었다면?

cat input.txt | python3 solution.py > output.txt

이렇게 리다이렉션까지 걸어두면 출력 결과가 텍스트 파일로 저장된다.

profile
나의 삽질이 미래의 누군가를 구할 수 있다면...

0개의 댓글