আমি কেবল একটি আদেশের জন্য উমাস্ককে কীভাবে পরিবর্তন করতে পারি?


15

ডিফল্ট থেকে ভিন্ন উমাস্কের সাথে লিনাক্সে (zsh, যদি এটি গুরুত্বপূর্ণ হয়) কেবলমাত্র একটি আদেশের জন্য কীভাবে একটি ইন্টারেক্টিভভাবে একটি কমান্ড কার্যকর করতে পারি? সম্ভবত একক লাইনে কম্যান্ডের সংমিশ্রণ? নতুন উমাস্কটি কেবলমাত্র সেই আদেশে প্রয়োগ করা উচিত এবং পরবর্তী কমান্ড প্রবেশের জন্য এটির ডিফল্ট মানটিতে ফিরে আসতে হবে return

আদর্শভাবে কমান্ডটি প্রবেশের পূর্বে ডিফল্ট উমাস্কের অজন্যস্টিক হবে (অন্য কথায়, ডিফল্ট উমাস্ক নির্দিষ্ট করতে হবে না)।

উত্তর:


19

একটি সাব শীল শুরু করুন :

(umask 22 && cmd)

তারপরে নতুন umaskকেবল সেই সাবস্কেলটি পরিবর্তন করবে।

নোট zshকরুন সাবসেল প্রসেসের সাবসেলের শেষ কমান্ডটি অন্য একটি কাঁটাচামচ করার পরিবর্তে কার্যকর করে, যার অর্থ হ'ল যদি সেই আদেশটি বাহ্যিক হয় তবে আপনি কোনও প্রক্রিয়াও নষ্ট করেন না, এটি ঠিক আছে যে কাঁটাচামুনটি আগে করা হয়েছিল (সুতরাং এটি umaskসম্পন্ন হয়েছে শিশু প্রক্রিয়াতে যা পরে আপনার আদেশটি কার্যকর করবে)।


2

আপনি এটি শেল স্ক্রিপ্টে মোড়ানো করতে পারেন। উমাস্ক সমস্ত শিশু প্রক্রিয়াতে উত্তরাধিকার সূত্রে প্রাপ্ত।

cmd.sh:

umask 0022
cmd

অথবা, যদি আপনি এটি একটি কমান্ড লাইনে করতে চান তবে আপনি এই জাতীয় শেলটি চালিয়ে যেতে পারেন, "$ (umask 0022; cmd)"
রব বোস

1
আমি বিভ্রান্ত $ (সঙ্গে $(আপনার মন্তব্যে, এখন আমি বুঝতে পারছি: ( umask 0022; cmd )
donothingsuccessfully

উফফফফ, ভাল, কমপক্ষে কেউ এটিকে স্পষ্ট করেছিলেন
রব বোস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.