Umask'ı yalnızca bir komut için nasıl değiştirebilirim?


15

Linux'ta bir komutu (eğer önemliyse zsh) varsayılandan farklı bir umask ile etkileşimli olarak nasıl çalıştırabilirim? Belki de komutların tek bir satırda birleşimi? Yeni umask yalnızca bu komuta uygulanmalı ve girilen bir sonraki komut için varsayılan değerine dönmelidir.

İdeal olarak komut, girilmeden önce yürürlükteki varsayılan umask'a agnostik olacaktır (başka bir deyişle, varsayılan umask'ın belirtilmesi gerekmez).

Yanıtlar:


19

Bir alt kabuk başlatın :

(umask 22 && cmd)

Sonra yeni umasksadece bu alt kabuğu değiştirir.

Not zsho komutu harici ise, hatta bir süreç harcıyorsun değil başka birini vasıta çatallama ait altkabuk sürecinde alt dış kabuğunun son komutu yerine çalıştırır, o kadar çatal (daha önce yapılır sadece müzik umaskyapılır daha sonra komutunuzu yürütecek olan alt süreçte).


2

Bir kabuk betiğine sarabilirsiniz. umask tüm alt süreçleri devralır.

cmd.sh:

umask 0022
cmd

Veya tek bir komut satırında yapmak isterseniz, "$ (umask 0022; cmd)" gibi bir kabuk çağırabilirsiniz
Rob Bos

1
Ben karıştı $ (ile $(şimdi anladım, yorumunuzda: ( umask 0022; cmd ).
donothingsuccessfully

whoops, şey, en azından birisi açıkladı ^^
Rob Bos
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.