[Powered by Google Translate] 토미 :이 비디오에서 우리는에 대해 알아 보겠습니다
리디렉션 및 파이프.
지금까지, 우리는 기능에 적용됩니다 printf 좋아 사용하고
출력 단자에 데이터 및 GetString 같은 기능
사용자가 Google의 입력을 제공 할 수 있도록 허용하는
키보드를 사용하여 프로그램.
자, 신속의 라인을 확보 프로그램에서 살펴
사용자의 입력 한 다음을 출력합니다.
>> 7 호선에, 우리는 문자열이 사용자에게 메시지를 표시하고,하고
그리고 8 호선에 우리는 다시 인쇄하고 있습니다.
이 우리의 프로그램을 컴파일하고 실행합니다.
좋아요.
우리가 제공하는 문자열은 다시 에코되었다
터미널에 우리.
printf 함수를 썼다 때문에이 일
스트림은 표준 불려, 또는 S-T-D-아웃.
무언가가 STDOUT에 기록 할 때, 그것은 기본적으로입니다
터미널에 표시됩니다.
>> 그래서 모든 괜찮은데 뭐가 단순히의, 경우
문자열을 표시하는, 우리는 파일에 저장하고 싶어?
예를 들어, 우리는 기억 할 수도 있습니다 정확히 우리
우리가 나중에 그것을 특정 입력을 주었을 때 프로그램이 했어요.
하나의 방법은 사용의 C 프로그램에서이 작업을 수행하는 것
파일에 쓰기위한 몇 가지 특별한 기능을 우리가 할 시간
다른 동영상에서 참조하십시오.
보다 쉽게​​,하지만 어떻게 든하는 것이다
파일에 STDOUT 리디렉션합니다.
그 방법은 printf STDOUT에 기록 할 때 내용이됩니다
파일이 아닌 작성
터미널에 표시됩니다.
우리는보다 큼 기호를 추가하여 그냥 할 수있어, 다음
파일 이름에 의해 명령에 우리는 우리의 프로그램을 실행하기 위해 사용합니다.
>> 그래서,보다 간단하게 실행. / 리디렉션, 우리는 할 수 있습니다
실행. / 리디렉션에 이어, 기호보다 더 큰 다음
file.txt와 같은 파일 이름.
어떻게 알아 보자.
OK.
이 시간이, 아무것도 터미널에 표시되지 아니 여서,
그러나 우리는 우리의 내용을 수정하지 않았습니다
전혀 C 프로그램입니다.
의 지금이게와이 디렉토리의 내용을 살펴 보자.
>> 괜찮아요.
우리는 지금, file.txt라는 우리의 디렉토리에 새로운 파일이
그건 우리가 우리를 실행하면 우리가 제공하는 파일 이름입니다
프로그램을 리디렉션합니다.
가 file.txt를 열어 보자.
여기, 우리는 리디렉션의 STDOUT 아웃이 있다고 볼 수 있습니다
file.txt라는 파일에 기록.
그럼 다시 이전 명령을 실행하게하지만를 제공
다른 입력이 시간.
좋아요.
의 지금 file.txt를 살펴 보자.
>> 우리는 파일을 덮어 된 것으로 볼 수 있으므로 우리
원래 입력은 더 이상 없다.
우리가 대신이 파일에 추가하려는 경우, 새를 넣어
파일의 기존 내용을 아래에 입력, 우리가 할 수
단 하나 대신에 두개의보다 큼 기호를 사용합니다.
씨가를 사용해 보자.
우리가 다시 file.txt 열라면, 우리는 모두를 볼 수 있습니다
입력 라인.
어떤 경우에는, 우리는 어떤을 취소 할 수도 있습니다
우리 프로그램의 출력.
오히려 파일에 출력을 작성하고 삭제하는 것보다
우리가 그 짓을하는 파일은, 우리가 특별에을 (를) 쓸 수
파일은 / dev / null로했다.
아무는 /에 기록 할 때 dev/null--
또는 짧은에 대한 devnull -
가 자동으로 삭제됩니다.
따라서 데이터에 대한 블랙홀로 devnull 생각합니다.
>> 그래서 지금 우리는보다 큰 신호 리디렉션 할 수있는 방법 본
STDOUT, 우리가 표준 리디렉션 할 수있는 방법 알아 보자 -
또는 S-T-D-에 -
STDOUT의 아날로그.
기능이 좋아하지만 printf라는 스트림에 쓰기
스트림에서 읽어 STDOUT, GetString 및 이와 유사한 기능을
표준 입력 불리는하는 기본적으로의 흐름입니다
문자는 키보드에 입력.
우리는 기호보다 적게을 사용하여 표준 입력을 리디렉션 할 수 있습니다 다음
파일 이름을 기준으로.
지금보다는의 입력을위한 사용자에게 메시지를 표시
터미널은 프로그램이 우리가 지정한 파일을 열고 사용
입력으로는 라인.
>> 어떻게 알아 보자.
좋아요.
file.txt의 첫 번째 라인은 터미널에 인쇄 된
우리는 한 번 GetString를 호출하는거야.
우리 프로그램에 GetString에 다른 전화가 있으면,
file.txt의 다음 라인으로 사용 된 것
그 전화에 입력.
다시 말하지만, 우리는 모든 페이지의 C 프로그램을 수정하지 않았습니다.
우리는 우리가 그것을 실행하는 방법이 변경됩니다.
또한, 우리는 STDOUT에게이 시간을 리디렉션하지 않은 기억
그래서 프로그램의 출력은 여전히​​했습니다
터미널에 표시됩니다.
우리는 물론, 표준 입력을 모두 리디렉션 할 수 있습니다
같은과 STDOUT.
이제 file2.txt는 file.txt의 첫 번째 행이 포함되어 있습니다.
>> 따라서이 연산자를 사용, 우리는 읽고 수있었습니다
텍스트 파일에서 써주세요.
이제 우리가 같이 하나의 프로그램의 출력을 사용할 수있는 방법에 보자
다른 프로그램에 입력.
그래서 여기 또 다른 간단한 C 프로그램은 I입니다
여기에 hello.c라는했습니다.
당신이 볼 수 있듯이,이 단순히 "안녕 출력
가! "사용자.
- 내가 입력으로 인사의 출력을 사용하여 리디렉션하려는 경우
다른 프로그램 -
처음이라는 파일에 인사의 STDOUT을 리디렉션 할 수
input.txt 다음 같은 사이트로 리디렉션의 표준 입력을 리디렉션
파일 - input.txt.
그래서 할 수 있습니다. / 인사> input.txt.
이 실행 Enter 키를 누릅니다.
다음. / 리디렉션 <
input.txt, 그리고 그렇게 실행합니다.
그래서 우리는 할 수있는 세미콜론과 함께이 비트를 단축 할 수
우리는 같은 줄에 두 개 이상의 명령을 실행합니다.
그래서, 말할 수있는. / 인사> input.txt, 세미콜론,
. / <input.txt를 리디렉션합니다.
>> 이 작품은 그래서,하지만 여전히 아주 우아하지 않은 느낀다.
내 말은, 우리는 정말로이 중간 텍스트 파일을 필요합니까
실행을 리디렉션 한 후 더 이상 필요?
다행히, 우리는 어떤 사용하여이 추가 텍스트 파일을 방지 할 수 있습니다
파이프했다.
내가 말할 경우, / 인사 |..는 / 다음의 STDOUT을 리디렉션
왼쪽에있는 프로그램 -
이 경우, 안녕 -
의 표준 입력으로 사용됩니다
오른쪽 프로그램입니다.
이 경우 리디렉션합니다. 그럼이 일을 실행할 수 있습니다.
>> 우리는 간다.
우리는 입력으로 인사의 출력이 사용 된 것을 알 수 있습니다
리디렉션하십시오.
함께 명령을 미뤄 파이프를 사용하여, 우리는 어떤 형성
우리의 출력은 기본적으로 이동하고 있기 때문에 파이프 라인이라고
명령 순서를 통해.
파이프 사용, 우리는 할 필요없이 멋진 물건을 할 수
전혀 코드를 작성합니다.
예를 들어, 우리가 얼마나 많은 파일 알고 싶어 말
이 디렉토리의 내부.
파이프 사용, 우리는 화장실인가요 명령을 결합 할 수 있습니다 -
또는 wordcount -
명령을 사용합니다.
접대 STDOUT에 대한 디렉토리에있는 각 파일을 출력하고, 수
화장실은 표준 입력을 통해에 주어진 얼마나 많은 행를 알려줍니다.
그럼, 우리 말을하면 혹시 | 화장실 - 난 -
라인 수를 계산 할 말을 화장실로 - 난 플래그를 제공 -
우리가 정확히 얼마나 많은 파일을 볼 수 있습니다
현재 디렉토리 인치
>> 그럼 하나 더 예를 살펴 보자.
내가 여기 students.txt라는 파일이
이름의 목록.
그러나 이러한 이름은 임의의 순서 모든 없으며, 보이는
같은 몇 가지 이름이 반복됩니다.
우리가 원하는 건 알파벳의 고유 한 이름의 목록입니다
final.txt라는 파일에 저장하려면.
우리는 물론 우리를 위해이 작업을 수행 할 수있는 C 프로그램을 작성 수 있습니다.
그러나 불필요하게 얻을 수있어
너무 빨리 복잡한.
자, 대신 해결하기 위해 파이프 및 일부 내장 - 도구를 사용
이 문제.
>> 우리가해야 할 첫 번째 것은 파일 students.txt을 읽을 수 있습니다.
고양이 명령은 그냥 할 것입니다.
그것은 지정된 파일에 읽기 및 쓰기합니다
STDOUT에 그 내용.
우리는 텍스트 파일을 읽은 후, 우리끼리
이름을 정렬하고 싶습니다.
정렬 명령은 우리를 위해이 일을 처리 할 수​​ 있습니다.
정렬은 STDOUT에 표준 입력을 통해 공급 라인을 출력합니다
정렬 순서를 유지해야합니다.
students.txt의 내용으로 공급하기 위하여
정렬의 표준 입력, 우리는 고양이 정렬을 결합하기 위해 파이프를 사용할 수 있습니다.
정렬 및 | 그래서 고양이 students.txt을 실행할 수
Enter 키를 누릅니다.
그리고 지금, 우리는에 students.txt의 내용을 참조하십시오
알파벳 순서.
>> 그럼 다른 명령을 추가 할 수 있도록 -
uniq, 또는 독특한 -
우리의 파이프 라인합니다.
당신이 uniq를 추측 하듯이, 때의 정렬 순서를 제공
표준 입력을 통해 라인은 독특한 라인을 출력합니다.
이제 우리는 고양이 students.txt이
| 정렬 | uniq.
마지막으로, 우리는에 파이프 라인의 출력을 절약 할 수 있습니다
정렬 | | uniq 고양이 students.txt를 통해 파일을
> final.txt.
우리가 final.txt을 열고 경우, 우리는 우리가 정확히이
찾고 :
알파벳 순서에 따라 고유 한 이름의 목록
텍스트 파일에 저장되었습니다.
그건 그렇고, 우리는 말하는거야 정렬 <
students.txt | uniq> final.txt 짓 정확히
우리가 본 운영자의 각을 사용하여 같은 일,
이 동영상을.
>> 내 이름은 토미이고,이 CS50입니다.