하나의 명령에 대해서만 umask를 어떻게 변경할 수 있습니까?


15

하나의 명령에 대해서만 Linux와 다른 umask를 사용하여 Linux에서 명령을 대화식으로 실행할 수있는 방법은 무엇입니까? 아마도 한 줄로 결합 된 명령 조합입니까? 새 umask는 해당 명령에만 적용되고 입력 된 다음 명령의 기본값으로 돌아갑니다.

이상적으로이 명령은 입력하기 전에 기본 umask에 영향을주지 않는 것이 이상적입니다 (즉, 기본 umask를 지정할 필요가 없습니다).

답변:


19

서브 쉘을 시작하십시오 .

(umask 22 && cmd)

그러면 새로운 umask것은 해당 서브 쉘 만 변경합니다.

zsh서브 쉘 프로세스에서 서브 쉘 프로세스에서 서브 쉘의 마지막 명령 을 실행하는 대신 다른 명령 을 실행하는 것입니다. 즉, 해당 명령이 외부 명령 인 경우 프로세스를 낭비하지 않아도 umask됩니다. 하위 프로세스에서 나중에 명령을 실행합니다).


2

쉘 스크립트로 감쌀 수 있습니다. umask는 모든 자식 프로세스를 상속합니다.

cmd.sh :

umask 0022
cmd

또는 하나의 명령 줄에서 수행하려면 "$ (umask 0022; cmd)"와 같은 쉘을 호출 할 수 있습니다.
Rob Bos

1
나는 당신의 의견 $ (과 혼동 되어 $(이제 이해합니다 : ( umask 0022; cmd ).
donothingsuccessfully

흠, 적어도 누군가가 그것을 명확히했습니다 ^^
Rob Bos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.