또 다른 금요일에 오신 것을 환영합니다 ...
터미널의 작은 부분에 대해 알아볼 때입니다. 많은 생각 끝에 나는 표준 스트림; 피상적이기는하지만 누구나 알아야 할 일이라고 생각합니다.
표준 스트림
표준 스트림 사용자와 단말기 간의 여러 통신 채널로 구성됩니다. 이러한 입력 / 출력 "채널"은 명령이 실행될 때 정보를 표시하거나 캡처합니다.
3 개의 I / O 연결은 다음과 같습니다. 표준 표준 입력, 표준 출력 표준 출력, 표준 오류 표준 에러.
stdin : 표준 입력
표준 입력은 파이프, 리디렉션, 키보드 등을 통해 명령에서 정보를 캡처하는 방법입니다. 파일 설명자 0으로 식별합니다.
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을 파일로
- 다른 사람들과
그것이 오늘날 사람들을위한 것입니다. 읽어 주셔서 감사합니다. 😀
흥미 롭군. 여러분의 튜토리얼 덕분에 저는 Bash를 훨씬 더 좋아합니다.
흥미롭지 만 다음 줄에 오류가 있습니다.
"파일을 ls 명령으로 재 지정할 때", "파일을 정렬 명령으로 재 지정할 때"여야합니다.
인사말.
텍스트 시작 부분에 오류가 있습니다. 명령 "ls"를 표시하면 "sort"여야합니다.
"목록에있는 모든 정보 (이 경우 무작위로 기록 된 숫자)를 취하고 파일을 ls 명령으로 리디렉션 할 때 (여기서는 정렬됩니다)"
작업을 공유해 주셔서 감사합니다.
이것은 출력을 플러시 (/ dev / null)하고 오류를 파일에 저장하려는 cron에 적합합니다. 또한이 작업을 수행 할 때 일반적으로 date 명령을 사용하여 정확히 언제 실패했는지 지정합니다.
Bash (sh)는 유닉스 철학에 의해 개발 된 이러한 도구를 가지고 있습니다. "한 가지를 수행하고 잘 수행하십시오"
글쎄, 나는 아무것도 찾지 못했다
하하 잘 설명이 잘되어 있는데, 무엇을 이해하지 못 하셨나요?