Linux에서
Linux에서 모든 환경 구성은 파일로 구성되어 있다.
때문에 리눅스에서 명령어를 사용할때는 파일을 가리키는 디스크립터에 대한 방향을 잘 이해하면 수준높은 작업을 할 수 있다.
아래는 표준입력, 표준출력, 표준에러에 대한 정리를 해놓은 표이다.
- 리다이렉션 이란?
리다이렉션(Redirection)이란 말 그대로, 방향을 변경하는 것을 의미합니다. 리눅스에선 꼭 키보드로 표준 입력을 받거나 화면으로 표준 출력을 하는 것이아니라, 파일로 표준 입력을 받고, 파일로 표준 출력을 받는 등의 기능을 의미합니다. 리다이렉션을 이용하면 리눅스를 좀 더 자유롭고 편하게 사용할 수 있습니다.
- 기초 사용법 (리다이렉션을 통한 표준출력&에러 제어하기)
- 활용
활용 예시
표준입력 = 0
- 표준입력은 명령어나 프로그램에 실행에 필요한 입력값을 받는 통로 역할을 한다.
예를 들면 키보드를 통해 명령 프롬포트에 ls 명령어를 실행한다. 그러면 여기서 ls을 입력한 부분이 표준입력이 되며 해당 디렉터리 정보가 모니터에 표시되는 과정이 표준출력되는 것이다.
-" 리다이렉션< " 으로 표준입력값을 다른곳에 사용할 수 있다. 말로 하면 이해가 잘 되지 않는다. 아래 예시를 살펴보자
- cat라는 명령어 뒤에 표준입력 기호 "<" 를 사용하여 test.txt파일의 내용을 모니터에 출력해달라고 알려주었다.
(입력 방향의 재지정으로 test.txt를 cat에 입력해주어 표준출력이 일어나게 한다.)
표준출력 = 1
- 표준출력은 위 예시에서 보았듯이 명령어를 실행하면 모니터로 결과값이 출력되는 역할을 한다.
(명령어 실행 => 모니터 출력 (표준출력))
- 표준 출력은 2가지 타입이 있다. ( '>' : 덮어쓰기 , '>>': 추가 쓰기)
- 정상출력 fd =1 로 구분
- 1> 덮어쓰기, 1>> 추가쓰기 : 정상 출력의 방향 재지정 (재지정: 모니터가 아닌 파일 또는 장치로 보냄)
- 에러출력 fd=2 로 구분
- 2> 덮어쓰기, 2> > 추가쓰기 : '에러출력의 방향 재지정'
- 위의 예는 cat을 통해 표준입력 < 과 표준출력> 을 같이 이용하는 예이다. 처음 실행하는 명령어나 프로그램의 입력값을 대입하고 출력값을 표시하지않고 새로운파일로 저장한 것이다.
표준에러 = 2
- 표준에러는 명령어나 프로그램 실행시 발생하는 에러를 모니터에 출력해주는 주는 역할을 합니다. 이를 이용하면 모니터에 출력되는 에러를 한곳으로 모아 관리할 수 있다. 또는 에러를 보이지 않게 할 수도 있다.
- codemonkyu라는 폴더가 없으니 cd 명령어를 실행하면 오류를 알려준다. 하지만 표준에러 2를 리다이렉션 >을 이용해서 /dev/null로 보내주면 에러가 모니터에 출력되지 않는 것을 볼 수있다.
- /dev/null 은 리눅스에서 쓰레기통과 같은 역할을 한다. 리눅스에서는 휴지통에 파일이 들어가는 순간 완전히 삭제된다.
다중 명령어
- 리눅스에서 한 셸 프롬프트에서 여러개의 명령어를 한 번에 수행하게 도와주는 역할을 한다 .
세미콜론 (;)
- 하나의 명령어 라인에서 여러개의 명령을 실행하게 도와준다. 첫번째 명령이 실패해도 두번째 명령으로 넘어가 실행된다.
1) cat test.txt -> test.txt의 파일 내용을 보여줘
2) cp test.txt newtest -> test.txt를 newtest로 복사해줘
3) cat newtest -> 복사한 newtest의 내용을 보여줘
4) head -2 newtest -> 위에서 2번째 줄(line) 까지만 보여줘
위의 명령을 세미콜론을 통해 한번에 실행할 수 있다.
파이프 (pipe) |
- 리눅스에서 파이프란 2개의 프로세스를 연결해주는 연결통로를 의미한다. 파이프는 프로세스의 통신을 위해 도입한 것으로 어떤 프로세스의 표준출력이 다른 프로세스의 표준 입력으로 쓰일때 사용한다. 여러개의 파이프를 사용하면 파이프에 따라 데이터들의 입출력 방향이 정해지기 때문에 신중하게 사용해야한다.
- 쉽게 말해 앞에 실행한 출력의 결과를 뒤에 실행하는 명령어의 입력값으로 넣어주는것이 파이프의 역할이다.
- 파이프 | 는 프로세스의 단방향 통신에서만 사용한다. 즉 정상출력 (fd값 1)에서만 작동된다는 것이다.
명령어 파일 | more
- 내용이 너무 많은 파일을 읽을때 | more을 사용하면 출력결과를 페이지에 나눠서 볼수 있게 해준다.
명령어 파일 | grep 단어
- ls -al 명령어로 인해 출력되는 결과에서 test라는 단어를 포함하고 있는 파일을 출력
&& (and)
- 첫번째 명령어가 실행(정상) 이면 뒤에 조건도 실행
|| (or)
- 첫번째 명령어 or 두번째 명령어가 정상이면 둘중 하나 실행
쿼팅문자
- 특수 문자 차단 기능
" " : 사이에 포함되는 모든 특수문자 차단. (예외: "$"로 시작하는 역따옴표 (명령어 대체))
' ' : 사이에 포함되는 모든 특수문자 차단
"?" , "*", "[ ]" : 와일드카드 파일과 디렉토리 목록 맵핑 특수문자
\ : 한 문자만 차단 하는 기능 주로 엔터키 차단의 목적으로 주로 사용
엔터키 : 특수문자 - 명령어 실행 & newline의 의미 - 앞의 2가지 의미를 차단하는 쿼팅문자는 \ 이다.
&: 백그라운드 처리
">": 보조 프롬프트로써 명령어가 이어지고 있거나 newline이 아님을 시가적으로 표시하는 프롬프트 이다.
- 사용
예) cron스케줄러 crontab -e명령어로 스케줄링 반복실행 스케줄 문법 분 시 일 월 요일 명령어 공백을 구분자로 스케줄링 0,20,40 * * * * A; B; C 20분 간격으로 실행
파일과 디렉토리를 맵핑하는 특수문자 : 와일드카드
- "*" : 전체 목록 (모든것)
- "?" : 한문자 맵핑
- echo ?????* : 5글자 이상인 파일 출력
- "[ 범위 ] + *" : 범위에 해당하는 모든
- echo [A-Z] : A~Z을 포함하는 파일 출력
- [A-Z] 대문자 하나 [a-z] 소문자 하나 [0-9] 숫자 하나 [abc] a또는 b또는 c
댓글