(* \ : 2)에서 별표, 백 슬래시, 콜론 및 2의 의미는 무엇입니까?


14

다음 ls명령 의 의미는 무엇입니까 ?

ls -l *\:2,*T
  • ls = 목록
  • -l = 긴 (목록)
  • *T아마 T마지막에 의미

그러나 그 *\:2와 쉼표는 어떻습니까?

답변:


25

*\:2,*T나열 할 파일의 glob 패턴입니다. 그것을 이해하려면 몇 가지 사항을 기억해야합니다.

  • : 껍질에서 탈출하여 \:
  • 파일 이름은 쉽게 쉼표를 포함 할 수 있습니다

따라서 *\:2,*T예를 들어TranscationNumber:2,EventType:XYT

편집하다

코멘트에서, 탈출의 필요성 (또는하지 않음) :그것입니다 : 몇 마디를 필요로 하지 탈출 반드시 필요한 :기호 만하면 자동 완성 자체를 제시 비난.


3
Eugen과 HBruijn 모두에게 감사합니다. 복잡한 글 로빙 패턴이 의심되었지만 실제로 콜론 및 쉼표와 일치해야합니다. 파일로 작업 할 때는 생각하지 못했습니다. 이제이 명령은 완전히 의미가 있습니다. Maildir 디렉토리의 모든 이메일 파일을 "삭제됨"(T)으로 표시하십시오. Btw. 숫자 2는 버전 2의 Maildir을 의미합니다 ( wiki2.dovecot.org/MailboxFormat/Maildir 참조 ).
— jugmac00

11
언제 :탈출해야합니까?
— Barmar

7
:탈출 할 필요가 없습니다. 그것은 글로브 패턴이 아닌 특정 상황 (명령으로 사용될 때)에서만 특별합니다. 은 \:동일합니다 :탈출은 차이가 없습니다.
— terdon

1
@Aaron, 그것은 정확 하지 않습니다 : 쉘은 여전히 ​​변수 대체, 특히 할당 다양성을 처리합니다 (즉 기본값을 설정하기 위해) :unset var; : ${var:=x}; echo $var
— glenn jackman

3
@terdon & @Aaron 콜론 :은 COMP_WORDBREAKS환경 변수 의 기본값의 일부입니다 . Bash 자동 완성에서 이러한 문자는 읽기 라인 라이브러리에서 단어 구분 기호로 사용되며 콜론을 포함하는 파일 이름은 물론 단일 단어 여야합니다. bash 자동 완성의 이유는 콜론을 빠져
— 나가

14

와일드 카드 패턴과 일치하는 모든 파일을 나열하십시오. *:2,*T

와일드 카드 는 파일 / 디렉토리 이름에 있어야하는 문자 ( *모든 가능한 문자 수)와 일치
:2,합니다.
콜론 :은 이스케이프해야하는 특수 문자이므로의 형식입니다 \:2,.
파일 / 디렉토리 이름은로 끝나야합니다 T.

일치하는 파일 이름은

:2,T
a:2,T
a:2,bT
abbY-$fafaf:2,<hskjhsgdfhjk>T

1
특별한 것은 없습니다 : 이스케이프 할 필요는 없습니다.
— Kevin

@Kevin bash 자동 완성은 COMP_WORDBREAK기본적으로 설정되는 환경 값 목록에 포함되어 있기 때문에 파일 / 디렉토리 이름 패턴에서 콜론을 자동으로 이스케이프합니다 . -실제로 실제로 특수 문자는 아니지만 명령 줄에서 자동 완성을 사용하고 파일 이름을 콜론과 일치 시키거나 필요로 할 때 이스케이프해야합니다.
— HBruijn

9

다른 사람들이 지적했듯이 이것은 긴 형식,을 포함 :2하고 끝나는 파일로 나열 됩니다.T

Maildir 폴더에서 삭제 (휴지) 된 파일을 검색하는 것처럼 보입니다. 그러나 견고성 *을 위해 결국 에는 다른 것이 있어야했습니다 . 나중에 알파벳 위치를 가진 새로운 플래그가 추가 될 수 있으며, 예를 들어 Dovecot는 파일 크기가 끝에 다른 필드를 추가합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.