금요일 터미널 : 스탠다드 스트림

또 다른 금요일에 오신 것을 환영합니다 ...

터미널의 작은 부분에 대해 알아볼 때입니다. 많은 생각 끝에 나는 표준 스트림; 피상적이기는하지만 누구나 알아야 할 일이라고 생각합니다.

표준 스트림

표준 스트림 사용자와 단말기 간의 여러 통신 채널로 구성됩니다. 이러한 입력 / 출력 "채널"은 명령이 실행될 때 정보를 표시하거나 캡처합니다.

표준 스트림에 대한 빠른 다이어그램.

표준 스트림에 대한 빠른 다이어그램.

3 개의 I / O 연결은 다음과 같습니다. 표준 표준 입력, 표준 출력 표준 출력, 표준 오류 표준 에러.

stdin : 표준 입력

표준 입력은 파이프, 리디렉션, 키보드 등을 통해 명령에서 정보를 캡처하는 방법입니다. 파일 설명자 0으로 식별합니다.

설명자는 입력 및 출력 채널에 액세스하기위한 표시기입니다. 일반적으로 0, 1 및 2 인 int 값입니다.

stdin의 예는 다음과 같습니다.

정렬 <목록

목록에있는 모든 정보 (이 경우 무작위로 기록 된 숫자)를 취하고 파일을 ls 명령으로 리디렉션 할 때 숫자 목록을 알파벳순으로 정렬합니다. 이 예에서 플래그는 암시 적입니다.

stdout : 표준 출력

이름에서 알 수 있듯이 표준 출력은 콘솔을 통해 명령의 출력을 표시합니다. ls를 작성하면 화면에 표시되는 모든 정보가 표준 출력입니다. 설명자 1로 표시됩니다.

이제 bash hahaha를 좋아하기 때문에 bash로 작성된 스크립트로 stdin과 stdout을 인스턴스화하려고합니다. 🙂

test.sh

#! / bin / bash if [-t 0]; then echo "표준 출력을 사용하고 있습니다"elif [-t 1]; then echo "You are using stdin"else echo "Brutal error"fi

이제 스크립트 사용 방법을 보여주는 스크린 샷입니다. 리디렉션하거나 스크립트를 사용하여 파이프를 사용할 때 테스트 -t stdout 스크립트 만 실행되는지, 그렇지 않은 경우 분명히 stdin인지 확인합니다.

bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
문제의 스크립트와 그 출력 ...

문제의 스크립트와 그 출력 ...

명령을 수정하고 연습하여 배우십시오.

stderr : 표준 오류

표준 오류는 프로그램이 오류 또는 진단을 표시하는 방식입니다. 설명자 2로 표시됩니다.

개념을 이해하기 위해 상황은 다음과 같습니다. 명령 오류를 저장하려는 경우 가장 먼저 생각하는 것은 출력을 일반 텍스트로 리디렉션하는 것입니다.

ls> info.txt

이렇게하면 명령 정보가 일반 텍스트 파일에 저장됩니다. 그러나 오류를 저장할 때 저장하지 않고 화면에 표시하고 일반 텍스트 파일은 비어 있습니다.

대신 2>를 사용하여 파일에 stderr을 저장하도록 표시하는 경우 :

ls foo 2> info.txt

이제 텍스트 파일에 오류 정보를 저장합니다.

가장 껍질 stderr 및 stdout이 &>와 함께 단일 명령 명령에 저장되도록 허용합니다. 여기서 Foo는 존재하지 않는 디렉토리입니다.

ls 다운로드 Foo &> info.txt

이 파일에는 Foo에서 ls를 실행할 때 발생하는 오류에 대한 정보가 포함되며 Downloads 아래에 디렉토리가 나열됩니다.

그리고 마지막으로 그 유명한 것은 2> 및 1?

간단하고 stderr을 stdout으로 리디렉션합니다. & 중간에> 및 1은 stdout으로 리디렉션됨을 의미합니다. 존재하지 않았다면 ... "오류를 파일 1로 리디렉션"과 같을 것입니다.

그리고 이것으로 리디렉션 할 수 있습니다.

  • stdout을 파일로
  • 파일에 대한 stderr
  • stdout에서 stderr로
  • stderr에서 stdout으로
  • stderr 및 stdout을 파일로
  • 다른 사람들과

그것이 오늘날 사람들을위한 것입니다. 읽어 주셔서 감사합니다. 😀


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   엘리오타임3000

    흥미 롭군. 여러분의 튜토리얼 덕분에 저는 Bash를 훨씬 더 좋아합니다.

  2.   퀸시 마구

    흥미롭지 만 다음 줄에 오류가 있습니다.

    "파일을 ls 명령으로 재 지정할 때", "파일을 정렬 명령으로 재 지정할 때"여야합니다.

    인사말.

  3.   미겔

    텍스트 시작 부분에 오류가 있습니다. 명령 "ls"를 표시하면 "sort"여야합니다.
    "목록에있는 모든 정보 (이 경우 무작위로 기록 된 숫자)를 취하고 파일을 ls 명령으로 리디렉션 할 때 (여기서는 정렬됩니다)"

    작업을 공유해 주셔서 감사합니다.

  4.   승용차

    이것은 출력을 플러시 (/ dev / null)하고 오류를 파일에 저장하려는 cron에 적합합니다. 또한이 작업을 수행 할 때 일반적으로 date 명령을 사용하여 정확히 언제 실패했는지 지정합니다.

    Bash (sh)는 유닉스 철학에 의해 개발 된 이러한 도구를 가지고 있습니다. "한 가지를 수행하고 잘 수행하십시오"

  5.   롤로

    글쎄, 나는 아무것도 찾지 못했다

    1.    목소리

      하하 잘 설명이 잘되어 있는데, 무엇을 이해하지 못 하셨나요?