일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 리눅스
- 유데미 러닝크루
- 개발
- 책
- Code Generation
- 가상환경
- 명령어
- linux
- 리버팟
- 코딩
- 도서
- 디자인패턴
- freezeD
- ExpansionTile
- 유데미 코리아
- command
- 파이썬
- 프로그래밍
- dart
- copyWIth
- 다트
- vscode
- 플러터
- riverpod
- 맥
- ListTile
- 유데미
- 개발자
- python
- flutter
- Today
- Total
승상의 코딩 블로그
[Linux] - 출력 재지정 본문
2023.09.16 - [Linux (리눅스)] - 파일에 데이터를 저장하는 입출력 재지정(I/O redirection) - '>'
이 글의 추가 포스팅이다.
리눅스에서 운영체제가 입출력 자원을 추상화하기 위해 File Descriptor(FD) 를 사용한다.
프로세스가 파일을 열면 운영체제가 해당 파일에 대한 File Descriptor 를 할당해준다.
일반적으로, 프로세스가 실행되면 STDIN(FD:0), STDOUT(FD:1), STDERR(FD:2) 를 할당받는다.
* STDOUT 은 표준 출력
* STDERR 는 표준 에러
STDOUT와 STDERR 의 출력값들은 다양한 곳에서 활용될 수 있으니 좀 더 알아보자.
들어가기전
현재 경로의 ls 를 입력하면 dump.txt 하나만 존재한다고 가정한다.
seungsang@seungsang:~/Desktop$ ls
dump.txt
표준 출력 재지정 Overwrite (1>)
seungsang@seungsang:~/Desktop# ls -l dump.txt 1> stdout.txt
seungsang@seungsang:~/Desktop# ls -l dump.txt > stdout2.txt
seungsang@seungsang:~/Desktop# cat stdout.txt
-rw-rw-r-- 1 1000 seungsang 172032 Sep 16 2023 dump.txt
seungsang@seungsang:~/Desktop# cat stdout2.txt
-rw-rw-r-- 1 1000 seungsang 172032 Sep 16 2023 dump.txt
"1>" 를 사용하면 명령어의 출력 결과를 재지정할 수 있다.
">" 는 기본적으로 1이 생략된 형태이다.
* 1은 File Descriptor 에서 STDOUT 를 의미한다.
표준 출력 재지정 Append (>>)
root@seungsang:~/Desktop# ls -l dump.txt 1>> stdout.txt
root@seungsang:~/Desktop# cat stdout.txt
-rw-rw-r-- 1 1000 seungsang 172032 Sep 16 2023 dump.txt // 기존에 있던 행
-rw-rw-r-- 1 1000 seungsang 172032 Sep 16 2023 dump.txt // 추가된 행
">>" 를 사용하면 기존 내용에 데이터가 추가된다.
표준 에러 재지정(2>)
seungsang@seungsang:~/Desktop$ ls -l dump2.txt 2> stderr.txt
seungsang@seungsang:~/Desktop$ cat stderr.txt
ls: cannot access 'dump2.txt': No such file or directory
dump2.txt 파일은 존재하지 않으므로 ls 명령시 에러가 발생할 것이다.
"2>" 를 사용하면 에러 메시지의 결과를 재지정할 수 있다.
* 2는 File Descriptor 에서 STDERR 를 의미한다.
표준 출력과 표준 에러 재지정( 1> ~~~ 2>&1)
root@seungsang:~/Desktop# ls -l dump.txt dump2.txt 1> stdout_err.txt 2>&1
root@seungsang:~/Desktop# cat stdout_err.txt
ls: cannot access 'dump2.txt': No such file or directory // 표준 에러
-rw-rw-r-- 1 1000 seungsang 172032 Sep 16 2023 dump.txt // 표준 출력
단순히 2>1 을 적으면 1이라는 파일에 저장하라는 의미가 된다.
&1 은 File Descriptor 의 표준 출력(STDOUT)을 의미하므로 2>&1 를 써준다.
모든 출력을 버리고 싶을 때
root@seungsang:~/Desktop# ls -l dump.txt dump2.txt 1> /dev/null 2>&1
root@seungsang:~/Desktop#
출력할 필요도, 저장할 필요도 없다면 /dev/null 에다가 값을 버릴 수 있다.
/dev/null 은 실제로 존재하지 않는 장치이다. 이곳에 데이터를 기록하면 즉시 삭제된다.
/dev/null 을 읽으면 아무것도 읽히지 않는다.
'Linux (리눅스)' 카테고리의 다른 글
가상환경 설정 시 Virtualization(가상화)와 Emulation(에뮬레이션) 차이 (0) | 2024.10.20 |
---|---|
[Linux] 초기 root 계정 비밀번호 변경하는 방법 (2) | 2024.09.19 |
파일에 데이터를 저장하는 입출력 재지정(I/O redirection) - '>' (0) | 2023.09.16 |
jobs - 복잡하지 않게 하나의 터미널에서 프로그램 관리를 도와주는 명령어 (0) | 2023.09.06 |
리눅스 파일 권한 (0) | 2023.09.03 |