Linux Bash Shell 고급 리 셋 작업 - 표준 오류 출력 과 표준 출력 을 깊이 이해 합 니 다.
가장 자주 사용 하 는 예 를 들다.nginx - v 또는 ngxin - V 를 통 해 nginx 의 버 전 정 보 를 보고 싶 습 니 다. 맨 뒤의 버 전 번호 만 원한 다 면 awk 나 cut 로 처리 하면 됩 니 다.예 를 들 어 'nginx version: nginx/1.2.7' 중의 '1.2.7' 을 얻 으 려 면 이상 적 인 명령 행 은 'nginx - v | grep nginx | cut - d'/'- f2' 나 'nginx - v | cut - d'/'- f2' 또는 'nginx - v | grep nginx | awk - F'/'{print $2}' 이지 만 실제로는 'nginx version: nginx/1.2.7' 을 출력 합 니 다. 제 가 echo 방법 으로 이 루어 질 수 있다 고 생각 하 시 겠 습 니까?아니 야.예 를 들 어 명령 행 'echo $(nginx - v) | grep nginx | awk - F'/'{print $2}' 또는 'echo $(nginx - v) | grep nginx | cut - d'/'- f2' 도 안 됩 니 다.
근 데 왜 됐 지?정 답 은 '2 > & 1 |' 또는 '| &' (양자 등가) 를 사용 하여 명령 1 의 표준 오류 출력 을 명령 2 의 표준 으로 입력 하 는 것 이다.
설명: nginx - v 의 기본 출력 은 표준 오류 출력 입 니 다.예 를 들 어 '출력' (이 때 는 표준 출력 인지 표준 오류 출력 인지 모른다 고 가정) 을 파일 로 재 설정 하고 파일 의 내용 을 볼 수 있 습 니 다.예 를 들 어 'nginx - v > test' 를 실행 할 때 화면 에 'nginx version: nginx/1.2.7' 을 출력 합 니 다. 이것 은 화면 에 표준 오류 출력 이 나타 나 는 것 을 나타 냅 니 다.물론 파일 을 보 는 방식 으로 'cat test' 에서 이 파일 이 있 는 것 을 발견 할 수 있 지만 내용 은 비어 있 습 니 다. 또한 이 명령 이 표준 출력 이 없다 는 것 을 설명 합 니 다.
열 캡 처 에 대하 여.그러나 열 캡 처 도구 선택 에 있어 서 단일 문 자 를 간격 문자 로 할 수 있다 면 cut 를 사용 하 는 것 이 좋 습 니 다. 테스트 를 통 해 awk 는 표준 오류 출력 을 직접 처리 할 수 없습니다. 표준 오류 출력 을 표준 출력 으로 전환 하 더 라 도 문제 가 있 습 니 다.예 를 들 어 'echo $(nginx - v) | & grep nginx | awk - F'/'{print $2}' 와 'echo $(nginx - v) | grep nginx | awk - F'/'{print $2}', 'echo $(nginx - v) 2 > & 1 | grep nginx | & awk - F'/'{print $2}' 의 결 과 는 똑 같 습 니 다.cut 는 표준 오류 출력 을 처리 할 수 있 습 니 다.그러나 'nginx - v | & grep nginx | awk - F'/'{print $2}' 는 정확 한 결 과 를 출력 할 수 있 습 니 다. '1.2.7'.
그 밖 에 테스트 과정 에서 grep 도 표준 오류 출력 을 직접 처리 할 수 없 음 을 발견 했다."echo $(nginx - v) 2 > & 1 | grep nginx > test"와 "echo $(nginx - v) | & grep nginx > test"의 결 과 는 모두 test 에 아무런 내용 이 없 으 며 "nginx version: nginx/1.2.7"만 출력 합 니 다."nginx - v | & grep nginx"로 바 꾸 면 됩 니 다.
tee 도 안 돼!구덩이 가 좀 있 지 않 습 니까?
참고: Bash Reference Manual 의 3.2.2 Pipelineshttp://www.gnu.org/software/bash/manual/bashref.html#Pipelines
If ‘|&’ is used, the standard error ofcommand1is connected tocommand2’s standard input through the pipe; it is shorthand for
2>&1 |
. This implicit redirection of the standard error is performed after any redirections specified by the command. 따라서 유사 한 디 버 깅 에 문제 가 생 겼 을 때 표준 오류 출력 인지, 처리 해 야 하 는 지 확인 하 는 것 도 고려 해 야 할 점 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Bash Shell 고급 리 셋 작업 - 표준 오류 출력 과 표준 출력 을 깊이 이해 합 니 다.설명: nginx - v 의 기본 출력 은 표준 오류 출력 입 니 다.예 를 들 어 '출력' (이 때 는 표준 출력 인지 표준 오류 출력 인지 모른다 고 가정) 을 파일 로 재 설정 하고 파일 의 내용 을 볼 수 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.