본문으로 바로가기

Day-6 Redirection

category Linux 2016. 12. 22. 23:50

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

- 표준입력장치 (키보드) fd/0 stdin
- 표준출력장치 (모니터) fd/1 stdout
- 표준에러장치 (모니터) fd/2 stderr

 

리다이렉션 (Redirection)
- 표준입력과 표준출력의 방향을 재 지정하는 방법

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

 

출력 리다이렉션

[명령어] 1> [파일이름] - 파일 생성 및 덮어쓰기 (1생략 가능)

ex) /practice/day6 디렉토리 생성후 출력후 출력 리다이렉션으로 test_6생성, 내용은 test로 만들자. 현재 경로 확인

출력 리다이렉션에서 내용을 지울때 Ctrl + Backspace를 눌러야 한다. 내용 입력후 Ctrl + C,D로 저장 할수 있다.

Bash 쉘에서 파일 덮어쓰기 방지를 하기위한 설정
#set -o noclobber       //enable
#set +o noclobber       //disable

 

추가 리다이렉션
[명령어] >> [파일이름] - 파일 내용을 추가

ex)test_6 파일에 추가 리다이렉션으로 test6이라는 내용을 추가해보자

 

오류 리다이렉션
[명령어] 2> [파일이름] - 오류 발생 메세지를 파일로 저장

 

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

 

입력 리다이렉션
[명령어] < [파일]   - 파일을 명령어로 실행

 

다중 명령어
ERR -> 오류 명령어
CMD -> 정상 명령어

 

1. CMD1 : CMD2
- 첫번째 명령어부터 순차적으로 실행
- 첫번째 명령어가 실패하여도 반드시 실행


2. CMD1 && CMD2
- 첫번째 명령이 에러가 아닐 시 두번째 명령을 실행


CMD1 && CMD2 && CMD3    ->CMD1, 2, 3 정상출력
ERR1 && CMD2 && CMD3      ->에러 메세지
CMD1 && ERR2 && CMD3      ->CMD1 출력 후, 에러메세지
CMD1 && CMD2 && ERR3      ->CMD1, 2 출력 후 에러 메세지

즉, 에러가 발생하는 시점에서 명령 실행 종료

 

3. CMD1 || CMD2
CMD1 || CDM2          -> CMD1 실행
ERR1 ||CMD2             ->에러메세지 발생후, CMD2 실행

CMD1 || CMD2 || CMD3   -> CMD1 실행
CMD1 || ERR2   || CMD3   ->CMD1 실행
CMD1 || CMD2 || ERR3     -> CMD1 실행
ERR1   || ERR2 ||  CMD3    -> ERR1, 2 실행 후 CMD3 실행

즉, 명령어가 정상으로 실행된 시점 까지 출력

 

파이프 (pipe) |
- 표준 입출력이 아닌 프로세스간에 실행되는 입출력을 다음 프로세스에게  전달하는 방식

쉘 환경변수 - (bash쉘에서만 적용이 되는 변수)

지역 환경 변수 , 전역 환경 변수 

env - 로그인한 사용자의 (전역)환경 변수를 출력해주는 명령어
#env | grep SHELL
#echo $SHELL
 
 #export  -  지역 한경 변수를 전역환경변수로 만들어주는 명령어
#export PATH="$PATH"
 
 unset - 선언된 변수를 제거하는 데 사용
 unset [변수명]
 
/etc/profile - 시스템 사용자 전체에 적용할 전역 환경 변수를 가지고 있다.
/etc/profile.d/ - /etc/profile 파일에 의해서 /etc/profile.d/ 디렉토리 내에 스크립트가 실행되어 여러가지 변수들이 적용이되어 쉘 환경을 제공한다.
/etc/bashrc - 사용자가 로그인 하였을때 사용자의 계정에 있는 .bashrc  파일에 의해서 실행되는 파일
                        alias, bash가 수행될때 시행되는 함수를 제어하는 전역적인  시스템 결정 관련 파일  (PATH=$PATH)
            
     
     
로그인 시 참조 하는 파일
-  /etc/profile
-  ~/.bash_profile
-  ~/.bashrc
-  /etc/bashrc 

 

 

※프롬프트 제어 문자

         \a     ASCII 종소리 문자(07)
         \d     "요일  달  날짜" 형식의 날짜 표시
               (예 : "Tue May 26")
         \e     ASCII의 escape 문자 (033)
         \h     첫번째 "." 까지의 hostname
         \H     hostname
         \n     새로운 줄(줄 바꾸기)
         \r     carrage return
         \s     쉘의 이름, $0 의 basename
               (마지막 slash의 다음에 따라오는 부분)
         \t     24-시간으로 현재 시각, HH:MM:SS(시:분:초) 형식
         \T     12-시간으로 현재 시각, HH:MM:SS(시:분:초) 형식
         \@     12-시간으로 현재 시각, 오전/오후 형식
         \u     현재 사용자의 username
         \v     bash의 버전(예: 2.00)
         \V     bash의 배포, 버전 + 패치수준
               (예 : 2.00.0)
         \w     현재 작업 디랙토리
         \W     현재 작업 디랙토리의 basename
         \!     현재 명령어의 history 번호
         \#     현재 명령어의 command 번호
         \$     유효한 UID가 0 이면 # 를, 그렇지 않으면 $ 을 표시
         \nnn   8 진수 nnn에 해당하는 문자
         \\     backslash
         \[     터미널 조정 sequence를 프롬프트에 끼워 넣기 위해
               사용될 수 있는 non-printing 문자의 시작
         \]     non-printing 문자의 끝


0;30 : Black
0;34 : Blue
0;32 : Green
0;36 : Cyan
0;31 : Red
0;35 : Purple
0;33 : Brown
0;34 : Blue
0;32 : Green
0;36 : Cyan
0;31 : Red
0;35 : Purple
0;33 : Brown
\e[ : Start color scheme
x;y : Color pair to use (x;y)
$PS1 : is your shell prompt
\e[m : Stop color scheme

 

ezprompt.net에 들어가면 프롬프트를 상대적으로 쉽게 변경할 수 있다.

 

 

'Linux' 카테고리의 다른 글

Day - 8 사용자 계정관리 1  (0) 2016.12.26
Day-7 환경변수  (0) 2016.12.24
Day-5 grep 과 vi  (0) 2016.12.21
Day-4 기본 명령어2  (0) 2016.12.21
Day-3 기본 명령어 ,(파일과 디렉토리)  (0) 2016.12.20