파일 디스크립터 (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 |