1. 표준 입력, 출력, 에러

code 이름 용도 표준장치
0 stdin(표준 입력,standard input) 명령어에 입력 내용을 가져옴 키보드
1 stdout(표준 출력) 명령어에서 결과 출력 화면
2 stderr(표준 에러) 명령어에서 에러메시지 출력 화면

 

표준 입력(stdin) : 표준 입력 장치에서 입력 내용을 가져옴

표준 출력(stdout) : 명령이나 프로그램 등의 실행 결과를 표준 출력 장치에 전송

표준 에러(stderr) : 명령이나 프로그램 등의 상태 및 오류 메시지를 표준 에러 장치에 전송

 

2. 리다이렉션(redirection)

1) 입출력 리다이렉션

  • 일반적인 입력, 출력을 사용하지 않고 파일로 입출력 변경

2) 표준 입력 리다이렉션

  • < 연산자 사용
  • cat 명령어를 사용하는 것과 동일한 결과를 냄
program < file_name # file_name의 파일 내용을 program의 표준 입력으로 사용하겠다 라는 의미


# ex) 
echo "표준 입력 재지정" > aaa.txt # "표준 입력 재지정" 문자를 echo를 통해 표준 출력하고, 
    # 출력된 문자를 aaa.txt 파일을 생성하고 저장 (출력 재지정)

ls aaa.txt # 디렉토리에 파일 생성됬는지 확인
aaa.txt

cat < aaa.txt # 입력 재지정 == cat aaa.txt와 같다고 보면 된다.
   # 출력값 : 표준 입력 재지정

 

3) 표준 출력 리다이렉션

  • > 연산자, >> 연산자 등을 사용
  • > 연산자 : 파일을 덮어써서 출력값을 저장
  • >> 연산자 : 파일에 이어쓰면서 출력값을 저장
program > file_name    # program에서 출력하는 것을 file_name이라는 파일에 새로 기록

program >> file_name    # program에서 출력하는 것을 file_name이라는 파일에 이어서 기록


# ex) 
ls
# 출력값 : 다운로드  문서  바탕화면

ls > list_output.txt  # 표준 출력값을 list_output.txt에 저장

cat list_output.txt
# 출력값 : 다운로드
#          문서
#          바탕화면

ls >> list_output.txt
# 출력값 : 다운로드
#          문서
#          바탕화면
#          list_output.txt
#          다운로드
#          문서
#          바탕화면
  • 그 밖의 리다이렉션
명령 >& 파일명 # 명령이 실행된 표준 출력의 결과와 에러를 파일로 출력

명령 >>& 파일명 # 명령이 실행된 표준 출력의 결과와 에러를 파일로 덧붙여 출력

명령 >! 파일명 # 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과를 파일로 출력

명령 >&! 파일명 # 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과와 에러를 파일로 출력

명령 >>! 파일명 # 파일의 존재 유무와 상관없이 생성하고 파일에 덧붙여 출력

명령 >>&! 파일명 # 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과와 에러를 파일에 덧붙여 출력

 

4) 표준 에러 리다이렉션

  • 2> 연산자 사용
  • 앞의 리다이렉션들에서도 숫자를 붙여도 되는데 0, 1은 기본값이어서 생략가능
#  nullfile이 디렉토리에 없는 경우
ls -l nullfile 2> err.txt  # 그러한 실패를 표준에러(2) 지정을 통해 err.txt파일에 저장한다

 

5) 리다이렉션을 통한 Copy

echo "hello" > file.txt # hello문자열을 file.txt에 저장
cat < file.txt > file_copied.txt # file.txt내용을 cat하고 그걸 출력리다이렉션하여 file_copied.txt에 저장
cat file_copied.txt # 결국 복사를 한것 과 같아진다.
 # 출력값 : hello

 

 

 

3. 파이프

  • 앞의 명령어의 표준 출력을 다음 명령어의 표준입력으로 사용
  • | 기호 : 명령어와 명령어의 연결
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로 시작되는 파일만 필터링하고, 필터링 된 내용의 개수를 출력

+ Recent posts