ls | grep *e*
을 사용하면 ls | grep e
보다 훨씬 적은 결과를 얻을 수 있습니다. 이유는 무엇입니까? 그들은 같은 명령이 아닙니다. 이 명령의 차이는 누구나 알고 있습니다.ls |의 차이점은 무엇입니까? grep * e * 및 ls | grep e
답변
ls | grep *e*
과ls | grep e
은 같은 명령이 아닙니까?
아니요, 이들은 다릅니다.
$ ls | grep *e*
와 명령 셸는 현재 디렉토리에서 문자 e
를 포함하는 모든 파일과 일치하는 패턴 *e*
을 확장합니다. 이 확장 된 파일 목록은 다음 grep
명령에 전달됩니다
$ ls
Hello.txt Null.txt Sample.txt
실행
$ ls | grep *e*
실제 명령 파일이 없습니다
$ ls | grep e
으로 ls | grep Hello.txt Sample.txt
될 것입니다 이름 확장 및 실제 명령은이됩니다..
다음$ ls | grep "*e*"
, 명령이 실제로있을 것입니다 :
는 확장하지 않고 매개 변수를 전달하려면
, 당신은 그것을 인용 할 필요도 참조 ls | grep *e*
("*e*"
은 argv[1]
으로 grep 명령에 전달됨).
셸 확장은 정규 표현식과 다릅니다. 셸은 *
의 모든 문자열과 일치하며, 정규 표현식에서는 *
은 이전 표현식의 개수가 발생해야 함을 나타냅니다.
셸은 명령을 실행하기 전에 *e*
을 확장합니다. 따라서 파일 이름이 beer
이고 free
인 경우 beer
에 대한 그렙을 free
에 입력하고 ls
에서 입력을 무시합니다.
*e*
은 유효한 정규 표현식이 아닙니다. *
은 "0 이상의 선행 표현식"을 의미하며 첫 번째 인스턴스에는 선행 표현식이 없습니다. 올바르게 grep
에 오류가 표시되어야하지만 그렇지 않습니다. 아무 것도 반복하지 않고 0 번 이상 반복하고이어서 e
을 0 번 이상 반복합니다. 상상할 수있는 모든 입력에는 0이 상 또는 그 이상이 포함되기 때문에 모든 입력 라인과 일치하게됩니다.
그러나 위에서 설명한 것처럼 grep
은 쉘에 의해 가로 채어 확장되기 때문에이 입력을 볼 수 없습니다. 문자 그대로 *
을 사용하려면 인용 부호가 필요합니다. 선행 및 후행 와일드 카드 값을 추가하지 않기 때문에
ls | grep '.*e.*'
는
ls | grep 'e'
말을 그냥 정말 절름발이 방법입니다 - grep
항상 어디서나 각 입력 라인에 일치를 찾습니다. *e*
정규 표현식하지
ls *e*
글로브 표현하지만, 글로브 패턴 : 당신이 실제로 원하는 것은
쉘의 기능과 일치하는 와일드 카드를 사용하는 것입니다. 당신이 분명히 기대하는대로합니다.
- 1. for i in`ls | grep` 질문
- 2. ls | grep with variable with regex
- 3. grep -e "Pattern"의 사용법은 무엇입니까? --regexp = Pattern?
- 4. grep "str"의 차이점은 무엇입니까? 및 grep "str"*
- 5. 교체 문자와 중괄호 괄호 (e) grep
- 6. grep 및 ls : xargs와 함께 사용하면 ls에 'l'플래그가 지원되지 않습니까?
- 7. ls -l
- 8. 쉘 명령 ls [abc] * e *는 무엇입니까? 검색?
- 9. "? extends E"와 "T extends E"의 차이점은 무엇입니까?
- 10. ls와 grep 및 regex를 결합합니다
- 11. 구조체 예제 * e : 함수 (& e)와 함수 (e)의 차이
- 12. 시스템 ('ls')의 출력을 읽는 방법은 무엇입니까?
- 13. (e) 특정 태그 내용에 대한 grep XML 방법은 무엇입니까?
- 14. jgit에서 "git grep -e <pattern>"하는 방법은 무엇입니까?
- 15. Solaris에서 "grep -e pattern1 -e pattern2 <file>"에 해당하는 것은 무엇입니까?
- 16. ls -l | grep D 실행 중 오류 발생 D | grep De
- 17. Ls 명령 KornShell
- 18. LS
- 19. ls()의 패턴이 1보다 클 수 있습니까?
- 20. grep 식을 반전하는 방법
- 21. ls -d * /?의 출력을 올바르게 리디렉션하는 방법?
- 22. grep 및 grep -v 동시에
- 23. JSON e 및 JSON E
- 24. 유닉스에서 세미콜론을 사용하는 grep grep
- 25. Bash "set -e"및 반품 된 리턴 코드
- 26. "ls-ltr | grep * .txt | cut -1"의 출력을 파이썬의 목록으로 리디렉션하는 방법
- 27. ls | 내가하고 싶은 곳 스크립트
- 28. AbstractList <E> - add (int index, E element), add (E e) 등의 반환 유형의 차이점은 무엇입니까?
- 29. 별칭 ls = "ls - color"in RegExp?
- 30. sed 명령에서 dash e (-e)의 의미는 무엇입니까?