답변:
bash
여러 메타 문자를 정의합니다 . 보낸 사람 man bash
:
메타 문자
인용 부호가 없을 때 단어를 구분하는 문자입니다. 다음 중 하나 :
| &; () <> 스페이스 탭
메타 문자는 단어를 분리하기 때문에 공백으로 둘러싸여 있는지 여부는 중요하지 않습니다. 파이프 기호 |
는 메타 문자이므로 알 수 있듯이 주위에 공백이 필요하지 않습니다.
그 주 [
, ]
, {
, }
, 및 =
입니다 하지 메타 문자. 대조적으로, 의미는 공백으로 둘러싸여 있는지 여부에 따라 크게 달라집니다.
알다시피 |
공백으로 둘러싸여 있는지 여부 는 중요하지 않습니다 . 일반적으로 bash 사용자를 혼동하는 몇 가지 예를 살펴 보겠습니다. 치다:
$ (date)
Sun Mar 1 12:47:07 PST 2015
위의 parens는 date
명령이 서브 쉘에서 실행되도록합니다. 때문에 (
와 )
메타 문자이며, 공백이 필요하지 않습니다. 대조적으로 :
$ {date}
bash: {date}: command not found
이후 {
하고 }
있습니다 하지 메타 문자, 쉘 취급 {date}
한 단어로. date
명령 을 찾는 대신 이름이 지정된 명령을 찾습니다 {date}
. 찾지 못하므로 오류가 발생합니다.
또 다른 일반적인 문제는 test
명령입니다. 다음은 성공적으로 작동합니다.
$ [ abc ] && echo Yes
Yes
공백을 제거하면 오류가 발생합니다.
$ [abc] && echo Yes
bash: [abc]: command not found
때문에 [
하고 ]
있다 하지 메타 쉘 취급 [.bashrc]
막처럼 한 단어, 그 결과로서, date
예를 들어, 에러이다.
할당 문도 공백에 민감합니다. 다음 과제가 완료되었습니다.
$ v=date
$ echo $v
date
공백을 추가하면 할당이 실패합니다.
$ v= date
Sun Mar 1 12:55:05 PST 2015
위에서 쉘은 일시적 v
으로 비우기 로 설정 한 다음 date
명령 을 실행합니다 .
=
실패를 유발하기도하지만 다른 이유로 공백을 추가하십시오 .
$ v =date
bash: v: command not found
여기서 쉘 v
은 인수를 사용 하여 명령을 실행하려고 시도합니다 =date
. 오류는라는 이름의 명령을 찾지 못했기 때문 v
입니다.
=
. 디버깅하는 데 시간이 걸렸습니다.
파이프 를 사용하면 프로그램의 출력을 다른 입력의 입력으로 사용할 수 있습니다 ...
공간에 관해서는 @jasonwryan과 같은 가독성 / 개인 취향의 문제가 언급되었습니다.
"|"앞뒤에 스페이스 바 1 개 표준입니다 ....
하나의 라이너를 깔끔하게 만들뿐만 아니라 출력을 만들기 위해 -t 열과 함께 사용할 수도 있습니다.
lnydex99uhc:depot_r user$ lsof | grep my | column -t
Microsoft 290 user txt REG 1,4 9515016 170972 /Library/Fonts/PCmyoungjo.ttf
bash 359 user cwd DIR 1,4 714 12246074 /Users/zatef/hw2/base/active/myapp
공백을 사용하지 않는 것이 유용한 경우가 있습니다. 미국식 레이아웃을 사용하지 않는 경우 AltShiftL파이프 입력 과 같은 일부 조합을 사용해야 할 수 있습니다 . 이것은 그 자체로는 문제가 아니지만 한 가지 결과는 때로는 그 문자 앞이나 뒤에 문자가 아닌 문자를 입력하기도합니다. 예를 들어, 프랑스어 Macbook Pro 키보드에서는 AltShiftL을 입력해야합니다 |
. 빠르게 입력하면 실수로 다음을 입력 할 수 있습니다. AltShift( L, Space)
$ sudo dmesg | tail
zsh: command not found: tail
echo "sudo dmesg | tail" | od -a
0000000 s u d o sp d m e s g sp | � � t a
0000020 i l nl
AltShiftSpace입력 공간이 다른 공간 (비 공백 공간 ( U + 00A0 ))을 모르는 경우 다음 오류를 이해하기 어려울 수 있습니다.zsh: command not found: tail