Linux

[linux] tee로 파일 저장하기

thxxyj 2022. 12. 2. 10:32
728x90

리다이렉션 (redirection)

stdin: 표준입력, 0

stdout: 표준출력, 1
stderr: 표준에러, 2

 

>: 출력 리다이렉션 (stdout 만)
<: 입력 리다이렉션 (stdin 파일로부터 데이터 받음)
>>: 출력 리다이렉션 (append)
2>: 표준에러 리다이렉션 (stderr 만)
2>&1: 표준에러 발생하면 표준출력장치로 리다이렉트

(&n: file descriptor n이 가리키는 대상에 대한 참조)

 

1. redirect 방식으로 파일을 저장하기 : ls -al > file.log

  1. "ls -al" 실행한 로그가 보이지 않는다.
  2. sudo를 사용해도 shell에서 redirect하면 일반사용자로 변경되어 
    root 권한으로 파일 생성/추가가 동작하지 않는 경우가 있다.

 

2. tee 명령어로 파일 저장하기 : ls -al | tee file.log

  1. "ls -al" 실행한 로그 출력 여부에 대해 선택할 수 있다. (tee : stdout을 화면과 파일에 동시에 출력)
    • ls -al | tee file.log
    • ls -al | tee file.log > /dev/null           # 표준 출력(stdout)을 쓰지 않기
  2. root 권한이 필요한 경우, "ls -al  | sudo tee file.log"      # 1-2.에서 root 권한으로도 동작하지 않은 경우 해결 가능
  3. 표준 출력(stdout)와 표준 에러(stderr) 결과를 모두 저장할 수 있다.
    • ls -al 2>&1 | tee file.log
  4. 표준 에러(stderr) 결과만 저장할 수 있다.
    •  ls -al 3>&1 1>/dev/null 2>&3- | tee file.log     # 에러가 없으면 파일 생성은 되지만, 내용은 null

      <명령어 설명>
      - 1 for stdout, 2 for stderr (and 0 for stdin)

      - make a copy of the stdout file descriptor and assign it to 3
      - redirect stderr to 3 
      - little minus after the 3 when we do the last redirect, it allows us to close the file descriptor 3 now that we no longer need it

 

https://skorks.com/2009/09/using-bash-to-output-to-screen-and-file-at-the-same-time/

 

Using Bash To Output To Screen And File At The Same Time

I’ve recently written about redirecting the output of commands (standard out and standard error) to a file using bash. That is part of fundamental bash usage, but what if you want to redirect the output of a command to a file but also have that output go

skorks.com

https://tldp.org/LDP/abs/html/io-redirection.html

 

I/O Redirection

COMMAND_OUTPUT > # Redirect stdout to a file. # Creates the file if not present, otherwise overwrites it. ls -lR > dir-tree.list # Creates a file containing a listing of the directory tree. : > filename # The > truncates file "filename" to zero length. # I

tldp.org

 

728x90