세 번 째 편: 명령 의 배열/명령 의 작업 스케줄/명령 의 교체

1. 명령 의 배열
현재 자주 사용 하 는 명령 배열 을 볼 수 있 습 니 다.한 줄 에 모든 명령 을 내리 고 다른 곳 으로 주 의 를 돌 릴 수 있 습 니 다.문제 없습니다. 셸 은 서로 다른 명령 사이 에 특수 한 배열 문자 (queuing characters) 를 놓 을 수 있 습 니 다.여기 서 가장 자주 사용 하 는 두 가 지 를 소개 할 것 이다.
더 잘 보이 기 위해 서 나 는 이 문자 들 양쪽 에 빈 칸 을 넣 었 습 니 다.실제 응용 에서 당신 은 반드시 이렇게 해 야 하 는 것 이 아 닙 니 다. 'ls - a';du - hs' 와 'ls - a';du - hs 의 효 과 는 같다.
  command1 ; command2
 
command 1 을 먼저 실행 합 니 다. command 1 이 잘못 되 었 든 안 되 었 든 간 에 command 2 를 실행 합 니 다.
예 를 들 면:ls -a ; du -hs
디 렉 터 리 의 모든 내용 을 화면 에 표시 한 다음 모든 디 렉 터 리 와 하위 디 렉 터 리 가 차지 하 는 디스크 크기 를 표시 합 니 다.command1 && command2
command 1 이 올 바 르 게 실 행 된 후에 만 command 2 를 실행 합 니 다.
 
예 를 들 면:ls -a bogusdir && du -hs
 
ls: bogusdir: No such file or directory 를 되 돌려 줍 니 다. 'du' 는 실행 되 지 않 았 습 니 다. ('bogusdir' 디 렉 터 리 가 없 기 때 문 입 니 다.)만약 당신 이 기 호 를 ';' 로 바 꾸 었 다 면, 'du '가 실 행 됩 니 다.
더 설명 하기 위해 서'& &' 와 의 차이 점, 그리고 일반 명령 배열 의 용도, 다음은 전형 적 인 예 를 들 어 Linux 커 널 의 컴 파일 과 설치.
리 눅 스 를 컴 파일 하고 설치 하려 면 'make dep', 'make clean', 'make bzImage', 'make modules',' make modules', 'make modules' 를 실행 해 야 합 니 다.인 스타 그램 과 make 인 스타 그램.명령 이 완 료 된 후에 다음 을 입력 하고, 다시 기다 리 고, 다시 입력 하려 면.............................................................다른 한편, 모든 명령 은 앞의 명령 이 정확하게 실 행 된 후에 야 실 행 될 수 있다.하면, 만약, 만약...명령 을 배열 하면 명령 이 실 패 했 더 라 도 뒤쪽 은 그대로 실 행 됩 니 다. 마지막 으로 '/boot' 디 렉 터 리 에서 문제 가 있 는 커 널 이미지 (image) 를 얻 을 수 있 습 니 다.'&' 로:make dep && make clean && make bzImage && make modules && make modules_install && make install
 
중간 에 끊 지 않 아 도 커 널 과 모듈 을 컴 파일 하고 뒤의 설 치 를 완성 할 수 있 습 니 다.2. 명령 의 임무 스케줄 링
터미널 에서 명령 을 실행 하거나 프로그램 을 열 때 터미널 은 명령 이나 프로그램 이 실 행 된 후에 야 다시 사용 할 수 있 습 니 다.유 닉 스에 서 우 리 는 이러한 명령 이나 프로그램 이 프론트 데스크 톱 (foreground) 에서 실 행 됩 니 다.터미널 에서 다른 명령 을 실행 하려 면 새 터미널 을 다시 열 어야 합 니 다.
하지만 미 션 스케줄 링 (jobbing) 이나 백 스테이지 (backgrounding) 라 는 더 우아 한 방법 도 있다.작업 의 스케줄 링 을 사용 하거나 명령 을 백 엔 드 에 두 면 터미널 이 즉시 해 방 됩 니 다. 그러면 터미널 은 새로운 입력 을 받 아들 일 수 있 습 니 다.이러한 목적 을 실현 하기 위해 서 는 명령 뒤에 & 를 추가 하기 만 하면 됩 니 다.gqview &
 
셸 에 게 그림 뷰 어 'GQview' 를 배경 으로 실행 하 라 고 알려 줍 니 다 (즉, job 로 실행).
명령 jobs 는 이 터미널 창 에서 어떤 명령 과 프로그램 이 실행 되 고 있 는 지 알려 줍 니 다.jobs
[1]+ Running gqview &

 
터미널 창 을 닫 으 려 면 터미널 을 닫 는 것 이 중요 합 니 다. 터미널 을 닫 으 면 모든 작업 이 중단 되 기 때 문 입 니 다. 이 경우 터미널 을 닫 으 면 이 터미널 에서 열 리 는 GQview 프로그램 도 종 료 됩 니 다.
그러나 어떻게 프론트 데스크 에서 실행 되 는 프로그램 을 백 스테이지 에 놓 습 니까?문제 없습니다.gqview

[2]+ Stopped gqview
bg
[2]+ gqview &

 
조합 키  터미널 에서 실행 중인 프로그램 을 걸 고 bg 명령 으로 배경 에 놓 고 실행 할 수 있 습 니 다.
배경 에서 그래 픽 프로그램 을 실행 하 는 것 은 때때로 쓸모 가 있 습 니 다. 이렇게 하면 터미널 에서 이 프로그램의 오류 정 보 를 표시 할 수 있 습 니 다. 비록 이것 은 직접적인 도움 이 되 지 않 을 수 있 지만 귀 찮 은 일 에 부 딪 히 면 다른 사람 에 게 물 을 때 이러한 오류 알림 은 유용 합 니 다.
일부 그래 픽 프로그램 은 백 스테이지 에서 실행 되 더 라 도 터미널 에서 정 보 를 출력 할 수 있 는 테스트 기간 (Beta) 에 있 을 가능성 이 높다.이것 에 불만 이 있 으 면 다음 명령 을 사용 하 십시오.command &>/dev/null &
이것 은 프로그램 을 배경 으로 보 내 서 실행 할 뿐만 아니 라 '/dev/null' 파일 로 출력 합 니 다. '/dev/null '은 시스템 의' 종이 분쇄기 '(shredder) 로 그곳 으로 보 내 는 모든 정보 가 사라 집 니 다.3. 명령 의 교체
 
명령 교체 (Command substitution) 는 매우 실 용적 인 기능 이다.XFree 86 문서 의 'README. mouse' 파일 을 보고 싶 지만 이 파일 의 위 치 를 모른다 고 가정 합 니 다.하지만 당신 은 영리 한 사용자 입 니 다. 'locate' 명령 도 들 었 고 'locate' 가방 도 설치 되 어 있 습 니 다. 사용 할 수 있 습 니 다:locate README.mouse
그 파일 이 '/usr/X11R6/lib/X11/doc' 에 있 는 것 을 발 견 했 습 니 다.현재 터미널 에서 'less' 또는 파일 관리자 에서 그 디 렉 터 리 에 들 어가 서 파일 을 읽 을 수 있 습 니 다.명령 교 체 는 당신 에 게 편리 함 을 가 져 다 줄 수 있 습 니 다.less $(locate README.mouse)
 
한 걸음 에 도착 하 다.'locate README. mouse' 의 출력 (=/usr/X11R6/lib/X11/doc/README. mouse) 을 'less' 의 매개 변수 로 명령 한 다음 파일 내용 을 표시 할 수 있 습 니 다.
이런 메커니즘 의 문법 은:command1 $(command2)
 
'$()' 외 에 도 뒷 따옴표 (backquote) 를 사용 할 수 있 습 니 다.command1 `command2`
 
이렇게 하면 입력 을 줄 일 수 있 지만 가 독성 이 떨 어 지고 교체 기능 이 없 는 일반 따옴표 와 헷 갈 리 기 쉽다.나 는 이전의 방법 을 더욱 좋아 하지만, 이것 은 결국 당신 에 게 결정 된다.
여기에 또 다른 예 가 있다.우 리 는 당신 이 'rob' 라 는 프로그램 을 끝 낼 계획 이 라 고 가정 합 니 다.먼저 명령 'pidof' 로 해당 프로 세 스 번호 (Process ID) 를 찾 은 다음 이 PID 를 매개 변수 로 'kill' 명령 을 실행 하면 'rob' 프로그램 을 끝 낼 수 있 습 니 다.사용 제외:pidof rob
567
kill 567

 
해 보 셔 도 됩 니 다.kill `pidof rob`
 
어 때, 효율 이 좀 높 아 졌 지?
다음 편 에서 저 는 셸 의 다른 두 가지 실 용적 인 체 제 를 소개 할 것 입 니 다. 파일 이름 이 일치 하고 출력 이 방향 을 바 꿀 것 입 니 다.

좋은 웹페이지 즐겨찾기