from Dictionary - Input/ Output
Input/ Output
명령을 재지정해서 파일로부터 입력받거나 파일로 출력하는 등 출력, 입력 방향을 변경할수 있다.
- 표준 입력(stdin) : 표준 입력이라고 부르는 곳에서 입력 내용을 가져옴, 기본적으로 키보드에 직접 연결
- 표준 출력(stdout) : 명령이나 프로그램 등의 실행 결과를 표준 출력에 전송, 기본적으로 화면과 연결 되어 있고 디스크파일에 따로 저장하지 않음
- 표준 오류(stderr) : 명령이나 프로그램 등의 상태 및 오류 메시지를 표준 에러에 전송, 기본적으로 화면과 연결되어 있고 디스크파일에 따로 저장하지 않음
Output Redirection
- 명령의 실행 결과나 에러 상황을 화면에 출력하지 않고 파일로 저장
>연산자를 사용한 표준 출력 재지정 (파일명 앞에 > 연산자를 사용)>연산자로 출력 방향을 지정할 때 목적 파일은 항상 처음부터 다시 작성된다. (파일 덮어씀)- 만일 파일 내용을 초기화 안시키고 이어서 쓰고싶다면,
>>연산자로 이어쓰기 를 지정한다.>>연산자는 기존 파일에 있는 정보에 이어서 추가적으로 내용을 기입 해준다.
연산 조합
$ 명령 >& 파일명
# : 명령이 실행된 표준 출력의 결과와 에러를 파일로 출력
$ 명령 >>& 파일명
# : 명령이 실행된 표준 출력의 결과와 에러를 파일로 덧붙여 출력
$ 명령 >! 파일명
# : 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과를 파일로 출력
$ 명령 >&! 파일명
# : 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과와 에러를 파일로 출력
$ 명령 >>! 파일명
# : 파일의 존재 유무와 상관없이 생성하고 파일에 덧붙여 출력
$ 명령 >>&! 파일명
# : 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과와 에러를 파일에 덧붙여 출력
Input Redirection
- 키보드 입력을 파일에서 받도록 대체 하는 것
<연산자를 사용해서 키보드로 연결한 표준 입력 방향을 파일로 변경- cat 명령어를 사용하는 것과 동일한 결과를 나타냄
Error Redirection
명령어 실행에서 에러가 발생했을때, 원래동작은 그냥 화면에 출력하고 끝이지만, 명령어를 통해 출력되는 에러 내용을 파일등으로 저장 및 출력하도록 재지정하는 것이다.
$ ls -l nullfile 2> err.txt
# ls -l nullfile은 실패하는 명령어이다. nullfile이 디렉토리에 없을경우 실패하게 된다.
# 그러한 실패err를 (2)표준오류 지정을 통해 err.txt파일에 저장한다
# 표준 입력 : 0
# 표준 출력 : 1
# 표준 오류 : 2
pipe
표준 출력을 표준 입력으로 받는 것 즉, 명령어의 결과를 다시 어떤 명령어의 입력으로 받을 때 사용한다.
- 둘 이상의 명령을 함께 묶어 출력의 결과를 다른 프로그램의 입력으로 전환 하는 기능
- 즉, 명령어의 표준 출력을 또 다른 명령어의 표준 입력과 연결
- 명령어와 명령어의 연결은
|기호를 사용 |기호 앞의 명령 결과가 뒤의 명령에 입력 데이터로 사용
cat /etc/passwd | grep "root" # == grep "root" /etc/passwd
# /etc/passwd의 내용이 grep의 입력값으로 받아 root를 필터링
# 디렉토리 개수 확인하기
$ ll | grep "^d" | wc -l
# * ll = ls -l : List 형태로 출력
# * grep "^d" : d로 시작하는 행 필터링 (행의 앞글자 d는 directory를 의미)
# * wc -l은 행의 개수를 출력
# -> ll로 디렉토리 파일들을 출력하고, 그 출력 내용을 d로 시작되는 파일만 필터링하고, 필터링 된 내용의 개수를 출력
출처: https://inpa.tistory.com/entry/LINUX-📚-입출력-재지정-파이프-명령어-정리 [Inpa Dev 👨💻:티스토리]
EOT/ EOF
Bash 쉘에서 HEREDOC 구문의 전형적인 형식 직접 입력한 텍스트를 파일에 저장할 때 주로 사용한다. 시작 및 종료를 알리는 키워드로는 흔히 EOF(또는 EOT)를 쓰는데, 임의로 정하는 것이므로 다른 것(예: AAA, HELLO)도 가능하다. EOF는 End of File, EOT는 End of Text이라는 의미이다.
cat <<EOF > file1.txt
> hello
> world
> EOF
user01@localhost:~$ cat file1.txt
hello
world