배치 파일 또는 명령 프롬프트에서“<<”를 사용하는 방법은 무엇입니까?


12

나는 무엇이 >>사용 되는지 알고 있으며 모든 메시지를 화면 대신 파일에 씁니다. 그리고 나는 <<반대로, 나는 그것을 시도하고 메시지를받는다고 생각한다 .<< was unexpected at this time.

<<용도 및 사용 방법을 알려주십시오 .

답변:


17

표준 Windows 명령 셸 — cmd.exe<<연산자 를 전혀 사용하지 않습니다 .¹

하나의 <수단 "로 파일을 읽어 표준 입력 을" cmd.exe하지만이 개 <문자 백투백에 의미가 cmd.exe당신이있어 오류를 제공하므로.

<<연산자 모든 주요 유형의 Unix 명령 셸에 의미가 있으며 여기에서 다음 문서에 사용됩니다 .²

$ some-command <<END
blah blah blah
blah blah
blah blah blah blah blah
END

이 세 줄 some-command은 표준 입력으로 전송됩니다 .

이 기능은 <연산자 를 사용해야 할 때 파일에 먼저 쓰지 않고 많은 텍스트를 명령에 보내는 데 유용합니다 . 나는 종종 "usage"메시지를 스크립트에 포함시키기 위해 사용한다 :

#!/bin/sh
if [ -z "$1" ]
then
    cat <<USAGE
usage: myscript <files...>

     Grobbles the foobie for all files given on the command line.

USAGE

    exit 1
fi

# ... do something with command line arguments

echoheredoc 텍스트가 화면에 인쇄되는 것처럼 정확하게 형식이 지정되므로 많은 명령문을 작성하는 것보다 낫습니다 . 또한이 문맥에서 공백, 따옴표, 리디렉션 및 변수 보간을 처리하는 것이 더 쉽습니다. 예를 들어, 쉘이 I / O 리디렉션에 사용하지 못하도록 영리한 작업을 수행하지 않고도 사용법 메시지에 꺾쇠 괄호를 사용했습니다.

Windows에서 이와 같은 작업을 수행하려면 Cygwin을 설치 하고 해당 쉘 중 하나를 사용할 수 있습니다. Windows 10을 사용하는 경우 WSL을 대신 사용할 수 있습니다 .


각주 :

  1. 이 링크는 보관 된 Windows XP 설명서 트리로 이동합니다. 마이크로 소프트는, 그래서 경우에 그들은 다시 휴식, 그들이이 문서를 보관 때 이전에 사용 된 링크를 부러 여기에 백업 타사 참조입니다.

    cmd.exe내가 microsoft.com에서 알고있는 다른 참조 자료는 Windows 명령 PDF (4.9MB, 948 페이지) 뿐이며 대부분의 내장 및 Microsoft 제공 외부 명령에 대한 참조 만 제공합니다. 당신은 cmd프롬프트 에서 줄 수 있습니다 . 이 PDF는 두 가지 기반에서 불완전합니다. 우선 여기에서 가장 관련성이 높은 것은 cmd.exe쉘 에서 리디렉션이 작동하는 방식에 대한 결합 된 논의가 없습니다 . 쉘 문법에 대한 토론조차 없습니다. 둘째, PDF의 명령 목록이 불완전합니다. 확인한 첫 번째 내용은 다루지 않습니다 diskpart.

    나는 이것이 마이크로 소프트의 명확한 시도로부터 다음의 모든 대체 할 생각 cmd.exe으로 PowerShell을 지금 몇 년 동안 계속되었습니다. 이 글을 쓰는 시점에서 가장 최근의 Windows 10 업데이트에서는 아직 완전히 사라지지 않았지만 의 존재를 숨기기 위해 추가 단계를 수행했습니다cmd.exe .

    그것은 있음을 주목할 필요가있다 PowerShell을 또한 지원하지 않는 <<리디렉션 연산자 . 유닉스 쉘에서 슬프게도 회귀 cmd.exe하지 않고 <리디렉션 도 지원하지 않습니다 !

  2. here-document를 시작하는 정식 방법은 위에서 쓴 것처럼 <<구분 기호 단어 사이에 공백이없는 것 입니다. 내 퍼지 기억은 쉘 스크립트에서 본 여기 문서의 모든 사용도 이와 같이 수행된다는 것입니다. 이 문서의 POSIX 사양 도 예제에서이 스타일을 사용합니다.

    그러나 POSIX.1-2008 사양 의 다른 부분을주의 깊게 읽으면 <<및 구분 기호 단어 사이에 몇 개의 공백 또는 탭 문자를 넣는 것이 합법적 입니다. 특히, 참조 토큰 인식 7, 10 규칙 의 정의 io_here에서 쉘 문법 , 그리고 정의 은 "빈"문자 클래스 .

    이것이 쉘을 문서화하는 방법입니다. Microsoft, 메모하십시오. ;)

    여기 Bash 4에서 테스트 ksh93하여 예상대로 작동하는지 확인 하십시오 .


나 자신을 더 잘 말할 수 없었습니다. Cygwin에 대해서는 언급하지 않았을 것입니다. Windows에서하는 것과 Unix로하는 다른 것이 있기 때문입니다. 크로스 호환성이 많이 있지만 Cygwin 또는 다른 Win 기반 유틸리티와 같은 가상 작업 대신 원시 Unix를 배우는 것이 좋습니다.
BiTinerary 2018 년

8
@BiTinerary : Windows에서 유닉스 계열의 작업을 수행하기 위해 매일 수많은 사람들이 Cygwin을 사용한다는 점을 감안할 때, 그 힌트를 대답에 남길 것입니다.
워렌 영

그렇다. 나는 Cygwin이라는 진위를 떨어 뜨리려하지 않는다. 나는 그것을 일상적인 업무에 사용한다. 나는 진짜로 부팅하고 (특히 초보자를 위해) 완전히 다른 OS를 준수 해야하는 원래의 타사를 배우는 것보다 낫다는 것을 배우는 2 센트를 넣었습니다. Cygwin을 설치하는 데 걸리는 시간에 포함 된 모든 모듈을 지정하고 사용을 시작하면 실제로 많은 것을 배울 수 있다고 말합니다. Cygwin은 그렇게 한 후에 사용하고 재부팅하기를 원하지 않는 것 같습니다.
BiTinerary

Nit : (Unix) heredoc은 경로 재 지정 및 파이프를 인식하지 않지만 기본적으로 DOES는 매개 변수 / 변수 대체 및 프로세스 대체 (달러-파란 및 백틱 구문)를 인식합니다. 데이터에서 백 슬래시를 사용하거나 명령 행에서 분리 문자를 인용 (적어도 한 문자 이상) 사용하지 않도록하십시오.
dave_thompson_085


4

> 새 파일에 씁니다.

>> 파일에 추가

< 파일에서 읽습니다

| 다른 명령의 입력으로 명령 출력을 보냅니다.

목록을 보려면 여기를 참조하십시오 윈도우 부활절 달걀 cmd.exe를로 타이핑 % ^입니까?

해당 게시물이 게시 된 이후에 추가되었습니다.

Starting a Program
===============

See start /? and call /? for help on all three ways.

Specify a program name
--------------------------------

    c:\windows\notepad.exe

In a batch file the batch will wait for the program to exit. When
typed the command prompt does not wait for graphical
programs to exit.

If the program is a batch file control is transferred and the rest of the calling batch file is not executed.

Use Start command
--------------------------

    start "" c:\windows\notepad.exe

Start starts a program and does not wait. Console programs start in a new window. Using the /b switch forces console programs into the same window, which negates the main purpose of Start.

Start uses the Windows graphical shell - same as typing in WinKey + R (Run dialog). Try 

    start shell:cache

Use Call command
-------------------------

Call is used to start batch files and wait for them to exit and continue the current batch file.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.