"*.txt"와 *.txt의 차이점은 무엇입니까?

"*.txt"와 *.txt의 차이점은 무엇입니까?

여기에서 git 튜토리얼을 완료하고 있습니다. https://try.github.io/levels/1/challenges/7

*.txt 주위에 작은따옴표를 넣어야 한다고 나와 있습니다. 이전에 리눅스를 사용하면서 이런 모습을 본 적이 없는데 이상하다고 생각했습니다. 또한 html과 php를 사용할 때 문자열이 특수 문자를 사용하는 대신 문자 그대로 해석되도록 하기 위해 작은따옴표가 사용되는 것을 본 적이 있습니다.

답변1

이것은 언급한 다른 구문과 쉘에서 동일합니다. 작은따옴표로 묶인 문자열은 "문자열 리터럴"(말하자면)로 처리됩니다.

git add '*.txt'와 의 차이점은 git add *.txt파일 이름에 대해 패턴 일치를 수행하는 사람이 누구인지입니다.

의 경우 git add '*.txt'패턴 git매칭이 이루어지고 있습니다. 쉘은 문자열 리터럴을 확장하지 않으므로 '*.txt'단일 git add인수로 호출되며 사용 가능한 파일 이름과 일치됩니다 *.txt. git저장소 전체에 걸쳐(왜냐하면... git).

그렇다면 git add *.txt쉘은 파일 이름 일치를 수행하고 일치하는 파일 이름 목록을 전달받습니다.현재 디렉토리에서도착하다 git add. 주어진 패턴과 일치하는 이름이 없으면 쉘은 (보통 1 ) git add확장되지 않은 패턴을 전달합니다. 이 경우 결과는 레퍼런스 모드와 동일합니다.

1 일반적으로, 예를 failglob들어 쉘 옵션을 참조하십시오. bash이 답변에 대한 의견도 참조하십시오.


git add파일명을 알아낼 때무늬, 이는 현재 디렉토리에 일치하는 파일을 추가할 뿐만 아니라전체 저장소의 모든 일치 파일(즉, 모든 하위 디렉터리 포함) 그래서 오른쪽 하단에 있는 텍스트에 다음과 같은 내용이 나와 있습니다.

와일드카드:

쉘이 와일드카드를 방해하기 전에 Git이 와일드카드를 허용하도록 따옴표가 필요합니다. 따옴표가 없으면 쉘은 현재 디렉토리에서만 와일드카드 검색을 수행합니다. Git은 와일드카드 대신 쉘에서 찾은 파일 목록을 수신하며 octofamily 디렉토리 내에 파일을 추가할 수 없습니다.

답변2

작은따옴표는 쉘의 와일드카드 및 변수 확장을 방지하지만 큰따옴표는 와일드카드만 방지하고 변수 확장은 방지합니다.

*.txt모든 파일은 쉘을 통해 확장되고 나열됩니다 .txt. 하지만 인용문이 '*.txt'그것을 막습니다. 아래 예를 참조하세요.

echo *.txt
a.txt b.txt c.txt

echo '*.txt'
*.txt

관련 정보