(* \ : 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.