Bagaimana saya bisa mengubah umask hanya untuk satu perintah?


15

Bagaimana saya bisa secara interaktif menjalankan perintah di Linux (zsh, jika itu penting) dengan umask berbeda dari default, hanya untuk satu perintah? Mungkin kombinasi perintah yang digabungkan dalam satu baris? Umask baru harus berlaku hanya untuk perintah itu dan kembali ke nilai default untuk perintah selanjutnya yang dimasukkan.

Idealnya perintah itu agnostik terhadap umask default yang berlaku sebelum dimasukkan (dengan kata lain, umask default tidak harus ditentukan).

Jawaban:


19

Mulai subkulit :

(umask 22 && cmd)

Maka yang baru umaskhanya akan mengubah subkulit itu.

Perhatikan bahwa zshmenjalankan perintah terakhir dari subkulit dalam proses subkulit alih-alih forking yang lain, yang berarti bahwa jika perintah itu eksternal, Anda bahkan tidak menyia-nyiakan proses, hanya saja garpu dilakukan lebih awal (jadi umaskselesai dilakukan dalam proses anak yang nantinya akan menjalankan perintah Anda).


2

Anda bisa membungkusnya dalam skrip shell. umask mewarisi semua proses anak.

cmd.sh:

umask 0022
cmd

Atau, jika Anda ingin melakukannya dalam satu baris perintah, Anda dapat memanggil shell seperti ini, "$ (umask 0022; cmd)"
Rob Bos

1
Saya bingung $ (dengan $(komentar Anda, sekarang saya mengerti: ( umask 0022; cmd ).
donasi berhasil

ups, well, setidaknya seseorang mengklarifikasi itu ^^
Rob Bos
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.