English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
대부분의 UNIX 시스템 명령어는 터미널에서 입력을 받아 생성된 출력을 터미널로 보냅니다. 일반적으로 명령어는 기본적으로 터미널이 되는 표준 입력에서 입력을 읽고, 기본적으로 터미널이 되는 표준 출력으로 출력을 기록합니다.
전환 명령어 목록은 다음과 같습니다:
명령어 | 설명 |
---|---|
command > file | 출력을 file에 전환합니다. |
command < file | 입력을 file에 전환합니다. |
command >> file | 출력을 file에 추가로 전환합니다. |
n > file | 파일描述자가 n인 파일을 file에 전환합니다. |
n >> file | 파일描述자가 n인 파일을 file에 추가로 전환합니다. |
n >& m | 출력 파일 m과 n을 합치기 |
n <& m | 입력 파일 m과 n을 합치기 |
<< tag | tag와 tag 사이의 내용을 입력으로 사용합니다. |
주의해야 할 것은 파일描述자 0이 일반적으로 표준 입력(STDIN)입니다.1 은 표준 출력(STDOUT)입니다.2 은 표준 오류 출력(STDERR)입니다.
전환은 특정 기호를 명령 사이에 삽입하여 이루어집니다. 특히, 이 기호의 문법은 다음과 같습니다:
command1 > file1
위 명령어는 command를 실행합니다1그런 다음, 출력 내용을 file에 저장합니다1。
주의: 파일에 대한 모든 file1파일 내에 있는 기존 내용은 새 내용에 대체됩니다. 새 내용을 파일 끝에 추가하려면 >> 연산자를 사용하세요.
다음 who 명령어를 실행하세요. 이 명령어는 명령어의 전체 출력을 사용자 파일(users)에 전환합니다:
$ who > users
실행 후, 터미널에 정보가 출력되지 않았습니다. 이는 출력이 기본 표준 출력 장치(터미널)에서 지정된 파일로 전환되었기 때문입니다.
cat 명령어를 사용하여 파일 내용을 확인할 수 있습니다:
$ cat users _mbsetupuser console Oct 31 17:35 tianqixin console Oct 31 17:35 tianqixin ttys000 Dec 1 11:33
출력 전환은 파일 내용을 덮어쓰습니다. 다음 예제를 참조하세요:
$ echo "기본 튜토리얼 웹사이트: ko.oldtoolbag.com" > users $ cat users 기본 튜토리얼 웹사이트: ko.oldtoolbag.com $
파일 내용이 덮어쓰이지 않기를 원한다면, >> 사용하여 파일 끝에 추가할 수 있습니다. 예를 들어:
$ echo "기본 튜토리얼 웹사이트: ko.oldtoolbag.com" >> users $ cat users 기본 튜토리얼 웹사이트: ko.oldtoolbag.com 기본 튜토리얼 웹사이트: ko.oldtoolbag.com $
출력 전환과 마찬가지로, Unix 명령어도 파일에서 입력을 받을 수 있습니다. 문법은 다음과 같습니다:
command1 < file1
그렇게 하면, 원래 키보드에서 입력을 받아야 할 명령어가 파일에서 읽은 내용으로 전환됩니다.
주의: 출력 전환은 큰 마침표(>)입니다. 입력 전환은 작은 마침표(<)입니다.
위 예제를 계속하면, users 파일의 행 수를 계산하기 위해 다음 명령어를 실행해야 합니다:
$ wc -l users 2 users
또한 입력을 users 파일로 리디렉션할 수 있습니다:
$ wc -l < users 2
주의: 위 두 예제의 결과는 다릅니다: 첫 번째 예제는 파일 이름을 출력하며, 두 번째 예제는 아닙니다. 이는 표준 입력에서 내용을 읽는 것만 알기 때문입니다.
command1 < infile > outfile
입력과 출력을 동시에 대체하고 command를 실행합니다1infile 파일에서 내용을 읽어서 출력을 outfile에 기록합니다。
일반적으로 각 Unix/Linux 명령어 실행 시 항상 세 개의 파일을 열어야 합니다:
표준 입력 파일(stdin):stdin의 파일 디스크립터는 0이며, Unix 프로그램은 기본적으로 stdin에서 데이터를 읽습니다。
표준 출력 파일(stdout):stdout의 파일 디스크립터는1Unix 프로그램은 기본적으로 stdout로 데이터를 출력합니다。
표준 오류 파일(stderr):stderr의 파일 디스크립터는2Unix 프로그램은 stderr 스트림에 오류 정보를 기록합니다。
기본적으로, command > file은 stdout를 파일로 리디렉션하고, command < file은 stdin을 파일로 리디렉션합니다。
stderr를 파일로 리디렉션하려면 다음과 같이 작성할 수 있습니다:
$ command 2>file
stderr를 파일 파일 끝에 추가하려면 다음과 같이 작성할 수 있습니다:
$ command 2>>file
2 표준 오류 파일(stderr)를 나타냅니다。
stdout와 stderr를 합쳐 파일로 리디렉션하려면 다음과 같이 작성할 수 있습니다:
$ command > file 2>&1 또는 $ command >> file 2>&1
stdin과 stdout 모두 리디렉션하려면 다음과 같이 작성할 수 있습니다:
$ command < file1 >file2
command 명령어가 stdin을 파일로 리디렉션합니다1stdout를 파일로 리디렉션합니다2。
Here Document는 Shell에서 특별한 리디렉션 방식으로, 입력을 상호작용하는 Shell 스크립트나 프로그램으로 리디렉션합니다.
기본 형식은 다음과 같습니다:
command << delimiter document delimiter
그 역할은 두 delimiter 사이의 내용(document)를 입력으로 전달하는 command입니다.
주의:
delimiter의 끝에는 반드시 탑 그레이드로 작성해야하며, 앞뒤에는 어떤 문자도 있을 수 없습니다. 공백과 탭 줄여내기도 포함됩니다.
delimiter 앞뒤의 공백은 무시됩니다.
명령행에서 wc를 사용하여 -l 명령어는 Here Document의 행 수를 계산합니다:
$ wc -l << EOF 많이 오셔서 감사합니다 기본 가이드 웹 ko.oldtoolbag.com EOF 3 # 출력 결과는 3 행 $
Here Document는 스크립트에서도 사용할 수 있습니다. 예를 들어:
#!/bin/bash # author:기본 가이드 웹 # url:ko.oldtoolbag.com cat << EOF 많이 오셔서 감사합니다 기본 가이드 웹 ko.oldtoolbag.com EOF
위 스크립트를 실행하면, 출력 결과:
많이 오셔서 감사합니다 기본 가이드 웹 ko.oldtoolbag.com
특정 명령어를 실행하고 싶지만 스크린에 출력 결과를 표시하고 싶지 않다면, 출력을 이에 대한대로 재정향할 수 있습니다. /dev/null:
$ command > /dev/null
/dev/null은 특수 파일로, 이에 쓰인 내용은 모두 버려집니다. 이 파일에서 내용을 읽으려고 시도하면 아무것도读到 않습니다. 그러나 /dev/null 파일은 매우 유용합니다. 명령어의 출력을 이에 대한대로 재정향하면 "출력 금지" 효과를 얻을 수 있습니다.
stdout와 stderr을 숨기려면 이렇게 작성할 수 있습니다:
$ command > /dev/null 2>&1
주의:0은 표준 입력(STDIN)입니다.1 은 표준 출력(STDOUT)입니다.2 은 표준 오류 출력(STDERR)입니다.
이곳의 2 및 > 공백이 있을 수 없습니다.2> 한체로 표시되면 오류 출력을 의미합니다.