Tee (명령어)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
`tee`는 표준 입력을 읽어 표준 출력과 파일에 동시에 출력하는 기능을 수행하는 명령어이다. `-a` 옵션을 사용하면 파일에 내용을 덮어쓰지 않고 추가하며, `-i` 옵션은 인터럽트 신호를 무시한다. 유닉스, 유닉스 계열, 4DOS, 4NT, Windows PowerShell 등 다양한 운영체제 및 셸 환경에서 구현되어 사용된다.
더 읽어볼만한 페이지
- 유닉스 텍스트 처리 유틸리티 - Tr (유닉스)
`tr` (유닉스)는 텍스트 변환을 위한 유닉스 명령어 유틸리티로, 문자 집합 변환, 특정 문자 삭제 등의 기능을 수행하며, 다양한 옵션과 문자 집합 지정 방식을 지원하여 셸 스크립트 등에서 활용되고, 과거 정치적 악용 사례도 존재합니다. - 유닉스 텍스트 처리 유틸리티 - Apropos
apropos는 사용자가 입력한 키워드와 관련된 매뉴얼 페이지를 검색하는 명령어로, man -k의 래퍼로 작동하며 대소문자를 구분하지 않고 매뉴얼 페이지의 이름 섹션에서 키워드를 검색하여 관련 페이지 목록을 반환한다. - 프로세스 간 통신 - Ajax
Ajax는 웹 페이지 전체를 새로고침하지 않고 비동기적으로 서버와 통신하여 웹 애플리케이션의 일부를 업데이트하는 웹 개발 기술로, XMLHttpRequest 객체의 등장으로 가능해졌으며 HTML, CSS, DOM, JavaScript, JSON 등의 기술을 통합하여 동적인 사용자 인터페이스를 구현한다. - 프로세스 간 통신 - D-Bus
D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다. - 윈도우 명령어 - 파워셸
파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다. - 윈도우 명령어 - 클립보드
클립보드는 텍스트 조각을 임시 저장하는 버퍼로, 잘라내기, 복사, 붙여넣기 기능을 구현하며, 다양한 데이터 형식을 지원하고 애플리케이션 간 데이터 교환에 사용되며 보안 취약점의 대상이 될 수 있다.
Tee (명령어) - [IT 관련 정보]에 관한 문서 | |
---|---|
설명 | |
유형 | 유닉스 명령어 |
용도 | 표준 입력으로부터 읽은 데이터를 파일과 표준 출력으로 동시에 전달 |
유래 | AT&T 벨 연구소 |
최초 릴리스 | 1974년 6월 |
구현 | AT&T 벨 연구소 Mike Parker 리처드 스톨먼 David MacKenzie Microware 짐 홀 JP Software 마이크로소프트 |
운영 체제 | 유닉스 유닉스 계열 플랜 9 인페르노 OS-9 FreeDOS 윈도우 ReactOS IBM i |
프로그래밍 언어 | C |
플랫폼 | 크로스 플랫폼 |
라이선스 | FreeDOS: GPL-2.0-or-later ReactOS: GPLv2 Plan 9: MIT 허가서 |
웹사이트 | tee (posix Section 1) man page |
2. 역사
tee영어 명령어는 유닉스 초기 버전부터 존재해 온 유서 깊은 도구이다.
tee 명령어는 표준 입력을 읽어 표준 출력과 파일(들)에 동시에 출력한다.[1] `-a` 옵션을 사용하면 파일을 덮어쓰지 않고 내용 끝에 추가하며, `-i` 옵션을 사용하면 인터럽트 신호를 무시한다.[1]
=== 유닉스 및 유닉스 계열 ===
3. 기능 및 특징
tee 명령어는 다음과 같은 종료 상태를 반환한다.[1]값 설명 0 표준 입력을 모든 출력 파일에 성공적으로 복사함 >0 오류 발생
프로세스 치환을 사용하면 둘 이상의 프로세스가 원본 프로세스의 표준 출력을 읽을 수 있다.[1]
참고: 성공적으로 열린 파일에 대한 쓰기가 실패하면, 다른 성공적으로 열린 파일과 표준 출력에 대한 쓰기는 계속되지만, 종료 값은 >0이 된다.[1]
4. 사용 예시
```bash
lint program.c | tee program.lint
```
lint 명령어의 출력을 화면에 표시하는 동시에 `program.lint` 파일에 저장한다. `program.lint` 파일이 이미 존재하면 내용을 삭제하고 새로 작성한다.
```bash
lint program.c 2>&1 | tee program.lint
```
`lint` 명령어의 표준 출력과 표준 에러를 모두 화면에 표시하고 `program.lint` 파일에 저장한다.
```bash
lint program.c | tee -a program.lint
```
`lint` 명령어의 출력을 화면에 표시하고 `program.lint` 파일에 내용을 추가한다. `program.lint` 파일이 존재하지 않으면 새로 생성한다.
```bash
cat ~/.ssh/id_rsa.pub | ssh admin@server "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null"
```
사용자의 공개 키를 서버의 키 권한 부여 목록에 추가하여 ssh를 통해 서버에 대한 루트 액세스 권한을 부여한다. 이는 sudo 명령어의 제한을 우회하는 방법이다. 표준 출력 스트림을 `/dev/null`로 보내 콘솔에 출력되지 않도록 한다.
Bash에서 출력은 표시되는 출력에 영향을 주지 않고 필터링된 다음 파일에 기록될 수 있다. 예를 들어,
```bash
ls --color=always | tee >(sed "s/\x1b[^m]*m//g" > ls.txt)
```
는 `ls.txt`에 기록하기 전에 일반적인 ANSI 이스케이프 코드를 제거하지만 표시를 위해 유지한다.
=== 윈도우 파워셸 ===
```powershell
ipconfig | tee OutputFile.txt
```
이 명령은 `ipconfig` 명령어의 출력을 콘솔 창에 표시하고 동시에 `OutputFile.txt` 파일에 저장한다.[1]
```powershell
Get-Process | Where-Object { $_.Name -like "svc*" } | Tee-Object ABC.txt | Where-Object { $_.Handles -gt 1000 }
```
실행 중인 프로세스 중 이름이 "svc"로 시작하고 핸들 수가 1000개 이상인 프로세스를 찾아 화면에 표시하고 `ABC.txt` 파일에 저장한다.[2] Windows PowerShell은 바이너리 및 원시 데이터에 적합하지 않으며 항상 스트림을 텍스트로 처리하고 전송되는 데이터를 수정한다.[3]
4. 1. 유닉스 및 유닉스 계열
bash
lint program.c | tee program.lint
```
lint 명령어의 출력을 화면에 표시하는 동시에 `program.lint` 파일에 저장한다. `program.lint` 파일이 이미 존재하면 내용을 삭제하고 새로 작성한다.
```bash
lint program.c 2>&1 | tee program.lint
```
`lint` 명령어의 표준 출력과 표준 에러를 모두 화면에 표시하고 `program.lint` 파일에 저장한다.
```bash
lint program.c | tee -a program.lint
```
`lint` 명령어의 출력을 화면에 표시하고 `program.lint` 파일에 내용을 추가한다. `program.lint` 파일이 존재하지 않으면 새로 생성한다.
```bash
cat ~/.ssh/id_rsa.pub | ssh admin@server "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null"
```
사용자의 공개 키를 서버의 키 권한 부여 목록에 추가하여 ssh를 통해 서버에 대한 루트 액세스 권한을 부여한다. 이는 sudo 명령어의 제한을 우회하는 방법이다. 표준 출력 스트림을 `/dev/null`로 보내 콘솔에 출력되지 않도록 한다.
Bash에서 출력은 표시되는 출력에 영향을 주지 않고 필터링된 다음 파일에 기록될 수 있다. 예를 들어,
```bash
ls --color=always | tee >(sed "s/\x1b[^m]*m//g" > ls.txt)
```
는 `ls.txt`에 기록하기 전에 일반적인 ANSI 이스케이프 코드를 제거하지만 표시를 위해 유지한다.
4. 2. 4DOS 및 4NT
TEE [/A] 파일...
'''인수''':파일
''' "tee'd" 출력을 받을 하나 이상의 파일.
'''플래그''':/A
''' 파이프라인 내용을 출력 파일에 덮어쓰는 대신 추가.
''tee''를 파이프와 함께 사용하면 이전 명령의 출력이 임시 파일에 기록된다. 해당 명령이 완료되면 ''tee''는 임시 파일을 읽어 출력을 표시하고 명령줄 인수로 제공된 파일에 쓴다.
다음은 파일 wikipedia.txt
에서 문자열 "4DOS"를 포함하는 모든 줄을 검색하고, 일치하는 줄의 사본을 4DOS.txt
에 만들고, 줄을 정렬하여 출력 파일 4DOSsorted.txt
에 쓰는 예제이다.
>find "4DOS" wikipedia.txt | tee 4DOS.txt | sort > 4DOSsorted.txt
4. 3. Windows PowerShell
powershell
ipconfig | tee OutputFile.txt
```
이 명령은 `ipconfig` 명령어의 출력을 콘솔 창에 표시하고 동시에 `OutputFile.txt` 파일에 저장한다.[1]
```powershell
Get-Process | Where-Object { $_.Name -like "svc*" } | Tee-Object ABC.txt | Where-Object { $_.Handles -gt 1000 }
```
이 예제는 ''tee''에 대한 파이프 입력을 필터링할 수 있으며, ''tee''가 해당 출력을 표시하는 데 사용되고, 다시 필터링되어 1000개 이상의 핸들을 소유하는 프로세스만 표시되며, 필터링되지 않은 출력을 `ABC.txt` 파일에 기록하는 것을 보여준다.[2] 즉, 실행 중인 프로세스 중 이름이 "svc"로 시작하고 핸들 수가 1000개 이상인 프로세스를 찾아 화면에 표시하고 `ABC.txt` 파일에 저장한다.
Windows PowerShell은 바이너리 및 원시 데이터에 적합하지 않으며 항상 스트림을 텍스트로 처리하고 전송되는 데이터를 수정한다.[3]
5. 구현
`tee` 명령어는 유닉스, 유닉스 계열 운영체제, Microware OS-9,[3] DOS (예: 4DOS, FreeDOS), 마이크로소프트 윈도우 (예: 4NT, Windows PowerShell) 그리고 ReactOS에서 사용할 수 있다.[4] 리눅스 `tee` 명령어는 마이크 파커(Mike Parker), 리처드 스톨만, 데이비드 매켄지(David MacKenzie)에 의해 작성되었다.[5] 이 명령어는 일반적인 GNU 유닉스 계열 유틸리티의 Win32 포팅을 위한 UnxUtils 모음의 일부로 마이크로소프트 윈도우용 별도 패키지로도 제공된다.[6] FreeDOS 버전은 Jim Hall)에 의해 개발되었으며 GPL에 따라 라이선스가 부여되었다.[7]
`tee` 명령어는 IBM i 운영 체제로도 이식되었다.[8]
이와 유사한 기능을 제공하는 명령어로 `sponge`가 있다.[9]
6. 기타
(이전 출력이 없으므로 수정할 내용이 없습니다. 원본 소스를 제공해주시면 '기타' 섹션을 작성하겠습니다.)
참조
[1]
웹사이트
Man Page for tee (posix Section 1)
http://www.unix.com/[...]
IEEE Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6
2013-12-01
[2]
웹사이트
In Unix, what do some obscurely named commands stand for?
http://kb.iu.edu/dat[...]
2012-02-03
[3]
서적
The OS-9 Guru - 1 : The Facts
Galactic Industrial Limited
[4]
웹사이트
reactos/reactos
https://github.com/r[...]
2022-01-03
[5]
웹사이트
tee: read from standard input and write to standard output and files
https://www.mankier.[...]
[6]
웹사이트
Native Win32 ports of some GNU utilities
http://unxutils.sour[...]
[7]
웹사이트
ibiblio.org FreeDOS Package -- tee (Unix-like)
http://www.ibiblio.o[...]
[8]
웹사이트
IBM System i Version 7.2 Programming Qshell
https://www.ibm.com/[...]
2020-09-05
[9]
웹사이트
sponge(1): soak up stdin/write to file - Linux man page
https://linux.die.ne[...]
[10]
웹사이트
GNU Coreutils: tee invocation
https://www.gnu.org/[...]
2016-02-03
[11]
웹인용
Man Page for tee (posix Section 1)
http://www.unix.com/[...]
IEEE Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6
2013-12-01
[12]
웹인용
In Unix, what do some obscurely named commands stand for?
http://kb.iu.edu/dat[...]
2012-02-03
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com