2016-12-11 7 views

답변

0

find

pgrep --inverse -t \ 
    "$(find /dev/ -type c -regex '.*tty[0-9]+' -printf '%f ')" 

find 명령은 command substitution을 통해 호출 사용. 명령 대체가 큰 따옴표로 묶여 있으므로 출력은 단일 단어로 preg으로 전달됩니다.

옵션 : 오직 문자 특수 파일을 선택

  • -type c

    (stat -c '%F' /dev/tty* 확인할 수 있습니다)
  • -regex '.*tty[0-9]+'
  • 정규식과 일치하는 경우에만 파일을 선택, 즉 하나 이상의 ( +) 자리 ( [0-9])이어서 다 ( .*)이고;
  • -printf '%f ' 파일 이름 다음에 공백을 인쇄합니다 (find은 기본적으로 후행 줄 바꿈을 인쇄합니다). -t 옵션은 쉼표 또는 공백으로 구분 된 TTY 이름 목록 ("/dev/" 접두어 제외)을 허용하므로 파일 이름 (%f) 다음에 쉼표 또는 공백을 넣을 수 있습니다. 파일명 확장
    cd /dev 
    ttys=(tty[0-9][0-9]?[0-9]?) 
    cd - >/dev/null 
    pgrep -a --inverse -t "${ttys[*]}" 
    

    tty[0-9][0-9]?[0-9]? 사용

는 (? 앞 패턴을 선택한다) 한 개, 두 개 또는 세 개의 숫자 뒤에 tty로 확장된다.

ttys=(words)IFS - 분리 된 단어 (IFS을 "입력 필드 구분 기호"라고도 함)에서 배열을 작성합니다.

"${ttys[*]}"IFS (기본값은 공백)의 첫 번째 문자로 구분 된 배열 항목으로 구성된 단일 단어로 확장됩니다.