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
- "ls -al" 실행한 로그가 보이지 않는다.
- sudo를 사용해도 shell에서 redirect하면 일반사용자로 변경되어
root 권한으로 파일 생성/추가가 동작하지 않는 경우가 있다.
2. tee 명령어로 파일 저장하기 : ls -al | tee file.log
- "ls -al" 실행한 로그 출력 여부에 대해 선택할 수 있다. (tee : stdout을 화면과 파일에 동시에 출력)
- ls -al | tee file.log
- ls -al | tee file.log > /dev/null # 표준 출력(stdout)을 쓰지 않기
- root 권한이 필요한 경우, "ls -al | sudo tee file.log" # 1-2.에서 root 권한으로도 동작하지 않은 경우 해결 가능
- 표준 출력(stdout)와 표준 에러(stderr) 결과를 모두 저장할 수 있다.
- ls -al 2>&1 | tee file.log
- 표준 에러(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
- ls -al 3>&1 1>/dev/null 2>&3- | tee file.log # 에러가 없으면 파일 생성은 되지만, 내용은 null
https://skorks.com/2009/09/using-bash-to-output-to-screen-and-file-at-the-same-time/
https://tldp.org/LDP/abs/html/io-redirection.html
728x90
'Linux' 카테고리의 다른 글
Ubuntu hostname 확인/변경 (0) | 2023.03.06 |
---|---|
Ubuntu SerialNumber, MAC address 확인 (0) | 2022.12.19 |
[linux] iperf3: error - unable to connect to server: Connection timed out (0) | 2022.12.01 |
/dev/ttyUSB* 에러 별 해결 방법 (0) | 2022.11.17 |
[linux] Samba 폴더 내부/외부망에서 mount 하기 (0) | 2022.10.20 |