이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 zshexpn 명령입니다.
프로그램:
이름
zshexpn - zsh 확장 및 대체
기술
다음 유형의 확장은 표시된 순서대로 XNUMX단계로 수행됩니다.
연혁 확장
이는 대화형 셸에서만 수행됩니다.
별명 확장
별칭은 설명된 대로 명령줄이 구문 분석되기 직전에 확장됩니다.
앨리어싱 아래에서 zshmisc(1).
방법 치환
매개 변수 확장
Command 치환
산수 확장
가새 확장
이 다섯 가지 작업은 왼쪽에서 오른쪽으로 한 단계씩 수행됩니다. 이 후에
확장, 인용되지 않은 모든 문자 `', `'' 및 `"' 이다
제거되었습니다.
파일 이름 확장
경우 SH_FILE_EXPANSION 옵션이 설정되면 확장 순서가 수정됩니다.
호환성 sh 그리고 KSH. 그런 경우에는 파일 이름 확장 수행
직후 별명 확장, 언급된 XNUMX개의 확장팩 세트 이전
위.
파일 이름 세대
흔히 말하는 이 확장은 글로빙, 항상 마지막에 수행됩니다.
다음 섹션에서는 확장 유형에 대해 자세히 설명합니다.
연혁 확장
기록 확장을 통해 명령줄에서 이전 명령줄의 단어를 사용할 수 있습니다.
당신은 입력하고 있습니다. 이는 철자 수정과 복잡한 문장의 반복을 단순화합니다.
명령 또는 인수.
실행 직전에 각 명령은 기록 목록에 저장되며, 그 크기는 다음과 같습니다.
에 의해 통제된다. 히스트사이즈 매개변수. 가장 최근 명령 하나가 항상 유지됩니다.
어쨌든. 기록 목록에 저장된 각 명령을 기록이라고 합니다. event 이고
쉘이 시작될 때 1(일)로 시작하는 숫자가 할당됩니다. 역사번호
프롬프트에서 볼 수 있습니다(프롬프트 시퀀스 확장 참조). zshmisc(1))은
할당될 번호 다음 것 명령.
회사 개요
역사 확장은 첫 번째 문자로 시작됩니다. 히스토그램 매개변수는
`!' 기본적으로 명령줄의 어느 곳에서나 발생할 수 있습니다. 역사 확장은 그렇지 않습니다
둥지. `!'는 `로 이스케이프할 수 있습니다.' 또는 작은따옴표 쌍으로 묶을 수 있습니다.
('') 특별한 의미를 억제합니다. 큰따옴표는 지원 이것을 위해 일하십시오. 수행원
이 기록 문자는 선택적 이벤트 지정자입니다('이벤트' 섹션 참조).
지정자') 그리고 선택적 단어 지정자('단어 지정자' 섹션); 만약에
이러한 지정자 중 어느 것도 존재하지 않으며 기록 확장이 발생하지 않습니다.
기록 확장이 포함된 입력 줄은 확장된 후에 에코됩니다.
다른 확장은 명령이 실행되기 전에 발생합니다. 확장된 형태는 이렇습니다
나중에 참조할 수 있도록 기록 이벤트로 기록됩니다.
기본적으로 이벤트 지정자가 없는 기록 참조는 동일한 이벤트를 참조합니다.
해당 명령줄에서 이전 기록 참조를 참조합니다. 그것이 유일한 기록 참조인 경우
명령은 이전 명령을 참조합니다. 그러나 옵션의 경우 CSH_JUNKIE_HISTORY is
설정한 다음 이벤트 사양 없이 모든 기록 참조를 설정합니다. 항상 는
이전 명령.
예를 들어 `!'는 이전 명령에 대한 이벤트 지정자이므로 `!!:1'는 항상 언급한다.
이전 명령의 첫 번째 단어로, `!! $'는 항상 마지막 단어를 가리킨다.
이전 명령. 와 함께 CSH_JUNKIE_HISTORY 설정한 다음 `!:1' 및 `!$' 함수도 마찬가지
`와 같은 방식!!:1' 및 `!! $', 각각. 반대로, 만약 CSH_JUNKIE_HISTORY 설정되지 않았습니다.
그러면 `!:1' 및 `!$'는 동일한 사건의 첫 번째 단어와 마지막 단어를 각각 나타냅니다.
현재 명령에서 가장 가까운 다른 기록 참조에 의해 참조됩니다.
행 또는 이전 참조가 없는 경우 이전 명령으로 이동합니다.
문자 순서 `^푸^바' (여기서 `^'는 실제로 두 번째 문자입니다.
히스토그램 매개변수) 마지막 명령을 반복하여 문자열을 바꿉니다. 푸 과 바. 더
정확하게는 시퀀스 `^푸^바^'는 `와 동의어이다.!!:s^푸^바^', 따라서 다른
수정자(`수정자' 섹션 참조)는 마지막 `^'. 특히,
`^푸^바^:지' 전역 대체를 수행합니다.
쉘이 문자 시퀀스 `를 발견하면!"' 입력에서 히스토리 메커니즘은 다음과 같습니다.
현재 목록까지 일시적으로 비활성화됩니다(참조 zshmisc(1))이 완전히 구문 분석되었습니다. `!"'는
입력에서 제거되고 후속 `!' 문자에는 특별한 의미가 없습니다.
덜 편리하지만 더 이해하기 쉬운 형태의 명령 기록 지원이 제공됩니다.
전에, fc 내장.
이벤트 지정자
이벤트 지정자는 기록 목록의 명령줄 항목에 대한 참조입니다. 에서
아래 목록에 있는 초기 항목은 `!' 각 항목에서 다른 캐릭터로 변경될 수 있습니다
~을 설정하여 히스토그램 매개 변수입니다.
! 공백, 줄 바꿈, `가 뒤따르는 경우를 제외하고 히스토리 확장을 시작합니다.=' 또는 `('.
바로 뒤에 단어 지정자가 오면(`단어 지정자' 섹션 참조),
이는 이벤트 지정자가 없는 기록 참조를 형성합니다(섹션 참조).
'개요').
!! 이전 명령을 참조하세요. 이 확장 자체는 이전 확장을 반복합니다.
명령.
!n 명령줄 참조 n.
!-n 현재 명령줄 빼기 참조 n.
!하위 버전 다음으로 시작하는 가장 최근 명령을 참조하세요. 하위 버전.
!?하위 버전[?]
다음을 포함하는 가장 최근 명령을 참조하십시오. 하위 버전. 후행 `?'가 필요한 경우
이 참조 뒤에는 수식어가 오고, 그 뒤에는 수식자가 아닌 텍스트가 옵니다.
의 일부로 간주됩니다. 하위 버전.
!# 지금까지 입력한 현재 명령줄을 참조하세요. 라인은 마치 라인처럼 처리됩니다.
`가 있는 단어 앞의 단어까지 포함하여 완전합니다.!#' 참조.
!{...} (필요한 경우) 인접한 문자로부터 기록 참조를 격리합니다.
워드 지정자
단어 지정자는 주어진 명령줄의 어떤 단어가 포함될 것인지를 나타냅니다.
역사 참조에서. ``:'는 일반적으로 이벤트 사양을 단어와 분리합니다.
지정자. 단어 지정자가 `로 시작하는 경우에만 생략할 수 있습니다.^', `$', `*',
`-' 또는 `%'. 단어 지정자에는 다음이 포함됩니다.
0 첫 번째 입력 단어(명령어)입니다.
n The n번째 인수.
^ 첫 번째 주장. 그건, 1.
$ 마지막 주장.
% (가장 최근의 것)과 일치하는 단어 ?하위 버전 검색 할 수 있습니다.
x-y 다양한 단어; x 기본값은 0.
* 모든 인수 또는 인수가 없는 경우 null 값입니다.
x* ` 약어x-$'.
x- 좋아요x*'라는 말을 생략했지만 $.
`%' 단어 지정자는 `!%', `!:%' 또는 `!?하위 버전?:%',
그리고 이후에 사용하는 경우에만 !? 확장(아마도 이전 명령에서). 다른 것
오류가 가장 명백하지는 않더라도 오류가 발생합니다.
수정 자
선택적 단어 지정자 뒤에 다음 중 하나 이상의 시퀀스를 추가할 수 있습니다.
수정자, 각각 앞에는 `:'. 이러한 수정자는 다음의 결과에도 작동합니다. 파일 이름
세대 그리고 매개 변수 확장명시된 경우를 제외하고.
a 파일 이름을 절대 경로로 변환: 현재 디렉터리 앞에 추가합니다.
필요하며 `의 사용을 해결합니다...' 및 `.' 경로에 있습니다. 참고
파일이나 중간 디렉터리가 변경되지 않는 경우에도 변환이 발생합니다.
있다.
A `로a'이지만 가능한 경우 기호 링크 사용도 해결합니다. 참고하세요
`의 해상도..'가 발생합니다 전에 심볼릭 링크의 해결. 이 통화는
에 해당 a 귀하의 시스템에 진짜 경로 시스템 호출(현대 시스템
해야 할 것).
c 다음과 같이 제공된 명령 경로를 검색하여 명령 이름을 절대 경로로 확인합니다.
전에, PATH 변하기 쉬운. 이는 디렉토리 부분이 포함된 명령에는 작동하지 않습니다.
또한 이것은 일반적으로 다음의 파일이 아니면 glob 한정자로 작동하지 않습니다.
현재 디렉터리에 동일한 이름이 있습니다.
e ` 뒤에 오는 파일 이름 확장자의 일부를 제외하고 모두 제거합니다..'; 참조
설명에 파일 이름 확장자 정의 r 아래 수정자.
해당 정의에 따르면 문자열이 끝나면 결과는 비어 있습니다.
`와 함께.'.
h 헤드를 남겨두고 후행 경로 이름 구성 요소를 제거합니다. 이것은 다음과 같이 작동합니다 `이름'.
l 단어를 모두 소문자로 변환합니다.
p 새 명령을 인쇄하되 실행하지는 마세요. 기록 확장에서만 작동합니다.
q 추가 대체를 피하고 대체 단어를 인용하십시오. 역사와 함께 작동
확장 및 매개변수 확장은 매개변수의 경우에만 유용합니다.
결과 텍스트는 다음과 같이 재평가됩니다. 평가.
Q 대체 단어에서 한 수준의 따옴표를 제거합니다.
r 루트 이름을 남기고 파일 이름 확장자를 제거합니다. 파일 이름이 없는 문자열
확장자는 변경되지 않습니다. 파일 이름 확장자는 `.' 다음에는 원하는 수의
`가 아닌 문자(XNUMX 포함).'도 아니고 `/' 그리고 그게 계속해서
문자열의 끝. 예를 들어 `foo.orig.c'는 `.c'및
`디렉토리.c/foo'에는 확장자가 없습니다.
s/l/r[/]
대용품 r 을 통한 l 아래에 설명된 대로. 대체는 첫 번째에만 수행됩니다.
일치하는 문자열 l. 배열 및 파일 이름 생성의 경우 이는 다음에 적용됩니다.
확장된 텍스트의 각 단어. 대체에 대한 자세한 내용은 아래를 참조하세요.
형태 `GS/l/r' 및 `s/l/r/:G' 전역 대체를 수행합니다. 즉, 대체
모든 발생 r 을 통한 l. 참고로 g or :G 정확하게 나타나야 합니다.
위치가 표시됩니다.
이 대체 형태에 대한 자세한 내용은 아래를 참조하세요.
& 이전 내용을 반복하세요. s 치환. 좋다 s, 바로 앞에 다음이 올 수 있습니다. g.
매개변수 확장에서는 & 중괄호 안에 표시되어야 하며 파일 이름 생성 시에도 나타나야 합니다.
백슬래시로 인용해야 합니다.
t 꼬리 부분만 남기고 모든 선행 경로 이름 구성 요소를 제거합니다. 이것은 다음과 같이 작동합니다
`기본 이름'.
u 단어를 모두 대문자로 변환합니다.
x 처럼 q, 그러나 공백에서는 단어로 구분됩니다. 매개변수와 함께 작동하지 않습니다.
확장.
The s/l/r/ 대체는 다음과 같이 작동합니다. 기본적으로 대체 항목의 왼쪽
패턴이 아니라 문자열입니다. 모든 문자를 구분 기호로 사용할 수 있습니다.
`의 장소/'. 백슬래시는 구분 문자를 인용합니다. 캐릭터 `&',에서는
오른편 r, 왼쪽의 텍스트로 대체됩니다. l. `&'가 될 수 있다
백슬래시로 인용했습니다. 널 l 이전 문자열 중 하나를 사용합니다. l or
상황별 스캔 문자열에서 s `에서!?s'. 다음과 같은 경우 가장 오른쪽 구분 기호를 생략할 수 있습니다.
개행 문자가 바로 따라옵니다. r; 가장 오른쪽 `?' 컨텍스트 스캔에서 유사하게 될 수 있습니다
생략. 지난번과 동일한 기록을 참고하세요. l 그리고 r 모든 형태에서 유지됩니다.
확장.
`&'는 glob 한정자 내에서 사용되며 추가 백슬래시가 필요합니다. & 하는
이 경우에는 특수 문자입니다.
또한 확장 순서는 다음의 해석에 영향을 미칩니다. l 그리고 r. 사용시
다른 확장보다 먼저 발생하는 역사 확장에서, l 그리고 r 로 취급된다
리터럴 문자열(설명된 내용 제외) HIST_SUBST_PATTERN 아래에). 에서 사용될 때
매개변수 확장, 대체 r 매개변수 값에 대한 작업이 먼저 수행되고
그런 다음 추가 프로세스, 매개변수, 명령, 산술 또는 중괄호 참조가
적용되며, 다음과 같은 경우 대체 및 확장을 두 번 이상 평가할 수 있습니다. l 등장하다
시작 값에서 두 번 이상. glob 한정자에서 사용될 때 모든 대체 또는
확장은 `:s'
표현 자체가 다음과 같이 나누어진다. l 그리고 r 면.
옵션 HIST_SUBST_PATTERN 설정됩니다. l 일반적인 형태의 패턴으로 취급됩니다.
아래의 FILENAME GENERATION 섹션에 설명되어 있습니다. 이건 모든 장소에서 사용할 수 있어요
수정자를 사용할 수 있는 경우 그러나 globbing 한정자 매개변수에서는
대체가 이미 발생했으므로 대체 문자열의 매개변수는 다음과 같아야 합니다.
정확한 시기에 교체되도록 견적을 받았습니다. 복잡하다는 점도 참고하세요
globbing 한정자에 사용되는 패턴에는 확장된 glob 한정자 표기법이 필요할 수 있습니다.
(#q:초/.../.../) 쉘이 표현식을 glob 한정자로 인식하기 위해서입니다.
또한 대체의 잘못된 패턴은 해당되지 않습니다. NO_BAD_PATTERN
옵션이므로 오류가 발생합니다.
인셀덤 공식 판매점인 HIST_SUBST_PATTERN 설정됩니다. l 로 시작할 수 있습니다 # 패턴이 있어야 함을 나타냅니다.
대체할 문자열의 시작 부분에서 일치하고 % 처음에 나타날 수도 있고
~ 후에 # 패턴이 문자열의 끝에서 일치해야 함을 나타냅니다.
대체. 그만큼 % or # 두 개의 백슬래시로 인용할 수 있습니다.
예를 들어, 다음과 같은 파일 이름 생성 코드 부분은 EXTENDED_GLOB
옵션 :
인쇄 *.c(#q:s/#%(#b)s(*).c/'S${match[1]}.C'/)
의 확장을 취한다 *.씨 그리고 glob 한정자를 적용합니다. (#큐...) 표현,
이는 각 단어의 시작과 끝에 고정된 대체 수정자로 구성됩니다(#%).
그러면 역참조가 활성화됩니다((#비)), 괄호로 묶인 하위 표현을 사용할 수 있도록
대체 문자열에서 다음과 같이 ${match[1]}. 대체 문자열은 인용되어 있으므로
매개변수는 파일 이름 생성이 시작되기 전에 대체되지 않습니다.
다음 f, F, w 그리고 W 수정자는 매개변수 확장 및 파일 이름에서만 작동합니다.
세대. 모든 항목에 대한 단일 참조 지점을 제공하기 위해 여기에 나열되었습니다.
수정자.
f 결과가 나타날 때까지 즉시(콜론 없이) 다음 수정자를 반복합니다.
말은 더 이상 변하지 않습니다.
F:특급:
처럼 f, 그러나 반복만 n 표현의 경우 횟수 특급 ~에 평가하다 n. 어떤
` 대신 문자를 사용할 수 있습니다.:'; 만약 `(', `[' 또는 `{'로 사용된다.
여는 구분 기호, 닫는 구분 기호는 ')', `]' 또는 `}', 각각.
w 문자열의 각 단어에 대해 바로 다음 수정자가 작동하도록 합니다.
W:9월: 처럼 w 그러나 단어는 다음과 같이 구분된 문자열 부분으로 간주됩니다.
9월. ` 대신 모든 문자를 사용할 수 있습니다.:'; 여는 괄호가 처리됩니다.
특히 위를 참조하세요.
방법 치환
` 형식을 취하는 명령 인수의 각 부분<(명부)', `>(명부)' 또는 `=(명부)'는
프로세스 대체 대상이 됩니다. 표현식은 다른 표현식 앞에 올 수도 있고 뒤에 올 수도 있습니다.
단, 일반적으로 발생하는 문자열 및 패턴과의 충돌을 방지하기 위해
마지막 형식은 명령 인수 시작 부분에 와야 하며 형식은 확장만 됩니다.
명령이나 할당 인수를 처음 구문 분석할 때. 프로세스 대체가 사용될 수 있습니다.
다음 리디렉션 연산자; 이 경우 대체 항목은 없음으로 나타나야 합니다.
후행 문자열.
의 경우 < or > 양식에서 쉘은 명령을 실행합니다. 명부 하위 프로세스로
쉘 명령줄을 실행하는 작업입니다. 시스템이 지원하는 경우 /dev/fd 기구,
명령 인수는 파일 설명자에 해당하는 장치 파일의 이름입니다.
그렇지 않고 시스템이 명명된 파이프(FIFO)를 지원하는 경우 명령 인수는
명명된 파이프. 형식이 다음과 같은 경우 > 이 특수 파일에 쓰면 다음과 같은 결과가 나타납니다.
입력 명부. 면 < 사용되면 인수로 전달된 파일이 다음과 연결됩니다.
의 출력 명부 프로세스. 예를 들어,
파스타 <(잘라내기 -f1 file1) <(잘라내기 -f3 file2) |
티 >(프로세스1) >(프로세스2) > / dev / null
파일에서 필드 1과 3을 잘라냅니다. file1 그리고 file2 각각 결과를 붙여 넣습니다.
함께 프로세스에 보냅니다. 프로세스1 그리고 프로세스2.
If =(...) 대신에 사용된다 <(...), 인수로 전달된 파일의 이름은 다음과 같습니다.
출력을 포함하는 임시 파일의 명부 프로세스. 이것은 대신 사용될 수 있습니다
의 < lseek를 예상하는 프로그램에 대한 양식(참조 이시크(2)) 입력 파일에.
양식 대체에 대한 최적화가 있습니다. =(<<아르헨티나)어디로 아르헨티나 하는
here-string 리디렉션에 대한 단일 단어 인수 <<. 이 양식은 파일 이름을 생성합니다
다음의 값을 포함하는 아르헨티나 대체가 수행된 후. 이것이 처리된다
완전히 현재 쉘 내에 있습니다. 이는 사실상 특수 형식의 반대입니다.
$(아르헨티나) 치료하는 아르헨티나 파일 이름으로 사용하고 이를 파일 내용으로 바꿉니다.
The = 형식은 두 가지 모두로 유용합니다. /dev/fd 명명된 파이프 구현은 다음과 같습니다. <(...) 있다
단점. 전자의 경우 일부 프로그램에서는 파일을 자동으로 닫을 수 있습니다.
특히 다음과 같은 경우에는 명령줄에서 파일을 검사하기 전에 문제의 설명자를 확인하십시오.
프로그램이 setuid를 실행할 때와 같은 보안상의 이유로 필요합니다. 에서
두 번째 경우, 프로그램이 실제로 파일을 열지 않으면 서브쉘은
파이프에서 읽거나 쓰게 됩니다(일반적인 구현에서는 다른 작동 방식을 사용함).
시스템은 다른 동작을 가질 수 있습니다) 영원히 차단되며 명시적으로 종료되어야 합니다. ~ 안에
두 경우 모두 쉘은 실제로 파이프를 사용하여 정보를 제공하므로 프로그램은
lseek를 기대하는 사람(참조 이시크(2)) 파일에서는 작동하지 않습니다.
또한 이전 예제를 더 간결하고 효율적으로 작성할 수 있습니다.
(제공된 멀티 옵션이 설정됨):
파스타 <(잘라내기 -f1 file1) <(잘라내기 -f3 file2)
> >(프로세스1) > >(프로세스2)
쉘은 FIFO 대신 파이프를 사용하여 후자의 두 프로세스 대체를 구현합니다.
위의 예.
추가적인 문제가 있습니다 >(방법); 외부에 부착했을 때
명령을 실행하면 상위 쉘은 기다리지 않습니다. 방법 끝내고 즉시
다음 명령은 완료되는 결과에 의존할 수 없습니다. 문제와 해결책은
섹션에 설명된 것과 동일합니다. 멀티 in zshmisc(1). 따라서 단순화된 버전에서는
위의 예에서:
파스타 <(잘라내기 -f1 file1) <(잘라내기 -f3 file2) > >(방법)
(아니요 멀티 참여하고 있습니다), 방법 비동기식으로 실행됩니다.
부모 쉘이 관련됩니다. 해결 방법은 다음과 같습니다.
{ 파스타 <(잘라내기 -f1 file1) <(잘라내기 -f3 file2) } > >(방법)
여기의 추가 프로세스는 상위 셸에서 생성되어 해당 프로세스가 완료될 때까지 기다립니다.
완성.
임시 파일이 필요한 대체 작업이 있을 때마다 또 다른 문제가 발생합니다.
`&!' 또는 `&|'라는 문구가 마지막에 나타납니다.
대체가 포함된 명령입니다. 이 경우 임시 파일은 정리되지 않습니다.
쉘에는 더 이상 작업에 대한 메모리가 없기 때문입니다. 해결 방법은 서브쉘을 사용하는 것입니다.
예,
(mycmd =(내 출력)) &!
분기된 서브셸은 명령이 완료될 때까지 기다린 다음 임시 파일을 제거합니다.
적절한 기간 동안 프로세스 대체가 지속되도록 하는 일반적인 해결 방법
시간은 이를 익명 쉘 함수(쉘 코드의 일부)에 매개변수로 전달하는 것입니다.
이는 함수 범위로 즉시 실행됩니다). 예를 들어 다음 코드는 다음과 같습니다.
() {
인쇄 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에 $ 1 :
방법 $1
} =(인쇄 이 be 전에, 절)
다음과 유사한 내용을 출력합니다.
입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에 /tmp/zsh6nU0kS:
이 be 전에, 절
프로세스 대체에 의해 생성된 임시 파일은 함수 실행 시 삭제됩니다.
출구.
매개 변수 확장
캐릭터 `$'는 매개변수 확장을 도입하는 데 사용됩니다. 보다 zshparam(1)
배열, 연관 배열 및 아래 첨자 표기법을 포함한 매개변수에 대한 설명
개별 배열 요소에 액세스합니다.
특히 따옴표가 없는 매개변수의 단어는 자동으로 분할되지 않는다는 점에 유의하세요.
옵션이 없으면 공백에 SH_WORD_SPLIT 설정되었습니다. 아래에서 이 옵션에 대한 참조를 참조하세요.
상세 사항은. 이는 다른 쉘과의 중요한 차이점입니다.
패턴이 필요한 아래 설명된 확장에서 패턴의 형태는 다음과 같습니다.
파일 이름 생성에 사용된 것과 동일합니다. '파일 이름 생성' 섹션을 참조하세요. 메모
대체 텍스트와 함께 이러한 패턴은 그 자체입니다.
매개변수 확장, 명령 대체 및 산술 확장이 적용됩니다. ~ 안에
다음 작업 외에도 섹션에 설명된 콜론 수정자
'역사 확장' 섹션의 '수정자'가 적용될 수 있습니다: 예를 들어,
${i:s/foo/bar/} 매개변수 확장 시 문자열 대체를 수행합니다. $i.
${name}
매개변수의 값(있는 경우) name 대체됩니다. 교정장치는 필수입니다
확장 뒤에 문자, 숫자 또는 밑줄이 올 경우
의 일부로 해석된다 name. 게다가 좀 더 복잡한 형태의
대체에는 일반적으로 중괄호가 있어야 합니다. 예외는 적용됩니다.
만약 옵션 KSH_ARRAYS 설정되지 않았습니다. 단일 아래 첨자이거나 콜론 수정자입니다.
이름 뒤에 표시되거나 `^', `=', `~', `#' 또는 `+'
이름 앞에 표시되며 모두 중괄호 유무에 관계없이 작동합니다.
If name 배열 매개변수이고 KSH_ARRAYS 옵션이 설정되지 않은 경우 값은
각 요소의 name 단어당 하나의 요소로 대체됩니다. 그렇지 않으면,
확장 결과는 한 단어로만 나타납니다. ~와 함께 KSH_ARRAYS, 이것은 의 첫 번째 요소입니다.
배열. 다음을 제외하고는 결과에 대해 필드 분할이 수행되지 않습니다. SH_WORD_SPLIT option
설정됩니다. 깃발도 보세요 = 그리고 s:현:.
${+name}
If name 설정된 매개변수의 이름입니다 `1'가 대체되고, 그렇지 않으면 `0'는
대체.
${name-워드}
${name:-워드}
If name 설정되었거나 두 번째 형식이 null이 아닌 경우 해당 값을 대체합니다.
그렇지 않으면 대체하다 워드. 두 번째 형태에서는 name 생략될 수 있으며, 이 경우
워드 항상 대체됩니다.
${name+워드}
${name:+워드}
If name 설정되었거나 두 번째 형식이 null이 아닌 경우 대체합니다. 워드; 그렇지 않으면
아무것도 대체하지 마십시오.
${name=워드}
${name:=워드}
${name::=워드}
첫 번째 형태의 경우, name 설정되지 않은 다음으로 설정하세요. 워드; 두 번째 형식의 경우
name 설정되지 않았거나 null이면 다음으로 설정됩니다. 워드; 그리고 세 번째 형태에서는 무조건
세트 name 에 워드. 모든 형태에서 매개변수 값이 대체됩니다.
${name?워드}
${name:?워드}
첫 번째 형태의 경우, name 설정되거나 두 번째 형식인 경우 name 둘 다 설정되어 있고
null이 아닌 경우 해당 값을 대체합니다. 그렇지 않으면 인쇄하세요. 워드 그리고 쉘에서 빠져나옵니다.
대신 대화형 쉘은 프롬프트로 돌아갑니다. 만약에 워드 생략된 경우
표준 메시지가 인쇄됩니다.
변수를 테스트하고 대안을 대체하는 위의 표현식에서 워드,
표준 쉘 인용을 사용할 수 있습니다. 워드 선택적으로 재정의할 값
분할은 다음에 의해 수행되었습니다. SH_WORD_SPLIT 옵션과 = 플래그는 있지만 분할되지는 않습니다.
s:현: 깃발.
다음 표현식에서 name 배열이고 대체 항목이 인용되지 않았습니다. 또는
`(@)' 플래그 또는 name[@] 구문이 사용되며 일치 및 교체가 수행됩니다.
각 배열 요소를 별도로.
${name#무늬}
${name##무늬}
경우 무늬 값의 시작 부분과 일치합니다. name, 그런 다음
의 가치 name 일치하는 부분이 삭제된 상태에서; 그렇지 않으면 그냥 대체하십시오.
의 가치 name. 첫 번째 형식에서는 가장 작은 일치 패턴이 선호됩니다. ~에
두 번째 형식에서는 가장 큰 일치 패턴이 선호됩니다.
${name%무늬}
${name%%무늬}
경우 무늬 값의 끝 부분과 일치합니다. name, 다음의 값을 대체합니다.
name 일치하는 부분이 삭제된 상태에서; 그렇지 않으면 다음 값을 대체하면 됩니다.
name. 첫 번째 형식에서는 가장 작은 일치 패턴이 선호됩니다. 두 번째에는
형식에서는 가장 큰 일치 패턴이 선호됩니다.
${name:#무늬}
경우 무늬 의 값과 일치합니다. name, 빈 문자열을 대체합니다.
그렇지 않으면 다음 값을 대체하면 됩니다. name. 면 name 일치하는 배열입니다
배열 요소가 제거됩니다(`(M)일치하지 않는 요소를 제거하는 ' 플래그).
${name:|배열 이름}
If 배열 이름 배열 변수의 이름(내용이 아닌 NB)입니다.
에 포함된 요소 배열 이름 대체에서 제거됩니다. name. 경우
대체는 스칼라입니다. 왜냐하면 name 스칼라 변수이거나 표현식입니다.
인용되어 있으며, 배열 이름 대신 전체에 대해 테스트됩니다.
표현.
${name:*배열 이름}
앞의 대체와 유사하지만 반대 의미이므로 항목은 다음과 같습니다.
원래 대체와 요소로 모두 존재합니다. 배열 이름 유지됩니다
그리고 다른 것들은 제거되었습니다.
${name:^배열 이름}
${name:^^배열 이름}
출력 배열이 가장 짧은 배열의 두 배 길이가 되도록 두 개의 배열을 압축합니다.
(`에 대해 가장 길다:^^') 의 name 그리고 배열 이름, 요소가 교대로
그중에서 골랐습니다. `의 경우:^', 입력 배열 중 하나가 더 길면 출력은
더 짧은 배열의 끝에 도달하면 중지됩니다. 따라서,
a=(1 2 3 4); b=(a NS); 인쇄 ${a:^b}
`를 출력합니다1 a 2 b'. `의 경우:^^'를 입력한 다음 모든 항목이 완료될 때까지 입력을 반복합니다.
더 긴 배열이 모두 사용되었으며 위의 내용은 `1 a 2 b 3 a 4 b'.
입력 중 하나 또는 둘 다 스칼라일 수 있으며 길이가 1인 배열로 처리됩니다.
스칼라를 유일한 요소로 사용합니다. 두 배열 중 하나가 비어 있으면 다른 배열은 비어 있습니다.
추가 요소가 삽입되지 않은 상태로 출력됩니다.
현재 다음 코드는 `를 출력합니다.a b' 및 `1' 두 개의 별도 요소로,
예상치 못한 일이 될 수 있습니다. 두 번째 인쇄에서는 해결 방법을 제공합니다.
이것이 변경되면 계속 작동하십시오.
a=(a NS); b=(1 2); 인쇄 -l "${a:^b}"; 인쇄 -l "${${a:^b}}"
${name:오프셋}
${name:오프셋:길이}
이 구문은 다음 형식의 매개변수 첨자와 유사한 효과를 제공합니다.
$name[스타트,end], 그러나 다른 쉘과 호환됩니다. 둘 다 참고하세요 오프셋 그리고
길이 아래첨자의 구성요소와 다르게 해석됩니다.
If 오프셋 음수가 아닌 경우 변수 name 스칼라 대체입니다.
내용 시작 오프셋 문자열의 첫 번째 문자의 문자, 그리고
name 시작하는 배열 대체 요소입니다. 오프셋 처음부터의 요소
요소. 만약에 길이 주어진 많은 문자나 요소를 대체하고,
그렇지 않으면 스칼라 또는 배열의 나머지 전체입니다.
긍정적 인 오프셋 항상 문자나 요소의 오프셋으로 처리됩니다. name
배열의 첫 번째 문자 또는 요소에서 (이것은 기본 zsh와 다릅니다.
아래첨자 표기법). 따라서 0은 관계없이 첫 번째 문자 또는 요소를 나타냅니다.
옵션 설정 중 KSH_ARRAYS.
음수 오프셋은 스칼라 또는 배열의 끝에서부터 거꾸로 계산되므로 -1이 됩니다.
마지막 문자나 요소 등에 해당합니다.
긍정적일 때, 길이 에서 계산 오프셋 스칼라의 끝을 향한 위치
또는 배열. 부정적일 때, 길이 끝부터 다시 계산합니다. 이로 인해 다음과 같은 결과가 발생하면
보다 작은 위치 오프셋, 진단이 인쇄되고 대체되는 항목은 없습니다.
옵션 멀티바이트 준수됩니다. 즉, 오프셋 및 길이 카운트 멀티바이트
적절한 경우 문자.
오프셋 그리고 길이 스칼라와 동일한 쉘 대체 세트를 겪습니다.
과제; 또한 산술 평가도 수행됩니다. 따라서,
예를 들면
인쇄 ${푸:3}
인쇄 ${foo: 1 + 2}
인쇄 ${foo:$(( 1 + 2))}
인쇄 ${foo:$(에코 1 + 2)}
모두 동일한 효과를 가지며, 네 번째 문자에서 시작하는 문자열을 추출합니다.
$foo 그렇지 않으면 대체가 스칼라를 반환하거나 다음에서 시작하는 배열을 반환하는 경우
네 번째 요소인 경우 $foo 배열을 반환합니다. 옵션으로 참고하세요
KSH_ARRAYS $foo 오프셋 사용에 관계없이 항상 스칼라를 반환합니다.
구문) 및 다음과 같은 형식 $foo[*]:3 배열의 요소를 추출하는 데 필요합니다.
이름 푸.
If 오프셋 부정적이다, - 직후에는 나타나지 않을 수도 있습니다. : 이것으로
를 나타냅니다 ${name:-워드} 대체 형태. 대신 공백을 삽입할 수 있습니다.
이전 -. 게다가 둘 다 오프셋 ...도 아니다 길이 알파벳으로 시작할 수 있습니다
문자 또는 & 이는 히스토리 스타일 수정자를 나타내는 데 사용되기 때문입니다. 에게
변수의 값을 대체하는 경우 권장되는 접근 방식은 변수 앞에 다음을 추가하는 것입니다.
a $ 이는 의도를 의미하므로(매개변수 대체가 쉽게 렌더링될 수 있음)
읽을 수 없음); 그러나 산술 치환이 수행됨에 따라 표현식은 다음과 같습니다.
${var: 꺼짐} 작동하고 오프셋을 검색합니다. $오프.
다른 쉘과의 추가 호환성을 위해 배열에 대한 특별한 경우가 있습니다.
오프셋 0. 이는 일반적으로 배열의 첫 번째 요소에 액세스합니다. 그러나 만일
대체는 위치 매개변수 배열을 참조합니다. 예: $@ or $*, 오프셋
0은 대신 다음을 참조합니다. $0, 오프셋 1은 다음을 나타냅니다. $1, 등등. 즉,
위치 매개변수 배열은 앞에 추가하여 효과적으로 확장됩니다. $0. 금후
${*:0:1} 대체물 $0 그리고 ${*:1:1} 대체물 $1.
${name/무늬/답장}
${name//무늬/답장}
가능한 가장 긴 일치 항목을 교체합니다. 무늬 매개변수 확장 시 name by
현 답장. 첫 번째 형식은 첫 번째 항목만 대체하고 두 번째 형식은
모든 발생. 둘 다 무늬 그리고 답장 큰따옴표로 대체될 수 있습니다.
그래서 다음과 같은 표현은 ${이름/$opat/$npat} 작동하지만 일반적인 규칙에 유의하세요.
그 패턴 문자는 $opat 옵션이 없으면 특별히 취급되지 않습니다.
GLOB_SUBST 설정되거나 $opat 대신에 다음과 같이 대체됩니다. ${~opat}.
The 무늬 `로 시작할 수 있습니다.#', 이 경우에는 무늬 시작 시 일치해야 함
문자열의 또는 `%', 이 경우 문자열 끝에서 일치해야 합니다.
`#%' 이 경우 무늬 전체 문자열과 일치해야 합니다. 그만큼 답장 일 수 있습니다
빈 문자열, 이 경우 마지막 `/'도 생략 가능합니다. 결승전을 인용하자면
`/' 다른 경우에는 단일 백슬래시가 앞에 와야 합니다. 이것은 아니다
`/'는 대체된 매개변수 내에서 발생합니다. 또한
`#', `%' 및 `#% 대체 매개변수 내에서 발생하는 경우에도 활성화되지 않습니다.
처음에는.
첫 번째 `/' 앞에 `가 올 수 있습니다.:', 이 경우 일치는 성공합니다.
전체 단어와 일치하는 경우. 의 효과도 참고하세요. I 그리고 S 매개 변수
아래의 확장 플래그; 그러나 플래그는 M, R, B, E 그리고 N 유용하지 않습니다.
예를 들어,
foo="반짝반짝 반짝이다 작은 별" 하위="t*e" 담당자 = "스파이"
인쇄 ${foo//${~sub}/$rep}
인쇄 ${(S)foo//${~sub}/$rep}
여기서 `~'라는 텍스트가 있는지 확인합니다. $sub 패턴이 아닌 패턴으로 취급됩니다.
일반 문자열. 첫 번째 경우에 대해 가장 긴 일치 항목은 다음과 같습니다. t*e 대체되고
결과는 `스파이 별', 두 번째 경우에는 가장 짧은 일치 항목이 선택되고
결과는 `스파이 스파이 리스피 별'.
${#투기}
If 투기 위의 대체 중 하나입니다. 문자의 길이를 대체하십시오.
결과 자체보다는 결과. 만약에 투기 배열 표현식입니다.
결과의 요소 수를 대체합니다. 이는 다음과 같은 부작용이 있습니다.
인용된 형식에서도 조인을 건너뛰므로 다른 하위 표현식에 영향을 줄 수 있습니다.
투기. `^', `=', 그리고 `~아래의 '는 `의 왼쪽에 나타나야 합니다.#' 언제
이러한 형태가 결합되어 있습니다.
옵션 POSIX_식별자 설정되어 있지 않으며, 투기 간단한 이름이라면
중괄호는 선택 사항입니다. 이는 특수 매개변수의 경우에도 마찬가지입니다. 예를 들어 $#- 그리고 $#*
끈의 길이를 잡아라 $- 그리고 배열 $* 각기. 만약에
POSIX_식별자 설정되면 중괄호가 필요합니다. # 이것으로 치료를 받다
유행.
${^투기}
켜기 RC_EXPAND_PARAM 평가를 위한 옵션 투기; 만약 `^'는
두 배로 늘어났으니 꺼주세요. 이 옵션을 설정하면 다음 형식의 배열 확장이 수행됩니다.
푸${xx}바, 여기서 매개변수는 xx 가 (a b c), 로 대체됩니다.
`푸아바 푸바 푸크바' 대신 기본 `푸아 b 시바'. 비어 있음에 유의하세요.
따라서 배열로 인해 모든 인수가 제거됩니다.
내부적으로 이러한 각 확장은 중괄호에 해당하는 목록으로 변환됩니다.
확장. 예: ${^var} 된다 {$var[1],$var[2],...}, 다음과 같이 처리됩니다.
아래 '보조기 확장' 섹션에 설명되어 있습니다. 단어 분할도 포함된 경우
효과를 $var[N] 자체적으로 다른 목록 요소로 분할될 수 있습니다.
${=투기}
다음 규칙을 사용하여 단어 분할을 수행합니다. SH_WORD_SPLIT 평가하는 동안
투기, 그러나 매개변수가 큰따옴표로 표시되는지 여부와는 관계가 없습니다. 만약 `='
두 배로 늘어나면 꺼주세요. 이렇게 하면 매개변수 확장이 다음과 같이 분할됩니다.
대체하기 전에 별도의 단어를 사용하여 IFS 구분 기호로. 이는 다음에 의해 수행됩니다.
대부분의 다른 쉘에서는 기본값입니다.
분할이 적용됩니다. 워드 과제 형식으로는 투기 전에 전에,
할당 name 수행됩니다. 이는 다음을 사용한 배열 할당 결과에 영향을 미칩니다.
전에, A 깃발.
${~투기}
켜기 GLOB_SUBST 평가를 위한 옵션 투기; 만약 `~'가 XNUMX배가 되었고,
꺼 줘. 이 옵션을 설정하면 확장으로 인한 문자열이
파일 이름과 같이 가능한 모든 곳에서 패턴으로 해석됩니다.
확장 및 파일 이름 생성과 오른쪽과 같은 패턴 일치 컨텍스트
`의 측면=' 및 `!=' 조건의 연산자입니다.
중첩된 대체에서는 ~ 의 결과에 적용됩니다.
현재 대체 수준. 결과에 대한 주변 패턴 작업은 다음과 같습니다.
취소하세요. 따라서 예를 들어 매개변수가 푸 가 *, ${~푸//\*/*.c}
패턴으로 대체됩니다 *.씨, 파일 이름 생성으로 확장될 수 있습니다.
비자 면제 프로그램에 해당하는 국가의 시민권을 가지고 있지만 ${${~푸}//\*/*.c} 문자열로 대체 *.씨, 이는 더 이상 발생하지 않습니다.
퍼지는.
경우 ${...} 유형 매개변수 표현식 또는 $(...) type 명령 대체가 사용됩니다.
대신 name 위에서는 먼저 확장되고 결과는 마치 값인 것처럼 사용됩니다.
of name. 따라서 중첩된 작업을 수행하는 것이 가능합니다: ${${foo#head}%꼬리}
의 값을 대체합니다. $foo 둘 다 `머리' 및 `꼬리' 삭제했습니다. 다음과 같은 형태 $(...)
다음에 설명된 플래그와 함께 사용하면 유용한 경우가 많습니다. 아래 예를 참조하세요.
각각의 name 또는 중첩 ${...} 매개변수 확장에서는 뒤에 첨자가 올 수도 있습니다.
에 설명된 표현 배열 파라미터 in zshparam(1).
중첩된 표현식 주위에 큰따옴표가 나타날 수 있습니다. 이 경우 해당 부분만 나타납니다.
내부는 인용된 것으로 처리됩니다. 예를 들어, ${(f)"$(foo)"} 결과를 인용 $(푸)하지만,
깃발`(F)'(아래 참조)는 인용되지 않은 확장 규칙을 사용하여 적용됩니다. 메모
또한 이 맥락에는 인용문 자체가 중첩되어 있습니다. 예를 들어
"${(@f)"$(foo)"}", 두 개의 따옴표 세트가 있습니다. 하나는 전체 표현식을 둘러싸고 있습니다.
주변의 다른 (중복) $(푸) 이전과.
매개 변수 확장 깃발
여는 중괄호 바로 뒤에 여는 괄호가 오는 경우,
일치하는 닫는 괄호는 플래그 목록으로 사용됩니다. 반복되는 경우
플래그는 의미가 있으므로 반복이 연속적일 필요는 없습니다. 예를 들어 `(q%q%q)' 수단
더 읽기 쉬운 `(%%qqq)'. 다음 플래그가 지원됩니다:
# 결과 단어를 숫자 표현식으로 평가하고 문자를 출력합니다.
결과 정수에 해당합니다. 이 형식은 완전히 별개입니다.
의 사용에서 # 괄호 없이.
경우 멀티바이트 옵션이 설정되어 있고 숫자가 127보다 큽니다(즉,
ASCII 문자)는 유니코드 문자로 처리됩니다.
% 모두 확대 % 프롬프트에서와 같은 방식으로 결과 단어에서 이스케이프됩니다(참조
프롬프트 시퀀스의 확장 zshmisc(1)). 이 플래그가 두 번 제공되면 전체
설정에 따라 결과 단어에 대한 신속한 확장이 수행됩니다.
PROMPT_PERCENT, PROMPT_SUBST 그리고 PROMPT_BANG 옵션을 제공합니다.
@ 큰따옴표로 묶인 배열 요소는 별도의 단어로 표시됩니다. 예를 들어 `"${(@)foo}"'
는 `에 해당합니다."${foo[@]}"' 및 `"${(@)foo[1,2]}"'는 `와 같다."$foo[1]"
"$foo[2]"'. 이는 다음과 구별됩니다. 들 파편 로 f, s or z 플래그, 이는
여전히 각 배열 요소 내에 적용됩니다.
A `를 사용하여 배열 매개변수를 생성합니다.${...=...}', `${...:=...}' 또는 `${...::=...}'. 만약에
이 플래그는 반복됩니다(``AA'), 연관 배열 매개변수를 생성합니다.
정렬이나 패딩 전에 할당이 이루어집니다. 필드 분할이 활성화된 경우
워드 부분은 할당 전에 분할됩니다. 그만큼 name 부분은 다음에 대한 첨자 범위일 수 있습니다.
일반 배열; 그만큼 워드 부품 절대로 필요한 것 예를 들어 다음을 사용하여 배열로 변환됩니다.
`${(AA)=name=...}' 연관 배열을 생성할 때 필드 분할을 활성화합니다.
a 배열 인덱스 순서로 정렬합니다. `와 결합하면O' 역방향 배열 인덱스로 정렬
주문하다. `a따라서 '는 기본값과 동일하지만 `Oa'에 유용합니다.
배열의 요소를 역순으로 가져옵니다.
b 패턴 일치에 특별한 문자만 백슬래시로 인용하세요. 이것
변수의 내용을 다음을 사용하여 테스트할 때 유용합니다. GLOB_SUBST,
를 포함한 ${~...} 스위치.
다음 중 하나를 사용하여 인용 q 플래그 계열은 이 목적으로 작동하지 않습니다.
패턴이 아닌 문자에서는 따옴표가 제거되지 않습니다. GLOB_SUBST. 다른 말로,
패턴=${(q)str}
[[ $ str = ${~패턴} ]]
작동하는 경우 $ str 는 `a * b'이지만 `인 경우에는 그렇지 않습니다.a b', 반면
패턴=${(b)str}
[[ $ str = ${~패턴} ]]
가능한 모든 값에 대해 항상 참입니다. $ str.
c 와 ${#name}, 요소가 배열에 있는 것처럼 배열의 총 문자 수를 계산합니다.
사이에 공백을 넣어 연결했습니다. 이는 배열의 실제 조인이 아닙니다.
따라서 이 플래그와 함께 사용되는 다른 표현은 요소에 영향을 미칠 수 있습니다.
계산되기 전에 배열합니다.
C 결과 단어를 대문자로 표시하십시오. 이 경우 '단어'는 다음의 순서를 의미합니다.
영숫자가 아닌 문자로 구분된 영숫자 문자, 지원 그 결과로 나오는 말에
필드 분할에서.
D 문자열이나 배열 요소에 디렉터리가 포함되어 있다고 가정하고 대체를 시도합니다.
이름으로 이들의 주요 부분. 경로의 나머지 부분(경우에 따라 전체
앞부분은 대체되지 않음)을 인용하여 전체 문자열을 읽을 수 있도록 합니다.
쉘 인수로 사용됩니다. 이는 `의 반대이다.~' 대체: 참조
아래의 FILENAME EXPANSION 섹션을 참조하세요.
e 수행 매개 변수 확장, 명령 치환 그리고 산수 확장 를 시청하여 이에 대해 더 많은 정보를 얻을 수 있습니다.
결과. 이러한 확장은 중첩될 수 있지만 너무 깊은 재귀는 예측할 수 없는 결과를 초래할 수 있습니다.
효과.
f 개행 문자에서 확장 결과를 분할합니다. 이것은 `의 약어입니다.추신:\n:'.
F 개행 문자를 구분 기호로 사용하여 배열의 단어를 결합합니다. 이것은
`의 줄임말pj:\n:'.
g:선택하지 않는:
옵션이 지정되지 않은 경우 echo 내장과 같은 이스케이프 시퀀스를 처리합니다(g::).
와 더불어 o 옵션, XNUMX진수 이스케이프는 앞에 XNUMX을 사용하지 않습니다. 와 더불어 c 선택권,
`와 같은 시퀀스^X'도 처리됩니다. 와 더불어 e 옵션, 프로세스`\산'
print 내장과 유사한 시퀀스. 두 가지 모두 o 그리고 e 옵션
이 모드들 중 어느 것도 `가 아니라는 점을 제외하면 print 내장처럼 동작합니다.\c'
해석.
i 대소문자를 구분하지 않고 정렬합니다. `와 결합될 수 있음n' 또는 `O'.
k If name 연관 배열을 참조하며, 키 (요소 이름) 오히려
요소의 가치보다 첨자(일반 배열 포함)와 함께 사용됩니다.
아래 첨자 형식이 다음을 참조하는 경우에도 인덱스나 키를 강제로 대체합니다.
가치. 그러나 이 플래그는 아래 첨자 범위와 결합될 수 없습니다.
L 결과의 모든 문자를 소문자로 변환합니다.
n 십진 정수를 숫자로 정렬합니다. 두 테스트의 처음으로 다른 문자가 있는 경우
문자열은 숫자가 아니며 정렬은 어휘입니다. 초기 XNUMX이 더 많은 정수는 다음과 같습니다.
더 적거나 전혀 없는 항목보다 먼저 정렬됩니다. 따라서 배열 `푸1 푸02 푸2 푸3
푸20 푸23'가 표시된 순서대로 정렬됩니다. `와 결합될 수 있음i' 또는 `O'.
o 결과 단어를 오름차순으로 정렬합니다. 이것이 자체적으로 나타나는 경우 정렬
어휘적이고 대소문자를 구분합니다(로케일에서 대소문자를 구분하지 않는 한).
오름차순 정렬은 다른 정렬 형식의 기본값이므로 다음과 같습니다.
`와 결합되면 무시됩니다.a', `i' 또는 `n'.
O 결과 단어를 내림차순으로 정렬합니다. `O' 없이 `a', `i' 또는 `n' 정렬
역방향 어휘 순서. `와 결합될 수 있음a', `i' 또는 `n' 순서를 거꾸로 하려면
정렬의.
P 이렇게 하면 매개변수 값이 강제로 적용됩니다. name 추가로 해석하면 된다
해당 값이 적절한 경우 사용되는 매개변수 이름입니다. 플래그가 설정되어 있음을 참고하세요.
중 하나와 조판 명령군(특히 경우 변환)은 다음과 같습니다.
값에는 적용되지 않습니다. name 이런 식으로 사용됩니다.
중첩된 매개변수 또는 명령 대체와 함께 사용하면 그 결과는 다음과 같습니다.
같은 방식으로 매개변수 이름으로 사용됩니다. 예를 들어 `푸=바'
`바=바즈', 문자열 ${(P)푸}, ${(P)${foo}}및 ${(P)$(에코 술집)} 될거야
`로 확장바즈'.
q 결과 단어에서 쉘에 특별한 문자를 인용하십시오.
백슬래시; 인쇄할 수 없거나 잘못된 문자는 다음을 사용하여 인용됩니다. $'Nnn' 형태,
각 옥텟에 대해 별도의 따옴표를 사용합니다.
이 플래그가 두 번 제공되면 결과 단어는 작은따옴표로 묶이고,
세 번 주어지며, 단어는 큰따옴표로 묶입니다. 이러한 형태로는 아니오
인쇄할 수 없거나 유효하지 않은 문자에 대한 특수 처리가 시도됩니다. 플래그가 다음과 같은 경우
네 번 주어지면 단어는 작은 따옴표로 묶이고 그 앞에는 $. 그 주
이 세 가지 형식 모두에서 인용은 무조건 수행됩니다.
결과 문자열이 쉘에서 해석되는 방식을 변경하십시오.
경우 q- 주어진다(단 하나의 q 나타날 수 있음), 작은따옴표의 최소한의 형태는 다음과 같습니다.
특수 문자를 보호하기 위해 필요한 경우에만 문자열을 인용하는 데 사용됩니다.
일반적으로 이 형식은 가장 읽기 쉬운 출력을 제공합니다.
Q 결과 단어에서 한 수준의 따옴표를 제거합니다.
t 매개변수 값이 있는 매개변수 유형을 설명하는 문자열을 사용합니다.
일반적으로 나타날 것입니다. 이 문자열은 하이픈(`)으로 구분된 키워드로 구성됩니다.-').
문자열의 첫 번째 키워드는 기본 유형을 설명하며 `스칼라',
`정렬', `정수', `뜨다' 또는 `협회'. 다른 키워드는 유형을 설명합니다.
더 자세하게:
지방의 로컬 매개변수의 경우
왼쪽 (left) 왼쪽 정렬 매개변수의 경우
right_blanks
선행 공백이 있는 오른쪽 정렬 매개변수의 경우
right_zeros
앞에 XNUMX이 있는 오른쪽 정렬 매개변수의 경우
절감 값이 모두 소문자로 변환되는 매개변수의 경우
확대하는
상단 값이 모두 대문자로 변환되는 매개변수의 경우
확대하는
읽기 전용
읽기 전용 매개변수의 경우
태그 태그가 지정된 매개변수의 경우
수출 내보낸 매개변수의 경우
유일한 중복된 값의 첫 번째 발생만 유지하는 배열의 경우
숨기기 'hide' 플래그가 있는 매개변수의 경우
은신처
`hideval' 플래그가 있는 매개변수의 경우
특별한
쉘에 의해 정의된 특수 매개변수의 경우
u 각 고유 단어의 첫 번째 항목만 확장합니다.
U 결과의 모든 문자를 대문자로 변환합니다.
v 와 함께 사용 k, 키와 값을 모두 (두 개의 연속 단어로) 대체하십시오.
각 연관 배열 요소. 아래 첨자와 함께 사용하면 값을 강제로
아래 첨자 형식이 인덱스나 키를 참조하는 경우에도 대체됩니다.
V 결과 단어에 특수 문자가 표시되도록 합니다.
w 와 ${#name}, 배열이나 문자열의 단어 수를 셉니다. 그만큼 s 플래그를 사용하여
단어 구분 기호.
W 유사하게 w 반복되는 구분 기호 사이의 빈 단어는
또한 계산되었습니다.
X 이 플래그를 사용하면 구문 분석 오류가 발생합니다. Q, e 그리고 # 깃발이나 패턴
`와 같은 형식 일치${name#무늬}' 등이 보고됐다. 플래그가 없으면 오류
조용히 무시됩니다.
z 확장 결과를 쉘 구문 분석을 사용하여 단어로 분할하여 단어를 찾고,
즉, 값의 인용을 고려합니다. 댓글은 처리되지 않습니다
특별히 일반 문자열로, 대화형 쉘과 유사합니다.
INTERACTIVE_COMMENTS 옵션이 설정되지 않았습니다(단, Z 아래에 관련 플래그를 지정하세요.
옵션)
이 작업은 매우 늦게 수행됩니다. `(들)' 깃발. 그래서 접근하려면
결과의 단일 단어는 `와 같이 중첩된 확장을 사용합니다.${${(z)foo}[2]}'. 비슷하게,
결과 단어에서 따옴표를 제거하려면 `를 사용하세요.${(Q)${(z)푸}}'.
0 널 바이트에서 확장 결과를 분할합니다. 이것은 `의 약어입니다.추신:\0:'.
다음 플래그(제외 p) 뒤에는 표시된 대로 하나 이상의 인수가 옵니다. 어느
문자 또는 일치하는 쌍 `(...)', `{...}', `[...]' 또는 `<...>'에서 사용할 수 있습니다.
콜론을 구분 기호로 사용하지만 플래그가 둘 이상의 인수를 취하는 경우
일치하는 구분 기호 쌍은 각 인수를 둘러싸야 합니다.
p 다음과 같은 이스케이프 시퀀스를 인식합니다. 인쇄 문자열 인수에 내장되어 있습니다.
이 인수 뒤에 오는 아래에 설명된 플래그 중 하나입니다.
또는 이 옵션을 사용하면 문자열 인수가 다음 형식일 수 있습니다. $였다 하는
변수의 값이 대체되는 경우. 이 양식은 엄격합니다. 그만큼
문자열 인수는 일반 매개변수 확장을 거치지 않습니다.
예를 들어,
XNUMX월=:
발=a:b:c
인쇄 ${(ps.$sep.)val}
변수를 :.
~ 아래 플래그 중 하나에 의해 확장에 삽입된 문자열은 다음과 같이 처리됩니다.
패턴. 이는 다음에 나오는 플래그의 문자열 인수에 적용됩니다. ~ 이내
동일한 괄호 세트. 비교 ~ 외부 괄호는
전체 대체 문자열을 패턴으로 처리합니다. 따라서 예를 들어,
[[ "?" = ${(~j.|.)배열} ]]
취급하다`|'를 패턴으로 사용하고 다음과 같은 경우에만 성공합니다. $배열 ` 문자열을 포함합니다.?'
요소로. 그만큼 ~ 동작을 전환하기 위해 반복될 수 있습니다. 그 효과만
괄호 안의 그룹 끝까지 지속됩니다.
j:현:
다음을 사용하여 배열의 단어를 함께 결합하십시오. 현 구분자로. 참고하세요
필드 분할 전에 발생합니다. s:현: 깃발이나 SH_WORD_SPLIT 옵션을 선택합니다.
l:특급::string1::string2:
결과 단어를 왼쪽에 채웁니다. 필요한 경우 각 단어가 잘립니다.
필드에 배치 특급 문자가 넓습니다.
인수 :string1: 그리고 :string2: 선택 사항입니다. 둘 다, 첫 번째 또는 둘 다
주어진. 각 구분 기호에는 동일한 구분 기호 쌍을 사용해야 합니다.
세 가지 주장. 왼쪽 공간은 다음과 같이 채워집니다. string1 (연결됨
필요한 만큼 자주) 또는 공백인 경우 string1 주어지지 않습니다. 둘 다라면 string1 그리고 string2
주어진다, string2 각 단어의 왼쪽에 직접 한 번 삽입되며 다음과 같은 경우 잘립니다.
필요한, 전에 string1 남은 패딩을 생산하는 데 사용됩니다.
다음 중 하나인 경우 string1 or string2 존재하지만 비어 있습니다. 즉, 구분 기호가 두 개 있습니다.
그 시점에서 함께, $IFS 대신 사용됩니다.
경우 멀티바이트 옵션이 적용되면 플래그가 m 주어질 수도 있는데, 이 경우
너비는 패딩 계산에 사용됩니다. 그렇지 않으면 개별 멀티바이트
문자는 너비의 한 단위를 차지하는 것으로 처리됩니다.
경우 멀티바이트 옵션이 적용되지 않으면 문자열의 각 바이트는 다음과 같이 처리됩니다.
너비의 한 단위를 차지합니다.
제어 문자는 항상 XNUMX단위 너비로 간주됩니다. 이는 다음을 허용합니다.
제어 문자의 반복을 생성하는 데 사용되는 메커니즘입니다.
m 플래그 중 하나와 함께 사용하는 경우에만 유용합니다. l or r 또는 # 길이 연산자
시 멀티바이트 옵션이 적용됩니다. 보고된 문자 너비를 사용합니다.
문자열이 차지하는 양이나 전체 길이를 계산하는 시스템
문자열. 대부분의 인쇄 가능한 문자의 너비는 XNUMX단위입니다.
아시아 문자 세트와 특정 특수 효과에서는 더 넓은 문자를 사용합니다. 결합
문자의 너비가 XNUMX입니다. 인쇄할 수 없는 문자는 임의로 다음과 같이 계산됩니다.
너비가 XNUMX입니다. 실제로 표시되는 방식은 다양합니다.
경우 m 반복되면 문자는 XNUMX으로 계산됩니다(너비가 XNUMX인 경우). 그렇지 않으면
하나. 인쇄 가능한 문자열의 경우 이는 문자 수를 계산하는 효과가 있습니다.
글리프(눈에 띄게 구분된 문자), 결합하는 경우 제외
문자 자체의 너비는 XNUMX이 아닙니다(특정 알파벳의 경우 해당).
r:특급::string1::string2:
As l, 하지만 오른쪽에 있는 단어를 채우고 삽입하세요. string2 바로 오른쪽에
패딩할 문자열입니다.
왼쪽 및 오른쪽 패딩을 함께 사용할 수 있습니다. 이 경우 전략을 적용하는 것이 좋습니다.
각 결과 단어의 첫 번째 절반 너비까지 왼쪽 패딩, 오른쪽
후반까지 패딩. 패딩할 문자열의 너비가 홀수인 경우 추가
왼쪽에 패딩이 적용되었습니다.
s:현:
구분선에서 강제 필드 분할 현. 참고 현 둘 이상의
문자는 모두 순서대로 일치해야 함을 의미합니다. 이것은 와 다르다
두 개 이상의 문자를 처리하는 방법 IFS 매개변수. 또한 참조하십시오 = 깃발과
전에, SH_WORD_SPLIT 옵션. 빈 문자열이 주어질 수도 있습니다. 이 경우
문자는 별도의 요소가 됩니다.
역사적인 이유로 빈 배열 요소가 유지되는 일반적인 동작
분할로 생성된 배열에 대해서는 큰따옴표 안이 비활성화됩니다. 따라서
다음 :
line="하나::셋"
인쇄 -l "${(s.:.)라인}"
두 줄의 출력을 생성합니다. 한 그리고 세 빈 필드를 제거합니다. 에게
이 동작을 무시하고 `(@)' 플래그도 마찬가지입니다. 즉 "${(@s.:.)라인}".
Z:선택하지 않는:
As z 그러나 다음 쌍 사이에 옵션 문자의 조합을 사용합니다.
구분 문자. 옵션이 없으면 효과는 다음과 같습니다. z. (Z+C+) 원인
주석은 문자열로 구문 분석되어 유지됩니다. 결과 배열의 모든 필드
따옴표가 없는 주석 문자로 시작하는 것은 주석입니다. (Z+C+) 댓글을 유발하다
구문 분석하여 제거해야 합니다. 댓글 규칙은 표준입니다.
의 세 번째 문자로 시작하는 단어 $HISTCHARS, 기본 #, 다음까지
개행 문자는 주석입니다. (지+n+) 인용되지 않은 개행 문자는 일반 문자로 처리됩니다.
공백, 그렇지 않으면 쉘 코드 구분 기호인 것처럼 처리됩니다.
세미콜론으로 변환되었습니다. 옵션은 동일한 구분 기호 집합 내에서 결합됩니다.
예 (Z+Cn+).
_:플래그:
밑줄(_) 플래그는 향후 사용을 위해 예약되어 있습니다. 이번 zsh 개정판부터
유효한 것이 없습니다 플래그; 빈 문자를 제외하고 밑줄 뒤에 오는 모든 항목
구분 기호 쌍은 오류로 처리되며 플래그 자체는 아무런 효과가 없습니다.
다음 플래그는 다음과 같은 의미가 있습니다. ${...#...} or ${...%...} 형태. 그만큼 S 그리고 I
플래그는 다음과 함께 사용될 수도 있습니다. ${.../...} 형태.
S 부분 문자열은 물론 시작이나 끝도 검색합니다. ~와 함께 # 처음부터 시작하다
와 함께 % 문자열의 끝부터 시작합니다. 다음을 통한 대체 ${.../...} or
${...//...}, 탐욕스럽지 않은 일치를 지정합니다. 즉,
가장 긴 일치 항목을 교체해야 합니다.
I:특급:
검색 특급번째 경기(어디서 특급 숫자로 평가됩니다). 이는 다음 경우에만 적용됩니다.
다음 중 하나를 사용하여 하위 문자열을 검색합니다. S 깃발, 또는 ${.../...} (오직
특급해당 경기가 대체됨) 또는 ${...//...} (모든 일치 항목은 특급에 있습니다
대체). 기본값은 첫 번째 일치 항목을 가져오는 것입니다.
The 특급두 번째 일치 항목은 각 항목에서 하나 또는 XNUMX개의 일치 항목이 있도록 계산됩니다.
전역 대체 일치의 경우에도 문자열의 시작 위치
겹치는 이전 교체는 무시됩니다. 와 더불어 ${...%...} 그리고 ${...%%...}
형태에 따라 경기의 시작 위치는 끝에서 뒤로 이동합니다.
인덱스는 증가하지만 다른 형태에서는 처음부터 앞으로 이동합니다.
따라서 문자열로
어느 스위치 is 전에, 연락해주세요 스위치 을 통한 입스위치?
형식의 대체 ${(예:N:)문자열#w*ch} as N 1에서 증가하면 일치합니다.
그리고 `를 제거하세요.어느', `마녀', `마녀' 및 `느릅 나무'; `를 사용하는 형식##'가 일치하고
제거 `어느 스위치 is 전에, 연락해주세요 스위치 을 통한 입스 위치', `마녀 is 전에, 연락해주세요 스위치
을 통한 입스 위치', `마녀 을 통한 입스 위치' 및 `느릅 나무'. `를 사용하는 형식%'를 제거합니다.
`와 동일한 일치#'이지만 역순이며 `를 사용하는 형식입니다.%%'를 제거합니다
`와 동일하게 일치합니다.##' 역순으로요.
B 결과에 경기 시작 인덱스를 포함합니다.
E 결과에 경기 종료 인덱스를 포함합니다.
M 일치하는 부분을 결과에 포함합니다.
N 결과에 경기 시간을 포함합니다.
R 결과에 일치하지 않는 부분을 포함합니다( R동부 표준시).
규칙
다음은 대체 규칙을 요약한 것입니다. 이는 중괄호가 있다고 가정합니다.
대체 주위, 즉 ${...}. 몇 가지 특별한 예가 아래에 나와 있습니다. 메모
Zsh 개발 그룹이 수락하는 것 아니 책임 발생할 수 있는 뇌 손상에 대해
다음 규칙을 읽는 동안 발생합니다.
1. 중첩 치환
여러개 중첩된 경우 ${...} 형태가 존재하는 경우 대체는 다음에서 수행됩니다.
안쪽에서 바깥쪽으로. 각 수준에서 대체는 다음 여부를 고려합니다.
현재 값은 전체 대체가 double인지 여부에 관계없이 스칼라 또는 배열입니다.
따옴표와 현재 대체 수준에 어떤 플래그가 제공되는지,
중첩된 대체가 가장 바깥쪽인 경우. 플래그는 다음까지 전파되지 않습니다.
대체물 포함; 중첩된 대체는 스칼라 또는
플래그에 의해 결정된 배열로, 인용을 위해 조정될 수 있습니다. 다음의 모든 것
모든 대체 수준에서 적용 가능한 단계가 수행됩니다. 그렇지 않은 한
`(P)' 플래그가 있으면 플래그와 아래 첨자가 값에 직접 적용됩니다.
중첩된 대체의; 예를 들어, 확장 ${${푸}} 정확하게 행동한다
같은 ${foo}.
각 중첩된 대체 수준에서 대체 단어는 모든 형태의
명령을 포함한 단일 단어 대체(즉, 파일 이름 생성이 아님)
대체, 산술 확장 및 파일 이름 확장(예: 선행 ~ 그리고 =).
따라서 예를 들어, ${${:-=고양이}:h} 해당 디렉토리로 확장됩니다. 방법 프로그램
거주합니다. (설명: 내부 대체에는 매개변수가 없지만 기본값이 있습니다.
가치 =고양이, 파일 이름 확장을 통해 전체 경로로 확장됩니다. 외부
대체하면 수정자가 적용됩니다. :h 그리고
길.)
2. 내부의 매개 변수 플래그
다음 중 하나에 의해 설정된 매개변수 플래그 조판 명령군, 특히
L, R, Z, u 그리고 l 패딩 및 대문자 표시에 대한 플래그는
매개변수 값. 이러한 플래그는 명령에 대한 옵션입니다. `조판 -Z';
이는 매개변수 대체 내에서 사용되는 플래그와 동일하지 않습니다.
3. 매개 변수 첨자
값이 다음과 같이 아래 첨자가 있는 원시 매개변수 참조인 경우 ${였다[삼]}Walk Through California 프로그램,
첨자의 효과는 매개변수에 직접 적용됩니다. 아래첨자는
왼쪽에서 오른쪽으로 평가됩니다. 후속 첨자는 스칼라 또는 배열 값에 적용됩니다.
이전 첨자에 의해 산출되었습니다. 따라서 만약 였다 배열입니다. ${var[1][2]} 이다
첫 번째 단어의 두 번째 문자이지만 ${var[2,4][2]} 세 번째 단어 전체입니다
(원래 배열의 2~4 단어 범위 중 두 번째 단어)
아래첨자는 원하는 수만큼 나타날 수 있습니다. 다음과 같은 플래그 (케이) 그리고 (V) 이는
구독 결과가 적용됩니다.
4. 매개 변수 name 바꿔 놓음
어떤 효과 (P) 플래그는 지금까지의 값을 매개변수 이름으로 처리하고
해당 값으로 대체하여 적용됩니다.
5. 큰따옴표 가입
이 과정 이후의 값이 배열이고 대체가 이중으로 나타나는 경우
따옴표도 아니고 (@) 깃발도 아니고 # 길이 연산자가 현재 존재합니다.
수준이면 값의 단어가 매개변수의 첫 번째 문자와 결합됩니다.
$IFS, 기본적으로 각 단어 사이에는 공백이 있습니다(단일 단어 배열은 수정되지 않음).
경우 (J) 대신 조인에 사용되는 플래그가 있습니다. $IFS.
6. 중첩 첨자
나머지 첨자(즉, 중첩된 대체)는 여기에서 평가됩니다.
값이 배열인지 스칼라인지에 따라 결정됩니다. 와 같은 3., 여러
아래 첨자가 나타날 수 있습니다. 참고하세요 ${foo[2,4][2]} 따라서 다음과 같습니다
${${foo[2,4]}[2]} 또한 "${${(@)foo[2,4]}[2]}" (중첩된 대체
두 경우 모두 배열을 반환하지만) "${${foo[2,4]}[2]}" (중첩된
대체는 따옴표로 인해 스칼라를 반환합니다.
7. 수정 자
후행 `으로 지정된 모든 수정자#', `%', `/'(아마도 두 배) 또는
양식의 수정자 세트 : ... (섹션의 '수정자' 섹션을 참조하세요.
'History Expansion')은 이 수준의 값의 단어에 적용됩니다.
8. 캐릭터 평가
모든 품종 (#) 플래그가 적용되어 지금까지의 결과를 숫자로 문자로 평가합니다.
9. 길이
모든 이니셜 # 수정자, 즉 형식 ${#였다}는 길이를 평가하는 데 사용됩니다.
지금까지의 표현입니다.
10. 강요된 가입
만약 `(J)' 플래그가 있거나 없습니다 `(J)' 플래그가 있지만 문자열이 있어야 합니다.
규칙에 따라 분할 11., 단계에서 조인이 이루어지지 않았습니다. 5., 다음의 모든 단어
값은 주어진 문자열이나 첫 번째 문자를 사용하여 결합됩니다. $IFS
만약 없다면. `(F)' 플래그는 여기에 결합하기 위한 문자열을 암시적으로 제공합니다.
방법.
11. 단순, 간단, 편리 워드 파편
` 중 하나인 경우(들)' 또는 `(F)' 플래그가 있거나 `=' 지정자가 존재했습니다.
(예 : ${=였다}), 지정된 문자열이 나타날 때 단어가 분할됩니다. =
두 플래그 중 어느 것도 존재하지 않음) $IFS.
그렇지 않다면 `(들)', `(F)' 또는 `='가 주어졌으나 해당 단어가 인용되지 않았으며 옵션이
SH_WORD_SPLIT 설정되면 단어는 다음 문자가 나타날 때 분할됩니다.
$IFS. 이 단계 역시 중첩된 대체의 모든 수준에서 발생합니다.
12. 케이스 수정
플래그 중 하나의 대소문자 수정 (엘), (또는) or (C) 적용됩니다.
13. 탈출 순서 바꿔 놓음
먼저 (g) 플래그가 수행된 다음 프롬프트 스타일
형식 지정 (%) 플래그 계열이 적용됩니다.
14. 견적 신청
다음을 사용하여 인용 또는 인용 해제 (큐) 그리고 (큐) 관련 플래그가 적용됩니다.
15. 명부 담당 명명
다음을 사용하는 모든 디렉터리 이름 대체 (D) 플래그가 적용됩니다.
16. 시정 상승
다음을 사용하여 문자를 표시하도록 수정합니다. (V) 플래그가 적용됩니다.
17. 어휘 워드 파편
만약 '(지)' 플래그 또는 '의 형식 중 하나(지)' 플래그가 존재하며 단어는 다음과 같습니다.
마치 쉘 명령줄처럼 분할되어 인용 부호와 기타
메타 문자는 단어를 구성하는 요소를 결정하는 데 사용됩니다. 이런 형태를 참고하세요
분할은 규칙에 설명된 분할과 완전히 다릅니다. 11.: 사용하지 않습니다
$IFS, 강제 조인을 발생시키지 않습니다.
18. 고유성
결과가 배열이고 `(유)' 플래그가 존재했지만 중복된 요소가 있습니다.
배열에서 제거되었습니다.
19. 주문
결과가 여전히 배열이고 `(영형)' 또는 `(또는)' 플래그가 있었고,
배열이 재정렬됩니다.
20. RC_EXPAND_PARAM
이 시점에서 결과 배열 요소가 포함될지 여부가 결정됩니다.
다음 중 하나에 의해 주어진 대로 요소를 주변 텍스트와 요소별로 결합했습니다.
RC_EXPAND_PARAM 옵션 또는 `^' 깃발.
21. 재평가
어떤`(E)' 플래그가 값에 적용되어 새 항목에 대해 강제로 다시 검사됩니다.
매개변수 대체뿐 아니라 명령 및 산술 대체도 가능합니다.
22. 패딩
`에 의한 값의 패딩(엘.채우기.)' 또는 `(아르 자형.채우기.)' 플래그가 적용되었습니다.
23. 시맨틱 가입
확장 의미론이 결과를 얻기 위해 단일 단어를 요구하는 상황에서는 모든 단어가
의 첫 번째 문자와 다시 결합됩니다. IFS 사이. 그래서`에${(P)${(f)라인}}'
의 값 ${라인} 줄 바꿈에서 분할되지만 그 전에 다시 결합해야 합니다.
전에, P 플래그를 적용할 수 있습니다.
단일 단어가 필요하지 않은 경우 이 규칙을 건너뜁니다.
24. 빈 논의 제거
대체 항목이 큰따옴표로 표시되지 않으면 결과적으로 길이가 0이 됩니다.
스칼라 또는 배열 요소의 인수가 목록에서 제거됩니다.
명령줄에 삽입된 인수입니다.
엄밀히 말하면 다른 양식에서도 마찬가지이므로 제거는 나중에 발생합니다.
대체; 여기서 주목해야 할 점은 단순히 다음 중 하나 이후에 발생한다는 것입니다.
위의 매개변수 작업.
예
깃발 f 큰따옴표로 묶인 대체를 한 줄씩 분할하는 데 유용합니다. 예를 들어,
${(f)"$(파일)"} 의 내용을 대체합니다. 파일 각 줄이 요소가 되도록 분할됨
결과 배열의 이것을 효과와 비교해보세요. $(파일) 혼자서 나누는 것,
단어로 파일을 정리하거나 큰따옴표 안에 동일하게 넣어 파일의 전체 내용을 만듭니다.
단일 문자열을 제출하십시오.
다음은 중첩된 매개변수 확장에 대한 규칙을 보여줍니다. 한다고 가정 $foo
배열을 포함 (술집 바즈):
"${(@)${foo}[1]}"
이로 인해 결과가 생성됩니다. b. 첫째, 내부 대체 "${foo}", 없음
배열 (@) 플래그는 단일 단어 결과를 생성합니다. "술집 바즈". 외부 대체
"${(@)...[1]}" 이것이 스칼라임을 감지하므로 (``(@)' 플래그)
아래 첨자는 첫 번째 문자를 선택합니다.
"${${(@)foo}[1]}"
결과는 `바'. 이 경우 내부 대체 "${(@)foo}"
배열을 생성합니다 `(술집 바즈)'. 외부 대체 "${...[1]}" 그것을 감지
이것은 배열이며 첫 번째 단어를 선택합니다. 이는 단순 케이스와 유사합니다.
"${foo[1]}".
단어 분할 및 결합 규칙의 예를 들어 $foo 배열을 포함
`(ax1 bx1)'. 그 다음에
${(s/x/)푸}
`라는 단어를 생성합니다.a', `1 b' 및 `1'.
${(j/x/s/x/)푸}
`를 생산한다a', `1', `b' 및 `1'.
${(s/x/)foo%%1*}
`를 생산한다a' 및 ` b'(여분의 공간에 유의하세요). 대체가 둘 중 하나 이전에 발생하므로
결합 또는 분할 작업은 먼저 수정된 배열을 생성합니다. (도끼 bx),
주기 위해 결합된 것 "도끼 BX", 그런 다음 분할하여 `a', ` b' 그리고 `'. 그만큼
마지막 빈 문자열은 큰따옴표로 묶이지 않으므로 제거됩니다.
COMMAND 치환
`와 같이 달러 기호 앞에 괄호로 묶인 명령$(...)'로 인용하거나
`와 같은 억음 악센트`...`'는 후행이 포함된 표준 출력으로 대체됩니다.
줄 바꿈이 삭제되었습니다. 대체 항목을 큰따옴표로 묶지 않으면 출력은 다음과 같습니다.
를 사용하여 단어로 구분됩니다. IFS 매개변수. 대체`$(고양이 푸)'로 대체될 수도 있다
동등하지만 더 빠릅니다`$(푸)'. 두 경우 모두 옵션이 있으면 GLOB_SUBST 설정됩니다.
출력은 파일 이름 생성에 적합합니다.
산수 확장
` 형식의 문자열$[특급]' 또는 `$((특급))'의 값으로 대체됩니다.
산술식 특급. 특급 을 받는다 매개 변수 확장, 명령 치환
그리고 산수 확장 평가되기 전에요. '산술 평가' 섹션을 참조하세요.
중괄호 확장
` 형식의 문자열푸{xx,yy,zz}바'는 개별 단어 `로 확장됩니다.fooxbar',
`푸이바' 및 `foozzbar'. 왼쪽에서 오른쪽 순서가 유지됩니다. 이 구성은 다음과 같습니다.
중첩. 쉼표는 문자 그대로 단어에 포함시키기 위해 인용될 수 있습니다.
` 형식의 표현{n1..n2}', 어디 n1 그리고 n2 정수이며, 다음으로 확장됩니다.
사이의 수 n1 그리고 n2 포함한. 두 숫자 중 하나라도 0으로 시작하면 모든 숫자는
결과 숫자는 최소 너비까지 앞에 0이 채워집니다.
음수 - 문자도 너비에 포함됩니다. 숫자가 들어있는 경우
내림차순 결과 시퀀스도 내림차순입니다.
` 형식의 표현{n1..n2..n3}', 어디 n1, n2및 n3 정수이고 확장됩니다.
위와 같지만 매 n3에서 시작하는 번째 숫자 n1 출력됩니다. 만약에 n3 음수이다
숫자가 역순으로 출력되는데, 이는 단순히 교체하는 것과는 약간 다릅니다. n1
그리고 n2 단계의 경우 n3 범위를 균등하게 나누지 않습니다. 제로 패딩은 다음과 같습니다.
세 숫자 중 하나로 지정하면 세 번째 숫자에 지정하는 것이 유용할 수 있습니다.
예 `{-99..100..01}' 중 하나에 0을 넣어 지정할 수 없습니다.
처음 두 숫자(예: 두 문자를 채움)
` 형식의 표현{c1..c2}', 어디 c1 그리고 c2 단일 문자입니다(
멀티바이트 문자)는 다음 범위의 모든 문자로 확장됩니다. c1 에 c2 in
내부적으로 사용되는 문자 시퀀스입니다. 코드 포인트가 128 미만인 문자의 경우
이는 US ASCII입니다(대부분의 사용자에게 필요한 유일한 경우입니다). 조금이라도 개입한다면
문자는 인쇄할 수 없으며 적절한 인용문을 사용하여 인쇄 가능하게 만듭니다. 만약
문자 순서가 반대이면 출력도 반대 순서입니다. `{d..a}'는
`로 대체d c b a'.
중괄호 표현식이 위 형식 중 어느 것과도 일치하지 않으면 변경되지 않은 채로 남아 있습니다.
option BRACE_CCL (`중괄호 문자 클래스'의 약어)가 설정됩니다. 그 경우에는
중괄호 사이의 개별 문자 목록으로 확장됩니다.
ASCII 문자 집합의 문자 순서(멀티바이트 문자는 현재 지원되지 않음)
처리됨). 구문은 다음과 유사합니다. [...] 파일 이름 생성의 표현식: `-'는
문자 범위를 나타내기 위해 특별히 처리되지만 `^' 또는 `!'를 첫 번째 문자로
정상적으로 치료됩니다. 예를 들어 `{abcdef0-9}'는 16개 단어로 확장됩니다. 0 1 2 3 4 5 6 7 8 9 a
b c d e f.
중괄호 확장은 파일 이름 생성(globbing)의 일부가 아닙니다. 표현
등 */{foo,bar} 두 개의 별도 단어로 분할됩니다. */foo 그리고 */술집 파일 이름 앞에
세대가 발생합니다. 특히, 이는 '일치하지 않음'을 생성할 수 있다는 점에 유의하십시오.
오류 중 두 표현 중 일치하지 않습니다. 이는 대조적이다.
*/(foo|바), 이는 단일 패턴으로 처리되지만 그 외에는 유사한 효과를 갖습니다.
중괄호 확장과 배열 확장을 결합하려면 다음을 참조하세요. ${^투기} 에 설명된 형태
위의 매개변수 확장 섹션을 참조하세요.
파일 이름 확장
각 단어는 따옴표가 없는 `로 시작하는지 확인합니다.~'. 그렇다면 그 말은
`까지/', 또는 `가 없으면 단어의 끝/', 가능한지 확인합니다.
여기에 설명된 방법 중 하나로 대체됩니다. 그렇다면 `~' 그리고 체크된
부분은 적절한 대체 값으로 대체됩니다.
A`~' 자체가 다음 값으로 대체됩니다. $ HOME. ``~' 다음에 `+' 또는 `-'는
각각 현재 또는 이전 작업 디렉토리로 대체됩니다.
A`~' 다음에 숫자가 오면 디렉토리의 해당 위치에 있는 디렉토리로 대체됩니다.
스택. `~0'는 `~+', 그리고 `~1'는 스택의 최상위입니다. `~+' 다음에
number는 디렉터리 스택의 해당 위치에 있는 디렉터리로 대체됩니다. `~ + 0'는
`에 해당~+', 그리고 `~ + 1'는 스택의 최상위입니다. `~-' 뒤에 숫자가 옵니다
스택 맨 아래에서 많은 위치의 디렉터리로 대체됩니다. `~ -0'는
스택의 맨 아래. 그만큼 푸시HD_MINUS 옵션은 `의 효과를 교환합니다.~+' 및 `~-' 어디
그 뒤에는 숫자가 옵니다.
동적 이름 디렉토리
기능이 zsh_디렉토리_이름 존재하거나 쉘 변수
zsh_directory_name_functions 존재하고 함수 이름의 배열을 포함하는 경우
함수는 동적 디렉터리 이름 지정을 구현하는 데 사용됩니다. 기능은 다음에서 시도됩니다.
상태 0을 반환할 때까지 주문하므로 함수가
문제의 케이스를 처리하고 적절한 상태를 반환할 수 있습니다.
A`~' 다음에 문자열이 옵니다. 남스트릿 인용되지 않은 대괄호 안은 특별히 다음과 같이 처리됩니다.
동적 디렉터리 이름. 따옴표가 없는 첫 번째 닫는 대괄호는 항상
종료하다 남스트릿. 쉘 함수에는 두 개의 인수가 전달됩니다: 문자열 n (이름을 위해)
그리고 남스트릿. 배열을 설정해야 합니다. 댓글 단일 요소에
이름에 해당하는 디렉터리를 반환하고 상태 0을 반환합니다(할당을 다음과 같이 실행).
일반적으로 마지막 문으로 충분합니다. 그렇지 않으면 0이 아닌 상태를 반환해야 합니다. 이전에
응답 요소가 디렉토리로 사용되는 경우; 후자의 경우 대체는 다음과 같습니다.
실패한 것으로 간주됩니다. 모든 기능이 실패하고 옵션이 노매치 설정되었습니다. 오류가 발생했습니다.
결과.
위에 정의된 함수는 디렉토리가 디렉토리로 바뀔 수 있는지 확인하는 데에도 사용됩니다.
이름(예: 디렉터리 스택을 인쇄하거나 확장할 때) %~ 프롬프트에서. ~ 안에
이 경우 각 함수에는 두 개의 인수가 전달됩니다: 문자열 d (디렉토리의 경우) 및
동적 명명 후보. 함수는 다음과 같은 경우 0이 아닌 상태를 반환해야 합니다.
디렉토리는 함수에 의해 이름이 지정될 수 없습니다. 또는 배열 응답이 다음으로 구성되도록 설정해야 합니다.
두 가지 요소: 첫 번째는 디렉터리의 동적 이름입니다.
`~[...]'), 두 번째는 교체할 디렉터리의 접두사 길이입니다. 을 위한
예를 들어 평가판 디렉터리가 다음과 같은 경우 /홈/내 이름/src/zsh 동적 이름은
/홈/내 이름/src (16자)는 s, 그러면 기능이 설정됩니다.
답장=(들 16)
이렇게 반환된 디렉터리 이름은 다음의 일부에 대해 가능한 정적 이름과 비교됩니다.
아래에 설명된 대로 디렉터리 경로입니다. 접두사 길이가 일치하는 경우(16에서 XNUMX) 사용됩니다.
예)는 정적 이름과 일치하는 것보다 깁니다.
함수가 두 가지를 모두 구현해야 하는 것은 아닙니다. n 그리고 d 전화; 예를 들어, 그것은
이름으로 축약되지 않는 특정 동적 확장 형식에 적합할 수 있습니다.
이 경우 첫 번째 인수를 사용한 모든 호출 d 0이 아닌 상태가 되어야 합니다.
반환되었습니다.
완성 시스템은 `zsh_디렉토리_이름 c' 다음에 해당하는 호출이 이어집니다.
배열의 요소 zsh_directory_name_functions, 존재하는 경우 완료하기 위해
디렉토리의 동적 이름. 이에 대한 코드는 다른 완성 코드와 같아야 합니다.
에 설명된 기능 zshcompsys(1).
실제 예로서 다음은 다음과 같이 시작하는 동적 이름을 확장하는 함수입니다.
현 p: 아래 디렉토리로 /홈/pws/perforce. 이 간단한 경우에는
디렉토리도 마찬가지로 효과적입니다.
zsh_디렉토리_이름() {
에뮬레이트하다 -L zsh
설정 확장 글롭
지방의 -a 일치 시작하다 고치다
if [[ $1 = d ]]; 그때
# 회전 전에, 예배 규칙서 으로 a name
if [[ $2 = (#b)(/home/pws/perforce/)([^/]##)* ]]; 그때
조판 -가 댓글
답장=(p:$match[2] $(( ${#match[1]} + ${#match[2]} )) )
그렇지 않으면
return 1
fi
ELIF [[ $1 = n ]]; 그때
# 회전 전에, name 으로 a 예배 규칙서
[[ $2 != (#b)피:(?*) ]] && return 1
조판 -가 댓글
답장=(/home/pws/perforce/$match[1])
ELIF [[ $1 = c ]]; 그때
# 완전한 이름
지방의 설명하다
지방의 -a dirs
디렉토리=(/home/pws/perforce/*(/:t))
디렉토리=(p:${^dirs})
_원함 동적 디렉토리 설명하다 '동적 예배 규칙서' 컴패드 -에스\] -a dirs
return
그렇지 않으면
return 1
fi
return 0
}
정적인 이름 디렉토리
A`~' 뒤에는 아직 다루지 않은 문자와 숫자로 구성된 내용이 옵니다.
문자 또는 밑줄(`_'), 하이픈(`-') 또는 점(`.')라는 이름으로 조회됩니다.
디렉터리를 발견하면 해당 디렉터리의 값으로 대체됩니다. 명명된 디렉터리
일반적으로 시스템 사용자의 홈 디렉토리입니다. 다음과 같은 경우에도 정의될 수 있습니다.
` 뒤에 텍스트~'는 값이 `로 시작하는 문자열 쉘 매개변수의 이름입니다./'.
후행 슬래시는 디렉토리 경로에서 제거됩니다(그러나
원래 매개변수는 수정되지 않습니다).
다음을 사용하여 디렉토리 이름을 정의하는 것도 가능합니다. -d 옵션을 해시 내장.
쉘이 경로를 인쇄할 때(예: 확장할 때) %~ 프롬프트에서 또는 인쇄할 때
디렉터리 스택), 경로에 접두사로 명명된 디렉터리가 있는지 확인하기 위해 경로가 검사됩니다.
그렇다면 접두사 부분은 `~' 뒤에 이름이 붙는다.
예배 규칙서. 디렉토리를 참조하는 두 가지 방법 중 더 짧은 방법이 사용됩니다.
디렉토리 이름 또는 전체 경로 길이가 같으면 이름이 사용됩니다. 그만큼
매개 변수 $PWD 그리고 $OLDPWD 이런 방식으로 축약되지 않습니다.
`=' 확장
단어가 인용되지 않은 `로 시작하는 경우=' 그리고 같음 옵션이 설정되면 나머지는
단어는 명령의 이름으로 간주됩니다. 해당 이름의 명령이 존재하는 경우 해당 단어는 다음과 같습니다.
명령의 전체 경로 이름으로 대체됩니다.
노트
파일 이름 확장은 매개변수 할당 오른쪽에서 수행됩니다.
명령 뒤에 나타나는 것을 포함하여 조판 가족. 이 경우 권리는
손 쪽은 다음과 같은 방식으로 콜론으로 구분된 목록으로 처리됩니다. PATH 매개 변수,
그래서 `~' 또는 `=' 다음에 `:' 확장이 가능합니다. 그러한 행동은 모두
`를 인용하여 비활성화~', `=' 또는 전체 표현(그러나 단순히
콜론); 그만큼 같음 옵션도 존중됩니다.
옵션 MAGIC_EQUAL_SUBST 설정되면 다음 형식의 따옴표가 없는 쉘 인수
`식별자=표현'는 이전에 설명한 대로 파일 확장에 적합해집니다.
절. 첫 번째 ` 인용=' 역시 이를 방해한다.
파일 이름 세대
단어에 ` 문자 중 하나가 인용되지 않은 인스턴스가 포함된 경우*', `(', `|', `<', `[',
또는 `?'를 제외하고는 파일명 생성을 위한 패턴으로 간주됩니다. GLOB 옵션은
설정되지 않았습니다. 만약 EXTENDED_GLOB 옵션이 설정되면 `^' 및 `#' 문자는 또한
무늬; 그렇지 않으면 쉘에서 특별히 처리되지 않습니다.
단어는 패턴과 일치하는 정렬된 파일 이름 목록으로 대체됩니다. 그렇지 않은 경우
일치하는 패턴이 발견되면 쉘은 오류 메시지를 표시합니다. NULL_GLOB option
설정되면 해당 단어가 삭제됩니다. 또는 노매치 옵션이 설정되지 않았습니다.
이 경우 단어는 변경되지 않습니다.
파일 이름 생성 시 ` 문자/'는 명시적으로 일치해야 합니다. 또한 `.'는 반드시
패턴의 시작 부분이나 ` 뒤에 명시적으로 일치합니다./', 그렇지 않은 이상 GLOB_DOTS
옵션이 설정되었습니다. 파일 이름 생성 패턴이 파일과 일치하지 않습니다 `.' 또는 `..'. 다른 곳에서는
패턴 일치의 예, `/' 및 `.'는 특별히 취급되지 않습니다.
글롭 연산자
* null 문자열을 포함하여 모든 문자열과 일치합니다.
? 모든 문자와 일치합니다.
[...] 포함된 모든 문자와 일치합니다. 문자 범위는 다음과 같이 지정할 수 있습니다.
`로 두 문자를 구분합니다.-'. ``-' 또는 `]'는 다음과 같이 포함하여 일치할 수 있습니다.
목록의 첫 번째 문자입니다. 또한 여러 가지 명명된 클래스가 있습니다.
` 형식의 문자[:name:]'는 다음과 같은 의미를 갖습니다. 첫 번째 세트 사용
주어진 문자를 테스트하기 위해 운영 체제에서 제공하는 매크로
현지 언어 설정으로 인한 수정 사항을 포함한 조합은 다음을 참조하세요.
CTYPE(3) :
[:앨범:]
문자는 영숫자입니다.
[:알파:]
문자는 알파벳입니다
[:아스키:]
문자가 7비트입니다. 즉, 최상위 비트가 없는 단일 바이트 문자입니다.
설정할 수 있습니다.
[:공백:]
문자는 공백이거나 탭입니다.
[:컨트롤:]
해당 캐릭터는 컨트롤 캐릭터입니다.
[:숫자:]
문자가 십진수입니다.
[:그래프:]
해당 문자는 공백 이외의 인쇄 가능한 문자입니다.
[:낮추다:]
해당 문자는 소문자입니다.
[:인쇄:]
문자를 인쇄할 수 있습니다.
[:점점:]
문자는 인쇄 가능하지만 영숫자나 공백은 사용할 수 없습니다.
[:우주:]
문자가 공백입니다.
[:높은:]
해당 문자는 대문자입니다.
[:x숫자:]
문자가 16진수입니다.
또 다른 명명된 클래스 세트는 쉘에 의해 내부적으로 처리되며
로케일에 민감함:
[:ID:]
문자는 다음과 같은 쉘 식별자의 일부를 형성하는 것이 허용됩니다.
매개 변수 이름
[:IFS:]
문자는 입력 필드 구분 기호로 사용됩니다. 즉,
IFS 매개 변수
[:IFS스페이스:]
문자는 IFS 공백 문자입니다. 에 대한 설명서를 참조하세요 IFS
인간을 zshparam(1) 매뉴얼 페이지.
[:불완전한:]
불완전한 멀티바이트 문자를 시작하는 바이트와 일치합니다. 참고하세요
하나 이상의 바이트로 구성된 시퀀스가 있을 수 있습니다.
멀티바이트 문자의 접두사. 잠재적으로 불완전한 바이트를 테스트하려면
순서대로 ` 패턴을 사용하세요.[[:불완전한:]]*'. 이것은 결코 일치하지 않습니다
유효한 멀티바이트 문자로 시작하는 시퀀스입니다.
[:유효하지 않은:]
유효한 멀티바이트 문자를 시작하지 않는 바이트와 일치합니다. 이것을 참고하세요
불완전한 멀티바이트 문자의 연속 바이트일 수 있습니다.
유효하지 않고 불완전한 멀티바이트로 구성된 멀티바이트 문자열
문자는 단일 바이트로 처리됩니다.
[:단어:]
문자는 단어의 일부로 처리됩니다. 이 테스트는 다음에 민감합니다.
가치 워드문자 매개 변수
대괄호는 전체 세트를 묶는 대괄호에 추가됩니다.
따라서 단일 영숫자 문자를 테스트하려면 `[[:앨범:]]'.
명명된 문자 집합은 다른 유형과 함께 사용할 수 있습니다. `[[:알파:]0-9]'.
[^...]
[!...] 처럼 [...]단, 주어진 세트에 없는 모든 문자와 일치한다는 점은 제외됩니다.
<[x]-[y]>
범위 내의 모든 숫자와 일치합니다. x 에 y, 포함한. 숫자 중 하나가 될 수 있습니다.
범위를 개방형으로 만들기 위해 생략되었습니다. 따라서`<->'는 모든 숫자와 일치합니다. 일치시키다
개별 숫자, [...] 형태가 더 효율적입니다.
이 형식의 패턴에 인접한 다른 와일드카드를 사용할 때는 주의하십시오. ~을 위한
예, * 실제로 시작 부분의 모든 숫자와 일치합니다.
문자열, `<0-9>'는 첫 번째 숫자와 일치하며 `*'는 무엇이든 일치합니다.
다른 사람. 이는 부주의한 사람을 위한 함정이지만 실제로는 다음과 같은 경우 피할 수 없는 결과입니다.
가능한 가장 긴 일치가 항상 성공한다는 규칙입니다. 다음과 같은 표현
`[^[:숫자:]]*' 대신 사용할 수 있습니다.
(...) 포함된 패턴과 일치합니다. 그룹화에 사용됩니다. 만약 KSH_GLOB option
설정되면 `@', `*', `+', `?' 또는 `!' 바로 앞에 `('를 다루게 된다
특히 아래에 자세히 설명되어 있습니다. 옵션 SH_GLOB 괄호만 사용하는 것을 방지합니다.
이런 식으로 사용되고 있지만, KSH_GLOB 옵션은 아직 사용할 수 있습니다.
그룹화는 여러 디렉터리로 확장될 수 없습니다.
`/' 그룹 내(파일 이름 생성에 사용되는 패턴에만 적용됨).
한 가지 예외가 있습니다. 다음 형식의 그룹입니다. (꼭/)# 완전한 경로로 나타남
세그먼트는 일련의 디렉터리와 일치할 수 있습니다. 예를 들어, foo/(a*/)#bar 성냥
푸/바, 푸/아무거나/바, foo/아무거나/아무거나/바, 등등.
x|y 다음 중 하나와 일치합니다. x or y. 이 연산자는 다른 연산자보다 우선순위가 낮습니다. `|'
파이프라인으로 해석되지 않도록 문자는 괄호 안에 있어야 합니다.
^x (필요 EXTENDED_GLOB 설정됩니다.) 패턴을 제외한 모든 항목과 일치합니다. x. 이
`보다 우선순위가 높습니다./', 그래서 `^푸/바'는 `에서 디렉토리를 검색합니다..'
`를 제외하고./푸'라는 이름의 파일에 대해바'.
x~y (필요 EXTENDED_GLOB 설정됩니다.) 패턴과 일치하는 항목을 일치시킵니다. x 비자 면제 프로그램에 해당하는 국가의 시민권을 가지고 있지만
일치하지 않는다 y. `를 제외한 모든 연산자보다 우선순위가 낮습니다.|', 그래서
`*/*~푸/바'는 `의 모든 디렉토리에 있는 모든 파일을 검색합니다..' 그런 다음 제외합니다.
`푸/바'이런 일치가 있었다면. 여러 패턴을 제외할 수 있습니다.
`푸~바~바즈'. 제외 패턴에서 (y), `/' 및 `.'는 특별히 취급되지 않습니다
그들이 일반적으로 globbing하는 방식입니다.
x# (필요 EXTENDED_GLOB 설정됩니다.) 0개 이상의 일치 항목과 일치합니다.
무늬 x. 이 연산자는 우선순위가 높습니다. `12 #'는 `1(2#)',
`보다는(12)#'. 따옴표가 없는 `에 대한 오류입니다.#'뭔가를 따르다
반복할 수 없습니다. 여기에는 빈 문자열, 이미 뒤에 오는 패턴이 포함됩니다.
`##' 또는 괄호의 일부인 경우 KSH_GLOB 패턴(예: `!(푸)#'는
유효하지 않으며 `로 바꿔야 합니다.*(!(푸))').
x## (필요 EXTENDED_GLOB 설정됩니다.) 하나 이상의 패턴 발생과 일치합니다.
x. 이 연산자는 우선순위가 높습니다. `12##'는 `1(2##)', 꽤
`보다(12)##'. 활성 상태는 2개 이하입니다`#' 문자가 함께 나타날 수 있습니다. (메모
` 형식의 glob 한정자와 잠재적인 충돌1(2##)'어떡해야 하지?
그러므로 피하세요.)
ksh와 유사한 글롭 연산자
경우 KSH_GLOB 옵션이 설정되면 괄호의 효과는 이전 옵션으로 수정될 수 있습니다.
`@', `*', `+', `?' 또는 `!'. 이 문자는 특수 효과를 갖기 위해 인용을 해제할 필요가 없습니다.
하지만 `('여야 합니다.
@(...) 괄호 안의 패턴을 맞춰보세요. (`처럼(...)'.)
*(...) 발생 횟수에 관계없이 일치합니다. (`처럼(...)#', 재귀 디렉터리 제외
검색은 지원되지 않습니다.)
+(...) 하나 이상의 항목을 일치시킵니다. (`처럼(...)##', 재귀 디렉터리 제외
검색은 지원되지 않습니다.)
?(...) 0개 또는 1개의 항목을 일치시킵니다. (`처럼(|...)'.)
!(...) 괄호 안의 표현식을 제외한 모든 항목을 일치시킵니다. (`처럼(^(...))'.)
상위
위에 주어진 연산자의 우선순위는 (가장 높음) `^', `/', `~', `|'(최저); 그만큼
나머지 연산자는 단순히 문자열의 일부로 왼쪽에서 오른쪽으로 처리됩니다.#'
그리고 `##' 가능한 가장 짧은 선행 단위(예: 문자 `?', `[...]',
`<...>' 또는 괄호로 묶인 표현). 위에서 언급했듯이 `/' 디렉토리로 사용됨
구분 기호는 괄호 안에 표시되지 않을 수 있지만 `|' 그렇게 해야 합니다. 에 사용된 패턴으로
파일 이름 생성 이외의 다른 컨텍스트(예: 케이스 내의 명령문 및 테스트
`[[...]]'), `/'는 특별하지 않습니다. 그리고`/'는 ` 뒤에도 특별하지 않습니다.~' 등장
파일 이름 패턴의 외부 괄호.
글 로빙 깃발
오른쪽 끝까지 텍스트에 영향을 미치는 다양한 플래그가 있습니다.
그룹을 포함하거나 패턴의 끝까지; 그들은 EXTENDED_GLOB 옵션. 모두
형식을 취하다 (#X) 어디에 X 다음 형식 중 하나를 가질 수 있습니다.
i 대소문자를 구분하지 않음: 패턴의 대문자 또는 소문자는 대문자 또는 소문자와 일치합니다.
소문자.
l 패턴의 소문자는 대문자 또는 소문자와 일치합니다. 높은
패턴의 대소문자는 여전히 대문자와만 일치합니다.
I 대소문자 구분: 로컬에서 다음의 효과를 무효화합니다. i or l 그 시점부터.
b 패턴에서 괄호 안에 있는 그룹에 대한 역참조를 활성화합니다. 이건 작동하지 않아
파일 이름 생성 중. 활성 괄호 세트가 있는 패턴이 다음과 같은 경우
일치하면 그룹과 일치하는 문자열이 배열에 저장됩니다. $ matchWalk Through California 프로그램,
배열에서 일치하는 괄호의 시작 인덱스 $mbegin및
배열의 끝 인덱스 $mend, 각 배열의 첫 번째 요소
괄호 안의 첫 번째 그룹에 해당하는 식입니다. 이 배열은 그렇지 않습니다.
그렇지 않으면 쉘에 특별합니다. 인덱스는 다음과 동일한 규칙을 사용합니다.
매개변수 대체를 통해 $mend 그리고 $mbegin 사용할 수 있습니다
아래첨자; 그만큼 KSH_ARRAYS 옵션은 존중됩니다. Globbing 플래그 세트는 그렇지 않습니다.
괄호 안의 그룹으로 간주됩니다. 처음 9개의 활성 괄호만 사용할 수 있습니다.
참조.
예를 들어,
foo="a 현 과 a 메시지"
if [[ $foo = (a|an)' '(#비)(*)' '* ]]; 그때
인쇄 ${foo[$mbegin[1],$mend[1]]}
fi
인쇄 `현 과 a'. 첫 번째 괄호는 (#비) 그리고
역참조를 생성하지 않습니다.
역참조는 파일 이름 이외의 모든 형태의 패턴 일치에서 작동합니다.
하지만 다음과 같이 전체 어레이에 대해 일치를 수행할 때는 주의하세요.
${정렬#무늬}또는 다음과 같은 전역 대체 ${내 돈//꼭/답장}, 오직
마지막 경기에 대한 데이터는 계속 사용 가능합니다. 전역 교체의 경우
여전히 유용할 수 있습니다. 에 대한 예를 참조하세요. m 아래 플래그.
역참조의 번호 매기기는 여는 순서를 엄격하게 따릅니다.
패턴 문자열의 괄호는 왼쪽에서 오른쪽으로, 괄호 세트는
중첩될 수 있습니다. 괄호 뒤에 `가 오는 특수 규칙이 있습니다.#' 또는 `##'.
괄호의 마지막 일치만 기억됩니다. 예를 들어 `[[ 아밥 =
(#b)([ab])# ]]', 마지막 `만b'에 저장되어 있습니다. 경기[1]. 따라서 추가 괄호
전체 세그먼트를 일치시키는 데 필요할 수 있습니다. 예를 들어 `X((ab|cd)#)Y에 ~
`의 전체 문자열과 일치합니다.ab' 또는 `cd' 사이에X' 및 `Y'의 값을 사용하여
$match[1] 보다는 $match[2].
일치가 실패하면 어떤 매개변수도 변경되지 않으므로 경우에 따라
사전에 초기화하는 것이 필요합니다. 일부 역참조가 실패하는 경우
일치 - 일치하지 못하는 대체 분기에 있는 경우 발생합니다. 또는
그 뒤에 오는 경우 # 0회 일치 - 그러면 일치하는 문자열이 설정됩니다.
빈 문자열로 변환되고 시작 및 끝 인덱스는 -1로 설정됩니다.
역참조를 사용한 패턴 일치는 없는 것보다 약간 느립니다.
B 역참조를 비활성화하여 효과를 무효화합니다. b 그 시점부터 플래그를 지정합니다.
cN,M 깃발 (#씨N,M) 어느 곳에서나 사용할 수 있습니다. # or ## 연산자는 다음을 제외하고 사용할 수 있습니다.
표현에서 `(*/)#' 및 `(*/)##' 파일 이름 생성에서 `/' 가지다
특별한 의미; 다른 globbing 플래그 및 잘못된 패턴과 결합할 수 없습니다.
잘못 배치하면 오류가 발생합니다. 형식과 동일합니다. {N,M} 정기적으로
표현. 이전 문자나 그룹이 일치해야 합니다. N 그리고 M
시간을 포함합니다. 형태 (#씨N) 정확히 필요하다 N 성냥; (#씨,M) 동등하다
지정하는 것 N 0으로; (#씨N,) 개수에 최대 제한이 없음을 지정합니다.
경기의.
m 일치하는 전체 문자열에 대한 일치 데이터에 대한 참조를 설정합니다. 이것은 비슷하다
역참조하고 파일 이름 생성에서는 작동하지 않습니다. 플래그가 있어야합니다.
패턴 끝의 효과, 즉 그룹에 국한되지 않습니다. 매개변수 $MATCH,
$MBEGIN 그리고 $MEND 일치하는 문자열과 해당 문자열의 인덱스로 설정됩니다.
각각 문자열의 시작과 끝입니다. 이는 매개변수에서 가장 유용합니다.
그렇지 않으면 일치하는 문자열이 분명합니다.
예를 들어,
arr=(벨트 병인 움츠러들다 와 크프 조 책임)
인쇄 ${arr//(#m)[aeiou]/${(U)MATCH}}
모든 일치 항목(즉, 모든 모음)을 대문자로 강제로 인쇄합니다.초원 병인
그립다 waqf 조 책임'.
역참조와 달리 일치 참조를 사용해도 속도 저하가 없습니다.
다음과 같은 경우 대체 문자열에 필요한 추가 대체보다
표시된 예.
M 비활성화 m 플래그이므로 일치 데이터에 대한 참조가 생성되지 않습니다.
aNUM 대략적인 일치: NUM 패턴과 일치하는 문자열에는 오류가 허용됩니다.
이에 대한 규칙은 다음 하위 섹션에 설명되어 있습니다.
s, e 다른 플래그와 달리 이는 로컬 효과만 가지며 각 플래그는 해당 플래그에 나타나야 합니다.
소유: `(#에스)' 및 `(#이자형)'만이 유효한 형식입니다. `(#에스)' 플래그는 다음에서만 성공합니다.
테스트 문자열의 시작, 그리고 `(#이자형)' 플래그는 끝에서만 성공합니다.
테스트 문자열; 그들은 `에 해당한다^' 및 `$'를 표준 정규식으로 사용합니다. 그들
파일 이름이 아닌 패턴의 경로 세그먼트를 일치시키는 데 유용합니다.
생성(경로 세그먼트는 어떤 경우든 별도로 처리됨) 예를 들어,
`*((#s)|/)테스트((#e)|/)*'는 경로 세그먼트 `와 일치합니다.test' 다음 중 하나에서
문자열: test, 테스트/시/시작, 시/끝/테스트, in/시험/중간.
또 다른 용도는 매개변수 대체입니다. 예를 들어`${배열/(#s)A*Z(#e)}' 할 것이다
완전한 패턴과 일치하는 배열 요소만 제거 `A*Z'. 있다
이러한 유형의 많은 작업을 수행하는 다른 방법은 다음과 같습니다.
대체 작업`/' 및 `//'와 함께(#에스)' 및 `(#이자형)' 플래그는 다음을 제공합니다.
간단하고 기억에 남는 단 하나의 방법.
` 형식의 주장에 유의하세요.(^(#초))'도 작동합니다. 즉, 다음을 제외한 어느 곳에서나 일치합니다.
문자열의 시작 부분입니다. 실제로는 'a를 제외한 모든 것'을 의미하지만
문자열 시작 부분의 길이가 0인 부분'; `를 사용해야 합니다.(""~(#초))에 ~
시작 부분이 아닌 문자열의 길이가 0인 부분과 일치합니다.
q A`q' 그리고 글로빙 플래그의 닫는 괄호까지의 모든 내용은 다음과 같습니다.
패턴 일치 코드에서는 무시됩니다. 이는 glob 사용을 지원하기 위한 것입니다.
예선은 아래를 참조하세요. 결과는 `(#b)(*).c(#q.)'를 사용할 수 있다
글로빙과 문자열 매칭 모두에 사용됩니다. 전자의 경우,
`(#큐.)'는 glob 한정자로 처리되며 `(#비)'소용없겠다.
후자의 경우 `(#비)'는 역참조에 유용하며 `(#큐.)'
무시됩니다. glob 한정자의 콜론 수정자도 그렇지 않습니다.
일반적인 패턴 매칭에 적용됩니다.
u 멀티바이트 문자가 있는지 확인할 때 현재 로캘을 고려합니다.
패턴, 쉘이 다음으로 컴파일된 경우 멀티바이트_지원. 이는 재정의됩니다.
전에, 멀티바이트 옵션; 기본 동작은 옵션에서 가져옵니다. 비교하다 U.
(니모닉: 일반적으로 멀티바이트 문자는 UTF-8 인코딩의 유니코드에서 왔습니다.
시스템 라이브러리에서 지원하는 모든 ASCII 확장을 사용할 수 있습니다.)
U 모든 문자는 1바이트 길이로 간주됩니다. 와 반대 인 u. 이
재정의 멀티바이트 옵션을 선택합니다.
예를 들어, 테스트 문자열 fooxx 패턴으로 매치할 수 있어요 (#i)FOOXX, 하지만 에 의해
(#l)FOOXX, (#i)FOO(#I)XX or ((#i)FOOX)X. 문자열 (#ia2) 읽어보기 지정
대소문자를 구분하지 않는 일치 추가 정보 최대 2개의 오류가 있습니다.
두 가지를 모두 그룹화하기 위해 ksh 구문을 사용하는 경우 KSH_GLOB 그리고 EXTENDED_GLOB 설정해야 하며
왼쪽 괄호 앞에는 다음이 와야 합니다. @. 또한 플래그는 문자에 영향을 주지 않습니다.
내부 [...] 즉, 그룹 (#i)[az] 여전히 소문자만 일치합니다.
마지막으로, 전체 경로를 대소문자를 구분하지 않고 검사할 때 모든 디렉토리는 다음과 같아야 합니다.
일치하는 모든 파일을 검색하여 양식의 패턴이 (#i)/푸/바/... is
잠재적으로 느립니다.
근접한 매칭
대략 일치할 때 쉘은 발견된 오류 수를 유지합니다.
규정된 수치를 초과하여 (#ㅏNUM) 플래그. 네 가지 유형의 오류가 인식됩니다.
1. 다음과 같은 다양한 문자 폭스바 그리고 푸이바.
2. 다음과 같이 문자의 전치 바나나 그리고 아브나나.
3. 패턴과 마찬가지로 대상 문자열에 문자가 누락되었습니다. 도로 및 대상
현 막대.
4. 다음과 같이 대상 문자열에 추가 문자가 나타납니다. 난로 그리고 노력하다.
따라서 패턴은 (#a3)abcd 성냥 DCBA, 첫 번째를 사용하면 오류가 발생합니다.
규칙은 두 번, 두 번째 규칙은 한 번, 문자열을 다음과 같이 그룹화합니다. [d][cb][a] 그리고 [a][bc][d].
문자의 문자를 포함하여 패턴의 리터럴이 아닌 부분이 정확히 일치해야 합니다.
범위: 따라서 (#a1)??? 빈 문자열에 규칙 4를 적용하여 길이가 XNUMX인 문자열과 일치합니다.
패턴의 일부이지만 길이가 2인 문자열은 아닙니다. ? 일치해야합니다. 다른
정확히 일치해야 하는 문자는 파일 이름의 첫 번째 점입니다( GLOB_DOTS
옵션이 설정되어 있음), 파일 이름에 모든 슬래시가 포함되어 있으므로 알파벳 두 개의 오류가 있습니다 알파벳 (
슬래시는 다른 문자로 바꿀 수 없습니다.) 마찬가지로 오류도 계산됩니다.
패턴에서 연속되지 않은 문자열에 대해 별도로 (ab|cd)ef 두 개의 오류가 있습니다
에프.
제외를 사용하는 경우 ~ 연산자, 근사 일치가 완전히 처리됩니다.
제외된 부분은 별도로 활성화 시켜야 합니다. 따라서,
(#a1)README~READ_ME 성냥 READ.ME 하지만 READ_ME, 후행으로 READ_ME 일치한다
근사치 없이. 하지만, (#a1)README~(#a1)READ_ME 어떤 패턴과도 일치하지 않습니다.
형태 독서?ME 이제 그러한 모든 양식은 제외됩니다.
제외 항목 외에 전체 오류 개수는 하나만 있습니다. 그러나 최대 오류
allowed는 로컬에서 변경될 수 있으며 그룹화하여 구분할 수 있습니다. 예를 들어,
(#a1)고양이((#a0)개)여우 에서는 발생하지 않을 수 있는 오류를 총 1개 허용합니다. 개 섹션,
그리고 패턴 (#a1)고양이(#a0)개(#a1)여우 동일합니다. 주의할 점은
오류가 처음 발견되는 것은 근사치를 사용할지 여부를 결정하는 데 중요한 요소입니다. ~을 위한
예, (#a1)abc(#a0)xyz 일치하지 않습니다 abcdxyz, `에서 오류가 발생하기 때문입니다.x',
근사치가 꺼진 곳.
전체 경로 세그먼트는 대략적으로 일치할 수 있으므로
`(#a1)/foo/d/is/사용 가능/at/the/bar'는 모든 경로 세그먼트에서 하나의 오류를 허용합니다. 이것은 많은
없는 것보다 효율성이 떨어집니다. (#a1)그러나 경로의 모든 디렉터리는 다음과 같아야 합니다.
가능한 대략적인 일치를 검색했습니다. 배치하는 것이 가장 좋습니다. (#a1) 어떤 경로 뒤에
올바른 것으로 알려진 세그먼트.
재귀 글 로빙
` 형식의 경로 이름 구성요소(푸/)#' 0개 이상의 경로로 구성된 경로와 일치합니다.
패턴과 일치하는 디렉토리 푸.
줄여서 `** /'는 `(*/)#'; 따라서 이는 다음의 파일과 일치합니다.
현재 디렉터리와 하위 디렉터리. 따라서:
ls (*/)#술집
or
ls **/술집
`라는 이름의 파일에 대한 재귀적 디렉터리 검색을 수행합니다.바'(잠재적으로 파일 포함
`바' 현재 디렉토리에 있음). 이 형식은 기호 링크를 따르지 않습니다. 그만큼
대체 형태 `*** /' 하지만 그 외에는 동일합니다. 둘 중 어느 것도 될 수 없어
동일한 경로 세그먼트 내에서 다른 형태의 글로빙과 결합됩니다. 이 경우 `*'
연산자는 일반적인 효과로 되돌아갑니다.
글롭 한정자
파일 이름 생성에 사용되는 패턴은 다음으로 묶인 한정자 목록으로 끝날 수 있습니다.
괄호. 한정자는 주어진 파일 이름과 일치하는 파일 이름을 지정합니다.
패턴이 인수 목록에 삽입됩니다.
옵션 BARE_GLOB_QUAL 설정되면 `를 포함하지 않는 괄호 세트가 뒤에 표시됩니다.|'
또는 `(' 문자(또는 `~' 특별한 경우)는 glob 한정자 세트로 간주됩니다. 덩어리
일반적으로 glob 한정자로 사용되는 하위 표현식(예: `(^x)', 그럴 수도 있지
이 경우에는 괄호를 두 배로 늘려서 glob 패턴의 일부로 처리해야 합니다.
생산`((^엑스))'.
옵션 EXTENDED_GLOB 설정되면 glob 한정자에 대한 다른 구문을 사용할 수 있습니다.
즉 `(#큐x)' 어디 x 다른 형식에 사용되는 것과 동일한 glob 한정자 중 하나입니다. 그만큼
한정자는 여전히 패턴 끝에 나타나야 합니다. 그러나 이 구문을 사용하면
여러 개의 glob 한정자가 함께 연결될 수 있습니다. 이들은 논리 AND로 처리됩니다.
개별 플래그 세트. 또한 구문이 명확하므로 표현식은 다음과 같습니다.
그 안에 포함된 괄호가 균형을 이루는 한 glob 한정자로 처리됩니다.
`의 모습|', `(' 또는 `~'라고 해서 효과가 부정되는 것은 아닙니다. 참고로 예선은
패턴 끝에 베어 글로브 한정자가 존재하는 경우에도 이 형식으로 인식됩니다.
예를 들어 `*(#큐*)(.)'는 두 옵션이 모두 설정된 경우 실행 가능한 일반 파일을 인식합니다.
그러나 명확성을 위해 혼합 구문은 피해야 합니다. 참고하세요
`를 사용하는 조건 내에서[[' 괄호 안에 표현이 있는 경우 (#큐...)
문자열 끝에는 globbing이 수행되어야 함을 나타냅니다. 표현은 아마도
glob 한정자를 포함하지만 단순히 다음과 같은 경우에도 유효합니다. (#큐). 이는 적용되지 않습니다.
구문에 이미 특수 항목이 있으므로 패턴 일치 연산자의 오른쪽에
의미.
한정자는 다음 중 하나일 수 있습니다.
/ 디렉토리
F '전체'(즉, 비어 있지 않은) 디렉토리. 반대의 의미이니 참고하세요 (^F) 확장
빈 디렉토리와 디렉토리가 아닌 모든 것. 사용 (/^에프) 빈 디렉토리의 경우.
. 일반 파일
@ 심볼릭 링크
= 소켓
p 명명된 파이프(FIFO)
* 실행 가능한 일반 파일(0100, 0010 또는 0001)
% 장치 파일(문자 또는 블록 특수)
%b 특수 파일 차단
%c 캐릭터 특수 파일
r 소유자가 읽을 수 있는 파일(0400)
w 소유자 쓰기 가능 파일(0200)
x 소유자 실행 파일(0100)
A 그룹이 읽을 수 있는 파일(0040)
I 그룹 쓰기 가능 파일(0020)
E 그룹 실행 파일(0010)
R 누구나 읽을 수 있는 파일(0004)
W 누구나 쓸 수 있는 파일(0002)
X 월드 실행 가능 파일(0001)
s setuid 파일(04000)
S setgid 파일(02000)
t 고정 비트가 있는 파일(01000)
f투기 액세스 권한이 일치하는 파일 투기. 이 투기 선택적으로 8진수일 수 있습니다.
앞에 `=', `+', 또는 `-'. 이러한 문자 중 어느 것도 제공되지 않으면
동작은 `와 동일합니다.='. 8진수는 모드 비트를 설명합니다.
`와 결합하면 예상됩니다.=', 제공된 값은 파일 모드와 일치해야 합니다.
정확히는 `+', 적어도 주어진 숫자의 비트는
파일 모드 및 `-'인 경우 숫자의 비트를 설정하면 안 됩니다. `를 주는 것?'
숫자의 어느 위치에서든 8진수 대신 해당 비트가
파일 모드에서는 선택되지 않으며 `와 함께 사용하는 경우에만 유용합니다.='.
한정자 `f' 뒤에는 다음 문자까지의 다른 문자가 옵니다.
일치하는 문자(`[', `{', 그리고 `<' 일치 `]', `}', 그리고 `>' 각각, 어떤
다른 문자가 자체적으로 일치함)은 쉼표로 구분된 목록으로 사용됩니다. 하위 사양s.
각각의 하위 사양 위에서 설명한 8진수이거나 다음 중 하나의 목록일 수 있습니다.
문자 `u', `g', `o', 그리고 `a' 다음에 `=', `+', 또는 `-', 팔로우했습니다
` 문자 목록으로r', `w', `x', `s', 그리고 `t' 또는 8진수입니다.
첫 번째 문자 목록은 확인할 액세스 권한을 지정합니다. 만약
`u'가 주어지면 파일 소유자의 것이 사용됩니다.g'가 주어지는데,
그룹이 확인되었습니다. `o'는 다른 사용자의 것을 테스트한다는 뜻이고 `a' 라고 말한다
세 그룹을 모두 테스트합니다. `=', `+', 그리고 `-' 모드가 어떻게 될 것인지 다시 말합니다.
확인되었으며 위의 첫 번째 양식에 대해 설명한 것과 동일한 의미를 갖습니다. 두번째
문자 목록은 최종적으로 어떤 액세스 권한이 예상되는지 알려줍니다.`r' 을위한
읽기 액세스, `w' 쓰기 액세스의 경우 `x' 파일을 실행할 수 있는 권한(또는
디렉토리 검색), `s' setuid 및 setgid 비트의 경우 `t' 끈적끈적한 것 때문에
비트.
따라서 `*(f70?)'는 소유자가 읽고, 쓰고, 실행한 파일을 제공합니다.
허가와는 별개로 다른 그룹 구성원에게는 권한이 없습니다.
다른 사용자에 대한 권한. 패턴`*(f-100)'는 다음과 같은 모든 파일을 제공합니다.
소유자에게 실행 권한이 없으며 `*(f:gu+w,o-rx:)'에 대한 파일을 제공합니다.
소유자와 그룹의 다른 구성원은 최소한 쓰기 권한을 가지고 있어야 합니다.
다른 사용자에게는 읽기 또는 실행 권한이 없습니다.
e현
+cmd를 The 현 쉘코드로 실행됩니다. 파일 이름은
코드가 0 상태(보통 마지막 상태)를 반환하는 경우에만 나열합니다.
명령).
첫 번째 형식에서는 ` 다음의 첫 번째 문자e'는 구분 기호로 사용됩니다.
다음으로 일치하는 구분 기호까지의 모든 항목이 현; `[',
`{', 그리고 `<' 일치 `]', `}', 그리고 `>', 각각 다른 문자는
자체적으로 일치합니다. 확장은 다음에서 인용되어야 합니다. 현 그들을 방지하기 위해
글로빙이 완료되기 전에 확장되지 않습니다. 현 그런 다음 쉘로 실행됩니다
암호. 문자열 글로벌 배열에 추가됩니다 zsh_eval_context 기간
실행의.
실행하는 동안 현 현재 테스트 중인 파일 이름은 다음에서 사용할 수 있습니다.
매개 변수 댓글; 매개변수는 삽입될 문자열로 변경될 수 있습니다.
원래 파일 이름 대신 목록. 또한, 매개변수 댓글 수
값을 재정의하는 배열 또는 문자열로 설정됩니다. 댓글. 로 설정한 경우
배열의 경우 후자는 명령줄에 단어 단위로 삽입됩니다.
예를 들어 디렉터리에 단일 파일 `고독한'. 그런 다음
표현 `*(e:'답장=(${REPLY}{1,2})':)'라는 단어가 발생합니다.고독한 1'
`고독한 2'를 명령줄에 삽입합니다. 의 인용을 참고하세요 현.
형태 +cmd를 동일한 효과가 있지만 주위에 구분 기호가 표시되지 않습니다. cmd를. 대신,
cmd를 다음의 가장 긴 문자 시퀀스로 간주됩니다. + 그 아르
영숫자 또는 밑줄. 일반적으로 cmd를 쉘 함수의 이름이 될 것입니다
적절한 테스트가 포함되어 있습니다. 예를 들어,
NT() { [[ $ 답장 -nt $NTREF ]] }
NTREF=재판 파일
ls -l *(+nt)
다음보다 최근에 수정된 디렉토리의 모든 파일을 나열합니다.
리파일.
dDEV 장치의 파일 DEV
l[-|+]ct
링크 수가 다음보다 적은 파일 ct (-), 보다 큰 ct (+) 또는 같음 ct
U 유효 사용자 ID가 소유한 파일
G 유효 그룹 ID가 소유한 파일
uid 사용자 ID가 소유한 파일 id 그것이 숫자라면. 그렇지 않으면, id 사용자를 지정합니다
이름:` 뒤의 문자u'는 구분 기호로 사용되며 문자열은
그것과 다음 일치하는 구분 기호 사이는 사용자 이름으로 사용됩니다. 그만큼
구분 기호 시작 `[', `{', 그리고 `<' 마지막 구분 기호와 일치 `]', `}', 그리고 `>',
각기; 다른 문자는 자체적으로 일치합니다. 선택한 파일은 다음과 같습니다.
이 사용자의 소유입니다. 예를 들어 `너:푸:' 또는 `너[푸]' 사용자가 소유한 파일을 선택합니다.
`푸'.
gid 처럼 uid 하지만 그룹 ID나 이름이 있는 경우
a[Mwhms][-|+]n
정확하게 액세스된 파일 n 며칠 전에. 마지막 기간 내에 액세스된 파일 n 일은
음수 값을 사용하여 선택됨 n (-n). 다음 이상 액세스된 파일 n 며칠 전에
긍정적으로 선택됩니다 n 가치 (+n). 선택적 단위 지정자 `M', `w', `h',
`m' 또는 `s' (예 `ah5') 확인이 월 단위(30일)로 수행되도록 합니다.
일 대신에 각각 주, 시간, 분 또는 초로 표시됩니다. 명시적인 `d'
며칠 동안도 허용됩니다.
액세스 시간과 현재 부분 사이의 차이의 분수 부분
적절한 단위의 값은 비교에서 무시됩니다. 예를 들어 `에코
*(아-5)'는 지난 5시간 동안 액세스한 파일을 에코하고 `에코 *(아+5)'
최소 6시간 전에 액세스한 파일을 에코합니다. 시간은 엄격하게 5시간 사이입니다.
6시간은 5시간으로 간주됩니다.
m[Mwhms][-|+]n
파일 수정 시간을 사용한다는 점을 제외하면 파일 액세스 한정자와 같습니다.
c[Mwhms][-|+]n
파일 inode 변경 시간을 사용한다는 점을 제외하면 파일 액세스 한정자와 같습니다.
L[+|-]n
다음보다 작은 파일 n 바이트(-), 이상 n 바이트(+) 또는 정확히 n 길이는 바이트입니다.
이 플래그 바로 뒤에 크기 지정자 `k'(`K'), `m'(`M') 또는 `p'
(`P') (예: `Lk-50') 검사는 킬로바이트, 메가바이트 또는 블록으로 수행됩니다.
(512바이트) 대신. (일부 시스템에서는 추가 지정자를 사용할 수 있습니다.
기가바이트,`g' 또는 `G', 테라바이트, `t' 또는 `T'.) 크기 지정자가 사용되는 경우
파일 크기가 다음 단위로 반올림되면 파일은 "정확한" 크기로 간주됩니다.
테스트 크기와 같습니다. 따라서 `*(LM1)' 1바이트에서 최대 1바이트까지의 파일과 일치합니다.
메가바이트 포함. 또한 테스트 크기보다 "작은" 파일 세트만
동등성 테스트와 일치하지 않는 파일을 포함합니다. 따라서 `*(LM-1)'만 일치합니다.
크기가 0인 파일.
^ 그 뒤에 오는 모든 한정자를 무효화합니다.
- 한정자가 심볼릭 링크(기본값)에서 작동하도록 만드는 것과
그들이 가리키는 파일
M 설정 MARK_DIRS 현재 패턴에 대한 옵션
T 다음과 유사하게 파일 이름에 후행 한정자 표시를 추가합니다. LIST_TYPES
옵션, 현재 패턴에 대해(재정의 M)
N 설정 NULL_GLOB 현재 패턴에 대한 옵션
D 설정 GLOB_DOTS 현재 패턴에 대한 옵션
n 설정 NUMERIC_GLOB_SORT 현재 패턴에 대한 옵션
Yn 단락 모드를 활성화합니다. 패턴은 최대로 확장됩니다. n 파일 이름. 만약에
이상 n 일치하는 항목이 있습니다. 첫 번째 항목만 있습니다. n 디렉터리 순회 순서와 일치
고려 될 것이다.
암시 oN 없을 때 oc 한정자가 사용됩니다.
oc 파일 이름을 정렬하는 방법을 지정합니다. 만약에 c is n 그들은 다음과 같이 정렬되어 있습니다
이름; 그렇다면 L 파일의 크기(길이)에 따라 정렬됩니다. 만약에 l
링크 수에 따라 정렬됩니다. 만약에 a, m및 c 시간순으로 정렬되어 있어요
마지막 액세스, 수정 또는 inode 변경 각각; 만약에 d, 파일
하위 디렉터리는 각 수준의 현재 디렉터리 앞에 나타납니다.
검색 -- 다른 기준과 결합하는 것이 가장 좋습니다. 예를 들어 `오동' 정렬하다
동일한 디렉토리 내의 파일 이름 만약에 N, 정렬이 수행되지 않습니다. 메모
그 a, m및 c 나이를 현재 시간과 비교하므로 이름이
목록이 가장 어린 파일입니다. 또한 수정자는 ^ 그리고 - 사용되므로
`*(^-oL)'는 파일 크기에 따라 내림차순으로 정렬된 모든 파일 목록을 제공합니다.
기호 링크를 따르십시오. 하지 않는 한 oN 사용되는 경우 여러 순서 지정자가 있을 수 있습니다.
관계를 해결하기 위해 발생합니다.
기본 정렬은 다음과 같습니다. n (이름으로) Y glob 한정자가 사용됩니다.
경우에 따라서는 N (정렬되지 않음).
oe 그리고 o+ 특별한 경우입니다. 그 뒤에는 다음과 같이 구분된 쉘 코드가 옵니다.
전에, e 글로벌 한정자와 + glob 한정자입니다(위 참조). 코드
매개변수와 일치하는 각 파일에 대해 실행됩니다. 댓글 이름으로 설정
입장시 파일 및 글로브소트 에 추가 zsh_eval_context. 코드를 수정해야 합니다.
매개 변수 댓글 어떤 방식으로든. 반환 시 매개변수 값이 사용됩니다.
파일 이름 대신 정렬할 문자열로 사용됩니다. 다른 종류와는 다르게
연산자, oe 그리고 o+ 반복될 수 있지만 최대 정렬 수는
모든 glob 표현식에 나타날 수 있는 모든 종류의 연산자는 12입니다.
Oc `처럼o'이지만 내림차순으로 정렬됩니다. 즉 `*(^oc)'는 `와 같다.*(10월)'
`*(^Oc)'는 `와 같다.*(oc)'; `Od' 이전에 현재 디렉터리에 파일을 넣습니다.
검색의 각 수준에 있는 하위 디렉터리에 있는 항목입니다.
[구걸[,end]]
일치하는 파일 이름 중 반환된 목록에 포함되어야 하는 파일 이름을 지정합니다.
구문은 배열 첨자의 경우와 동일합니다. 구걸 및 선택 사항 end 수
수학적 표현. 매개변수 첨자처럼 음수가 될 수도 있습니다.
마지막 경기부터 거꾸로 계산됩니다. 예: `*(-OL[1,3])' 목록을 제공합니다.
세 개의 가장 큰 파일의 이름입니다.
P현
The 현 각 glob 일치 항목 앞에 별도의 단어로 추가됩니다. 현 is
인수와 같은 방식으로 구분됩니다. e 위에서 설명한 glob 한정자입니다.
한정자는 반복될 수 있습니다. 단어가 별도로 앞에 추가되므로
결과 명령줄에는 주어진 순서와 동일한 단어가 포함됩니다.
glob 한정자 목록입니다.
이에 대한 일반적인 용도는 모든 파일 발생 앞에 옵션을 추가하는 것입니다.
이름; 예를 들어 `*(피:-에프:)'는 명령줄 인수를 생성합니다.-f
file1 -f file2 ... '
수정자의 경우 ^ 활성 상태라면 현 앞에 추가되는 대신 추가됩니다.
앞에 추가 및 추가는 독립적으로 수행되므로 둘 다 동일한 glob에서 사용할 수 있습니다.
표현; 예를 들어 `*(P:foo:^P:bar:^P:baz:)'를 생산하는
명령줄 인수 `푸 바즈 file1 바 ... '
이러한 목록 중 하나 이상을 쉼표로 구분하여 결합할 수 있습니다. 전체 목록이 일치합니다.
하위 목록 중 적어도 하나가 일치하는 경우('or'로 지정됨) 하위 목록의 한정자는
'and'입니다). 그러나 일부 예선은 생성된 모든 경기에 영향을 미칩니다.
해당 항목이 제공되는 하위 목록입니다. 이것이 예선입니다`M', `T', `N', `D', `n', `o',
`O' 및 괄호 안에 주어진 아래 첨자(`[...]').
만약 `:'가 한정자 목록에 나타나면 괄호 안의 나머지 표현식은 다음과 같습니다.
수정자로 해석됩니다(`역사 섹션의 `수정자' 섹션 참조).
확장'). 각 수정자는 별도의 `:'. 또한
수정 후 결과는 기존 파일일 필요는 없습니다. 기존의 이름
file 뒤에는 ` 형식의 수정자가 올 수 있습니다.(:...)' 실제 파일 이름이 없더라도
생성이 수행되지만 괄호가 있으면
전체 표현식에는 다음과 같은 전역 패턴 일치 옵션이 적용됩니다.
NULL_GLOB. 따라서:
ls *(-/)
모든 디렉토리와 디렉토리를 가리키는 심볼릭 링크를 나열합니다.
ls *(-@)
끊어진 심볼릭 링크를 모두 나열하고
ls *(%W)
현재 디렉토리에 있는 모든 쓰기 가능 장치 파일을 나열합니다.
ls *(승,엑스)
현재 디렉터리에서 누구나 쓰기 가능하거나 누구나 실행할 수 있는 모든 파일을 나열합니다.
에코 /tmp/foo*(u0^@:t)
` 문자열로 시작하는 모든 루트 소유 파일의 기본 이름을 출력합니다.푸' 에 / TMP,
심볼릭 링크를 무시하고
ls *.*~(lex|구문 분석).[ch](^D^l1)
이름에 점이 포함된 링크 개수가 하나인 모든 파일을 나열합니다.
점으로 시작하기 때문에 GLOB_DOTS 명시적으로 꺼짐) 제외 lex.c, lex.h,
파싱.c 그리고 파싱.h.
인쇄 b*.pro(#q:s/pro/shmo/)(#q.:s/builtin/shmiltin/)
콜론 수식어와 기타 한정자를 어떻게 함께 연결할 수 있는지 보여줍니다. 그만큼
일반 한정자`.'가 먼저 적용된 다음 콜론 수식자가 왼쪽부터 순서대로 적용됩니다.
오른쪽. 그래서 만약 EXTENDED_GLOB 설정되었으며 기본 패턴이 일반 파일과 일치합니다.
내장.프로, 쉘은 `를 인쇄할 것입니다shmiltin.shmo'.
onworks.net 서비스를 사용하여 온라인으로 zshexpn을 사용하십시오.