আমি ফাইল পরীক্ষা করে দেখতে চাই কিনা
[ -f /path/to/file/ ]
তবে আমি এই কমান্ডটি নিয়মিত ব্যবহারকারী হিসাবে চালাচ্ছি এবং ফাইলটি রুটের মালিকানাধীন। এটি সফল করতে আমি কীভাবে সুডো ব্যবহার করতে পারি।
sudo [ -f /path/to/file/ ]
কাজ করে না.
আমি ফাইল পরীক্ষা করে দেখতে চাই কিনা
[ -f /path/to/file/ ]
তবে আমি এই কমান্ডটি নিয়মিত ব্যবহারকারী হিসাবে চালাচ্ছি এবং ফাইলটি রুটের মালিকানাধীন। এটি সফল করতে আমি কীভাবে সুডো ব্যবহার করতে পারি।
sudo [ -f /path/to/file/ ]
কাজ করে না.
উত্তর:
আপনি যা বর্ণনা করছেন তা ঠিকঠাক কাজ করা উচিত - যতক্ষণ আপনি নিখুঁত পাথ ব্যবহার করছেন এবং -f
("ফাইলটি বিদ্যমান এবং এটি একটি নিয়মিত ফাইল") সত্যই আপনি পরীক্ষা করতে চান।
/
আপনি আপনার প্রশ্নে যা পোস্ট করেছেন আমি তার পিছনে দেখছি - আপনি কি কোনও ডিরেক্টরি পরীক্ষা করছেন? এটি হওয়া উচিত -d
বা সহজভাবে -e
("নামের সাথে কিছু উপস্থিত রয়েছে - প্রকার নির্বিশেষে")
এছাড়াও মনে রাখবেন যদি না পথ ধরে কিছু পাঠযোগ্য নয় test
( [
) আপনাকে বলতে যদি রুটের মালিকানাধীন একটি ফাইল থাকবেই বা না (যেমন সক্ষম হওয়া উচিত [ -f /root/.ssh/known_hosts ]
, সম্ভবত ব্যর্থ হবে কারণ /root/.ssh ডিরেক্টরির নয় (বা অন্তত shouldn 'টি হতে ) একজন সাধারণ ব্যবহারকারী দ্বারা পাঠযোগ্য। [ -f /etc/crontab ]
সফল উচিত)।
sudo
কমান্ডটি ব্যর্থ হয় (খারাপ পাসওয়ার্ড, / etc / sudoers এ অনুমোদিত নয়) তবে ফাইলটি উপস্থিত না থাকায় এটি একই ফলাফল দেবে।
sudo
কাজ করার অংশটিতে পূর্বাভাস দেওয়া হয়েছে :)
if sudo test -f "/path/to/file"; then
echo "FILE EXISTS"
else
echo "FILE DOESN'T EXIST"
fi
জিনিসগুলি সম্পূর্ণ করতে, বিপরীত দিকে, আপনি যদি কোনও ব্যবহারকারী বা ব্যবহারকারীর জন্য কোনও ফাইল বা ডিরেক্টরি পাঠযোগ্য কিনা তা রুট থেকে পরীক্ষা করতে চান
if sudo -u username test -f "/path/to/file"; then
echo "FILE EXISTS"
else
echo "FILE DOESN'T EXIST"
fi
অন্যান্য উত্তর যুক্ত করে, পরীক্ষা বা sudo প্রমাণীকরণ ব্যর্থ মধ্যে পার্থক্য প্রথম চালানো দ্বারা করা যেতে পারে sudo true
। আমি জানি বেশিরভাগ সুডো বাস্তবায়নের জন্য অল্প সময়ের মধ্যে পুনরায় প্রমাণীকরণের প্রয়োজন হবে না।
উদাহরণ স্বরূপ:
if sudo true; then
if sudo test -f "/path/to/file"; then
echo "FILE EXISTS"
else
echo "FILE DOESN'T EXIST"
fi
else
echo "SUDO AUTHENTICATION FAILED"
fi