"aix 3.2 Guide" 책에서는 Korn Shell 명령을 사용하여 set -f
"파일 이름 생성을 비활성화"할 수 있다고 나와 있는데, 그게 무슨 뜻입니까?
무슨 일이야 set -f
?
답변1
set -f
파일 이름 확장을 비활성화하는 이식 가능한(예: POSIX) 방법입니다.
활성화되면(기본적으로 또는 를 사용하여 set +f
) 파일 이름 확장은 가능한 경우 다음을 포함하는 명령줄 인수를 대체하는 셸에서 수행되는 작업입니다.
- 와일드카드 문자 발생(
?
= 임의의 단일 문자 및*
= 임의 개수의 문자) - 대괄호로 묶인 범위(예:
[a-z12]
=에서 또는 까지의 모든 문자)a
z
1
2
- 일치하지 않는 목록(예:
[^a-z]
범위에 없는 문자)a
z
- 및 문자 클래스(예
[[:xdigit:]]
: 16진수를 나타내는 데 사용할 수 있는 모든 문자)
일치하는 파일 이름으로.
비활성화되면 이러한 매개변수는 변경되지 않습니다.
$ pwd
/etc/samba
$ echo *
lmhosts smb.conf
$ echo *o??
smb.conf
$ set -f
$ echo *
*
$ echo *o??
*o??
답변2
ksh 및 bash에서 이 set -f
명령은 파일 이름 생성("경로 이름 확장")을 비활성화합니다. 이는 noglob
두 쉘 모두에서 쉘 옵션을 설정하는 것과 동일합니다 .
이는 쉘이 파일 글로빙 패턴을 확장하는 것을 방지합니다.
$ ls -l
total 0
-rw-r--r-- 1 kk kk 0 Dec 30 21:39 hello
-rw-r--r-- 1 kk kk 0 Dec 30 21:39 world
$ echo *l[a-k]
world
$ echo *
hello world
$ set -o noglob
$ echo *
*
$ echo *l[a-k]
*l[a-k]
설정을 복원(삭제)하려면 set +f
또는 를 사용하십시오 set +o noglob
.