리다이렉션(Redirection)

-표준입력과 출력의 방향을 재지정하는 방법


파일 디스크립터 (file discriptor,fd)
-리눅스의 일반 파일과 장치파일을 포함한 모든 파일을 관리하는 방식

 

-파일을 열거나 실행할때 혹은 명령어를 입력하면은 커널이 프로세스를 실행시켜 기본적
 으로 사용하는 창치들과 추가로 실행한 프로세스가 있다면 이정보를 파일 디스크립터 테이블
 이라는 곳에 저장하는데 , 이때 파일 디스크립터 테이블에 비어있는 0번 부터 순차적으로 지정
 하고 가장 기본적으로 사용되는 장치에 대해서는 디스크립터 테이블에 미리 예약되어 있다.

 

커널?- 운영체제 중심

프로세스?- 실행중인 프로그램

discriptor?- 문서나 파일 의미

 

표준 입력/ 표준 출력/ 표준 오류


명령어 입력(키보드/표준입력)->명령어 결과 (모니터/표준출력)


출력 리다이렉션
-화면에(표준출력)나오는 결과를 파일 내용으로 전달


#echo 'show me the mone'
#echo 'show me the mone' 1> echo_test

fd번호 1은 생략가능

1 생략 출력


#cp /etc/resolv.conf ./        /etc//resolve.conf 파일을 현재경로로 복사
#cat resolv.cof    표준입력후 표준출력

#cat resolv.conf 1> redirection_test         //표준입력 후 결과를 출력아닌 파일로 재지정



bash 쉘에서 파일 덮어쓰기 방지하기 위한 설정

#set -o noclobber     //덮어쓰기 방지 설정 enable
#set +o noclobber    //덮어쓰기 방지 설정 disable

덮어쓰기 방지 설정후 에러


추가 리다이렉션
[명령어] >> [파일]- 기존 파일에 내용 추가

date + cal 명령어 를 ls_test 파일로


오류 리다이렉션
# ls error_test
ls: cannot access error_test: 그런 파일이나 디렉터리가 없습니다
#ls
#ls error_test 1> err1
err1
#ls error_test 2> err1  //표준 에러의 방향을 파일로 재지정
오류메시지 출력 없음

오류메시지 출력이 안된걸 확인


오류 메시지 출력하지 않기
/dev/null -리눅스 특수 파일로 파일의 내용을 지우거나, 오류메시지를 해당 파일로
    리다이렉션하여 출력하지 않을수 있다.(윈도우 쓰레기통 비슷)

#ls ls_test 1> /dev/null  //출력결과를 null파일로 재지정
#ls ls_test 2> /dev/null  //출력에러결과를 null파일로 재지정

#ls / 1> /dev/null   //정상 결과 출력x
#ls / 2> /dev/null   //에러 결과 출력x


입력 리다이렉션

[명령어] < [파일]

#sort < /etc/passwd == sort /etc/passwd
#cat < /etc/passwd  == cat /etc/passwd  사용빈도적음


#tail < a.txt > b.txt
1. a.txt 내용을 tail 명령어 입력 값으로 리다이렉션 (#tail a.txt)
2. tail 명령어는 입력은 a.txt의 나용에서 마지막 10줄 출력
3. tail 명령어의 출력결과를 b.txt파일에 리다이렉션
4. 화면에 출력이아닌 b.txt파일 안에 결과가 저장


#cat < a.txt > b.txt   와 동일한 명령어는? #cp 랑 같음

cut -d ":" -f 1 /etc/passwd > account_list


첫째 단어만 출력


1. [명령어1] ; [명령어2]
-첫 번째 명령어 부터 순차적으로 실행
-첫 번째 명령어가 실패하여도 반드시 실행

#ls ; pwd ; date

가운데 없는 명령어 제외 출력


2. [명령어1] && [명령어2]
- 첫 번째 명령이 에러가 아닐시 두번째 명령을 실행
[cmd] && [err] && [cmd]  두번째 에러시 다음 순서 결과x

에러 시점에서 명령 실행 종료

가운데 없는 명령어 에러후 다음도 에러


3. [명령어1] || [명령어2]
[cmd] || [cmd] cmd1 실행

- 명령어가 정상으로 실행된 시점까지만 실행(출력)

'Server > Linux' 카테고리의 다른 글

xshell/ 환경변수 명령어  (0) 2017.04.02
Linux- vi  (0) 2017.04.01
xshell/ 디렉토리 명령어3  (0) 2017.03.31
Linux - snapshot 기능  (0) 2017.03.29
xshell/ 디렉토리 실습2  (0) 2017.03.29

+ Recent posts