Korn Shell에서 "set -f"는 무엇을 합니까?

Korn Shell에서 "set -f"는 무엇을 합니까?

"aix 3.2 Guide" 책에서는 Korn Shell 명령을 사용하여 set -f"파일 이름 생성을 비활성화"할 수 있다고 나와 있는데, 그게 무슨 뜻입니까?

무슨 일이야 set -f?

답변1

set -f파일 이름 확장을 비활성화하는 이식 가능한(예: POSIX) 방법입니다.

활성화되면(기본적으로 또는 를 사용하여 set +f) 파일 이름 확장은 가능한 경우 다음을 포함하는 명령줄 인수를 대체하는 셸에서 수행되는 작업입니다.

  • 와일드카드 문자 발생( ?= 임의의 단일 문자 및 *= 임의 개수의 문자)
  • 대괄호로 묶인 범위(예: [a-z12]=에서 또는 까지의 모든 문자)az12
  • 일치하지 않는 목록(예: [^a-z]범위에 없는 문자)az
  • 및 문자 클래스(예 [[: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.

관련 정보