이것은 작동합니다 :
$ echo “HELLO에 알림 보내기”| 지금
이것은하지 않습니다 :
$ 지금 <echo “HELLO에게 알림 보내기”
‘파일 또는 디렉토리를 찾을 수 없습니다’라고 표시되어 있습니다.
-f
이 명령 에는 옵션이 있다는 것을 알고 있습니다. 이 명령을 사용하면 주어진 순간에 실행할 파일을 제공 할 수 있습니다.
그래서 이것은 나를 생각하게했습니다 … 일반적으로 리디렉션 연산자가 값을 제공하는 매개 변수를 어떻게 알 수 있습니까?
답변
여기서 두 가지 다른 것을 사용하고 있으며 세 번째를 사용해야합니다. 보자 :
-
|
: 이것은 파이프 연산자이며 한 프로세스의 출력을 다른 프로세스의 입력으로 전달하는 역할을합니다.foo | bar
이것은 프로그램을 실행
foo
하고 출력을 입력으로 프로그램 에 전달합니다bar
. -
>
,<
,>>
과<<
: 이들은입니다 리디렉션 연산자 가에서 /로 데이터를 전송하는 역할을, 파일 :-
foo > bar
: 프로그램을 실행foo
하고 그 출력을 저장 파일bar
, 덮어 쓰기 한 내용을 그것이 존재하지 않는 경우는, 작성합니다. -
foo >> bar
: 프로그램을 실행foo
하고 그 출력을 저장 파일bar
, 추가 내용과 그것이 존재하지 않는 경우는, 작성합니다. -
foo < bar
: 파일foo
에서 입력을 읽도록 지시 합니다bar
. -
는
<<
명령을 “추가”입력에 아무 문제가 없으므로,이 특별한 경우<<
에 사용 주로 (전용 AFAIK)입니다 여기 서류 :$ cat << EOF > file.txt > Hello World! > EOF
구문
<< SomeStringHere > Out.file
은 끝나는 문자열 (EOF
위의 예에서)이 나타날 때까지 작성된 모든 텍스트 를 대상 파일로 리디렉션 합니다. 이 문서를 사용하면 여러 줄 문자열을 쉽게 형식화하고 변수와 특수 문자를 포함시킬 수 있습니다.
-
-
<<<
연산자 여기서 문자열 하는 다음과 같은 문헌이지만 변수를 확장한다. 예를 들어,grep foo <<< "$bar"
위의 명령은와 같습니다
echo "$bar" | grep foo
. -
실제로 찾고있는 것을 프로세스 대체 라고 하며 명령 출력을 다른 것으로 전달하는 또 다른 방법입니다. 로 구성됩니다
<(command)
.foo <(bar)
그래서, 당신을 위해
at
예를 들어, 당신은 할 수at now < <(echo "notify-send HELLO")
공정 대체 실제로 파일을 생성하기 때문에 위의 작품 (자세한 내용은 위의 링크를 읽기)과 함께 전달되는 해당 파일의 파일 기술자이다
<
에at now
.
1 기본 동작은 덮어 쓰기이며 noclobber
옵션을 bash 로 설정하여 수정할 수 있습니다 . 설정 echo foo > bar
하면 bar
존재 하면 실패 합니다. 이 경우 echo foo |> bar
대신에 강제로 사용할 수 있습니다 . 여기에서 섹션 3.6.2를 참조 하십시오 .