C.W.K.
Stream
Lesson 02 of 10 · published

Output Redirection — > 와 >>

~10 min · redirect, stdout, append

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

화면 갈 출력을 파일로

cmd > file 은 stdout 을 file 로 보내고 기존 내용을 날려. cmd >> file 은 끝에 append. 화면은 비어 — 프로그램이 stderr 에도 쓰지 않는 한.

Truncate vs append

  • > — 덮어쓰기. cmd 실행 전에 파일을 0 으로 비움.
  • >> — append. 기존 내용 유지.

truncate 은 일찍 일어나 — cmd 가 즉시 실패해도 파일은 이미 비워졌어. 새로 쓰거나 실패하길 원하면 set -o noclobber + >| 사용 (아래 callout 참고).

파일에서 stdin 으로

cmd < file 이 파일 내용을 cmd 의 stdin 으로 보내. wc -l < lines.txt 가 cat 안 띄우고 줄 수 세. sort < data.txt, tr a-z A-Z < input.txt 가 표준 패턴.

Redirection 합치기

쌓을 수 있어: cmd < in.txt > out.txt 2> err.txt. 다른 fd 는 순서 무관, 같은 fd 는 순서 중요: cmd > out.txt 2>&1 은 stderr 를 stdout 의 현재 목적지로 (= out.txt). cmd 2>&1 > out.txt 는 stderr 를 원래 stdout (=화면) 으로 보내고 그 후에 stdout 만 out.txt 로 — 결과 다름.

Code

Append vs Overwrite·bash
echo 'first'  > log.txt
echo 'second' > log.txt          # overwrites
echo 'third'  >> log.txt         # appends
cat log.txt                      # second\nthird
stdout / stderr 둘 다 한 파일로·bash
# Bash / zsh — order matters
make all > build.log 2>&1
# Bash 4+ shorthand
make all &> build.log
# Append both
make all >> build.log 2>&1

External links

Exercise

echo 'first' > log.txt, echo 'second' > log.txt, echo 'third' >> log.txt, cat log.txt 차례로. second + third 만 남는 거 확인. 이어서 set -o noclobber; echo nope > log.txt 가 거부하는 거 확인.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.