2016년 10월 19일 수요일

[Bash] 배시 기본 {02} - 입출력 방향 재지정, 파이프라인, 백그라운드 작업

쉘(Shell)을 처음배우는 입장에서 표준입력이니 출력이니 하는 말들을 먼저 익히는 것보다 일단 따라해보고 감을 익히는게 좋다고 생각한다. 표준입력은 키보드, 표준출력은 모니터라고 생각하면 된다. 일단 따라해보자.

입출력 방향 재지정

command < filename    # command에 해당하는 명령은 터미널이 아닌 파일에서 표준 입력을 받는다.
command > filename    # command 명령의 표준 출력 방향을 해당하는 파일명으로 재지정한다.

예) $ date > now    # 현재 날짜와 시간을 now 파일에 저장한다.
예) $ cat < file1 > file2    # file1의 내용을 입력으로 받아서 file2에 쓴다.
예) 위 명령은 다음과 같은 명령이다. $ cp file1 file2

파이프라인

다른 명령의 입력으로 어떤 명령의 출력 방향을 재지정하는 것이 파이프(pipe)이다. 파이프로 연결된 명령이 두 개 이상 있는 명령행을 파이프라인(pipeline)이라고 한다.

예) $ sort < file1 | more    # file1을 sorting하여 한 화면씩 출력한다. 스페이스바를 누르면 다음 화면으로 엔터를 누르면 다음 행으로 간다.
예) $ cut -d: -f1 < /etc/passwd | sort    # cut 명령은 콜론으로 구별하는 필드 중에서(-d:) 첫째 필드(-f1)를 추려낸다. /etc/passwd의 내용에서 첫째 필드를 추려내어 sorting한다.

백그라운드 작업

쉘에서는 오래 걸리는 작업을 백그라운드에서 진행시키고, 원하는 일을 포그라운드에서 할 수 있다. 예를 들어 아래와 같이

$ tar -xvf file1.tar &

명령어 뒤에 앰퍼샌드(&) 문자를 붙여주면

[1] 1009

같이 뜨고 프롬프트가 뜬다.

$

프롬프트에 다음 명령을 입력하면 된다.

$ jobs

jobs 명령어는 현재 실행 중인 백그라운드 작업을 확인하는 명령이다.
diff 유틸리티는 파일명을 인자로 받아서 두 가지 파일을 검사한다.

$ diff file1 file2 &

처럼 쓰면 터미널에 결과가 출력된다. 하지만 현재 작업하고 있는 내용과 diff 유틸리티의 결과를 잘 못 볼 수 있다. 이럴 때 출력을 파일로 바꿔준다.

$ diff file1 file2 > result_file &

댓글 없음:

댓글 쓰기